Easy Understanding

토스 개발자 컨퍼런스 Slash 23, 주니어 백엔드 개발자의 후기 본문

Dev

토스 개발자 컨퍼런스 Slash 23, 주니어 백엔드 개발자의 후기

appleg1226 2023. 6. 18. 23:15

보통 개발자 컨퍼런스들이 연말에 많이들 하는데,

이번 토스의 개발자 컨퍼런스 SLASH23은 한 여름인 6/8~9 양일간 진행되었다.

 

 

토스 개발자 컨퍼런스 SLASH23

6.8-6.9 이틀 동안 진행되는 온라인 세션을 통해 토스 서비스, 그 이면의 이야기를 소개합니다.

toss.im

 

다양한 세션이 있었고 전부 들어 보았는데 대체로 유익한 내용들이 많았다.

그래서 어떤 세션이 괜찮았는지, 그리고 세션을 통해서 어떤 점들을 배울 수 있었는지 간단하게 정리해보고자 한다.

(정리하지 않은 파트는 내가 잘 모르는 분야이거나 직무와 많은 관련이 없는 것들이다)

 

(FE) 퍼널: 쏟아지는 페이지 한 방에 관리하기

리액트를 이용해서 FE 개발을 할 일이 아예 없지는 않아서 관심있는 주제였다.

앱에서 form 입력을 한 장에서 모두 하는 것이 아니라, 순차적으로 입력하는 ux가 있는데,

이런 걸 어떻게 관리하느냐에 대한 내용이었다.

 

순서대로 input을 입력하도록 코드 구조를 설계했고, 토스 내부에서는 그것을 funnel 이라고 부른다고 한다.

자체 컴포넌트 및 hooks를 만들어서 사용하고 있고, 디버깅도 되게 잘 되도록 만들었다. 

 

오픈 소스로 관리하고 있다니 필요한 사람은 참고해보는 것도 괜찮을 듯 하다.

https://slash.page/libraries/react/use-funnel/readme.i18n/

아마도 나는 admin 개발 이상은 할 일이 없어서 쓸 가능성이 적을 것 같다.

 

(Client) 달리는 토스 앱에 React Native 엔진 더하기

토스는 웹앱이라는 소문을 정말 많이 들었었고 궁금했었지만, 찾아보지는 않고 그냥 그런가보다 했었다.

그런데 이번 세션에서 어떻게 넘어왔는지, 

어떻게 변화되고 있는지 등을 알려주어서 전반적인 구조 이해에 도움이 되었다.

 

(devops) 유연하고 안전하게 배포 Pipeline 운영하기

토스에서는 배포를 devops에서 일괄 관리해준다고 한다.(좋겠다)

젠킨스와 비슷한 gocd 라는 툴을 사용하고 있다고 한다(헷갈려서 찾아보니 golang 하고 상관이 없었다.)

https://www.gocd.org/

 

전사의 ci/cd를 일괄적으로 관리하기 위해서는 아무래도 표준화가 되어야 하기 때문에 어려운 것이 많을텐데,

그런 것들을 정리하고 프로세스를 잘 갖춰둔 것 같다.

이후에 관련해서 리서치할 때 더 참고해볼만 하겠다.

 

(BE) 은행 최초 코어뱅킹 MSA 전환기(feat. 지금 이자 받기)

토스뱅크가 MSA로 분리되는 과정을 상세하게 설명해주는 세션이다.

지금이자받기라는 서비스를 예시로 어떻게 분리했는지를 설명하고 있다.

 

MSA로 분리한다는 것은 DB를 분리한다는 것을 의미하는데 이 과정에서 

한 트랜잭션으로 묶여있던 것을 어떻게 풀 것인지가 일이다.

기존 로직은 20개의 테이블에 80번의 update, insert 가 일어나서 약 300ms 의 시간이 걸렸다는데,

(이렇게 큰 트랜잭션을 다뤄볼 일이 보통은 없다) 

분리 가능한 DB만 비동기로 태워서 해결했다고 한다.

 

특정 유저의 거래 상세를 보여주기 위해서 데이터를 레디스에 저장한다든지,

MSA 분리에 대한 검증을 어떻게 했는지 등 재미있는 내용이 많은 세션이었다.

 

(devops, k8s) 고객 불안을 0으로 만드는 토스의 Istio Zero Trust

istio를 우리도 도입하고 있지만 실제로 어떻게 적극적으로 사용하는지에 대해서 사용 예시는 항상 궁금했었다.

솔직히 말해서 k8s 내부의 보안에 대해서는 잘 모르고 신경도 덜 쓰는 감이 있지만,

이 세션을 보니 istio를 사용하면 적극적으로 트래픽들의 제어가 가능해 보인다.

istio를 직접 이렇게까지 셋팅할 일은 없겠지만, 이해도는 확실히 좀 올라온 느낌이다. 

 

(BE? AI?) AI와 함께 가짜 신분증 찾아내기

세션 제목처럼 머신러닝 이야기였다.

예전 공부하면서 자주 본 ResNet 같은 단어가 있어서 반가워서 한 번 들어보았지만, 

실제로 서버 개발을 하면서 접하기는 쉽지 않은 기술이다.

반전은 발표자가 서버 개발자임.. 존경...

 

(Server-Client) Server-driven UI로 다이나믹한 서비스 효율화하기

이 세션에서는 홈화면에서 쓰는 homeDST 라는 스펙을 설명해준다.

앱 특성상 스토어 업데이트가 이루어지지 않으면 클라이언트 반영이 어렵기 때문에 이를 해결하고자,

서버에서 모든 데이터와 메타데이터를 전달해주는 방법을 사용한다.

어떤 아이콘을 쓸건지, 어떤 모양을 가질건지,

심지어 handler 즉 어떤 스킴으로 옮겨갈지도 정의하도록 한다.

심지어 클라이언트 로그도 어떻게 남겨야 하는지까지 다 보내버린다.

앱 업데이트를 자주하지 않도록 하기 위해서 나쁘지는 않은 듯 보이지만,

범용적으로 쓰기에는 별로 좋은 기능은 아니라서 여기도 홈팀만 제한적으로 사용한다고 한다.

 

되게 신기한 건 확실하다.

다만 이걸 하게되면 서버팀의 엄청난 공수가 예상이 된다.

 

(BE) 토스는 Gateway 이렇게 씁니다

토스는 종류별로 다양한 게이트웨이를 관리하는데,

웹용, 앱용, 보안용, 외부용 등 다양한 게이트웨이를 한 곳에서 관리한다.

게이트웨이의 기능이 다 비슷비슷하기에 코어 기능은 모여있어 따로 관리하는 것보다는 확실히 편해보인다.

나는 게이트웨이 개발을 해본 적이 없어서 어떠해야 하는지 모양을 이해하는 데에 도움이 되었다.

 

(BE) 연결되면 비로소 보이는 것들

이 세션도 게이트웨이 개발하는 팀의 세션이고 개인적으로 한 번 더 봐야 이해가 될 것 같은 어려운 세션이었다.

보통 게이트웨이는 다들 webflux 를 사용해서 개발한다고 하는데, 

코틀린을 사용할 경우에는 보통 코루틴을 사용하게 된다. 

그러나 핀포인트에서 kotlin coroutine를 지원하지 않아서 그 플러그인을 직접 개발했다고 한다.

이를 위해서 어떤 리서치와 코드 분석 과정을 거쳤는지 굉장히 자세하게 설명해주고 있다.

 

한번 듣고 이해되지 않아서 조만간 다시 들어보려고 한다.

 

(BE) 실시간 시세 데이터 안전하고 빠르게 처리하기

토스증권의 실시간 데이터를 어떻게 처리하고 있는지를 설명해준다. 

이 팀에서는 카프카 대신 redis를 사용하여 메시지를 전달하고 있다. 이게 가장 빠르다고 한다.

이 때문에 reactiveRedisClient 를 사용하며 여기에서 쓰는 netty 등에 대해서도 설명을 한다.

솔직히 이것도 한 번에 들어선 잘 모르겠어서... 좀 더 집중해서 한번 더 들어보려고 한다.

 

(BE) 프로파일러로 시스템 성능 향상시키기

전반적인 지표 모니터링을 어떻게 하는지 보면서 도움이 된 세션이다.

이 세션처럼 제대로 모니터링 해본 적도 없을 뿐더러, 그 정도의 문제가 발생한 적도 없어서 솔직히 좀 생소했다.

다음의 이용 사례들을 설명해주고 있다.

- Pinpoint
- Heapdump
- Jemalloc

- Aync-Profiler
- Strace, Perf Trace
- Unix Domain Socket
- Binary Ninja

 

(Data) 대규모 로그 처리도 OK! Elasticsearch 클러스터 개선기

이건 ES 쪽 운영과 관련된 세션이어서 가볍게 들었고,

한 가지 신기했던건 fluentd 대신 데이터독의 vector라는 걸 사용한다고 한다.

 

(Data) Kafka 이중화로 다양한 장애 상황 완벽 대처하기

Kafka 이중화 멋잇다.

 

(BE) 분산 추적 체계 & 로그 중심으로 Observability 확보하기

분산 로깅을 기초부터 차근차근 확장시켜가며 설명해주는 강의같은 세션이다.

로깅을 어떻게 남기면 좋을지, 어디에서 남기면 좋을지 등에 대해서

핵심적인 걸 잘 알려주셔서 정리하는데 도움이 되었다.

 


오랜만에 개발 관련된 자극을 받을 수 있어서 재밌었다.

아직 이해가 되지 않는 세션이 몇 가지 있는데 그건 다시 천천히 보면서 이해해 봐야겠다.