본문 바로가기

컨퍼런스

토스 SLASH24 후기

지난 2024년 9월 12일 목요일에 코엑스에서 열린 토스 SLASH24 개발자 컨퍼런스에 대해서 요약과 후기를 적어본다.

 

토스 개발자 컨퍼런스 SLASH24

참가 신청 8.23-9.2 / 본 행사 9.12 COEX

toss.im

빠르게 성장하고 싶은 주니어 개발자를 위한 소프트 스킬 5가지 (스페셜 세션)

하드 스킬이 프로그래밍, 아키텍처 설계, 트러블 슈팅이라면 소프트 스킬은 커뮤니케이션, 시간 관리, 문제 해결 능력, 메타인지 능력이다.

소프트 스킬 5가지는 다음과 같다.

  1. 그림으로 소통하기
  2. 나만의 TODO List 만들기
  3. 코드를 보는 안목 기르기
  4. 왜? 라고 묻기
  5. 나만의 개발 공부법 찾기

개발과 직접적인 내용은 아니지만, 주니어 개발자로서 앞으로 성장하려면 어떻게 해야할지에 대해서 조언을 받았다는 느낌이 들었다.

  1. 말로 표현하기 어려운 건 지금도 그림으로 표현하고 있긴 한데, 대부분 말로 소통을 하고 있다. 좀 더 적극적으로 그림을 활용해야지.
  2. 귀찮아서 안 하는 건데, "내 뇌의 백업"처럼 동작할 수 있도록 노력해봐야겠다.
  3. 이것도 귀찮아서 안 하게 되는 건데, 앞으로의 성장을 위해선 여기에도 시간을 써야겠다.
  4. 이게 진짜 중요한 거 같다. 개발자는 결국 문제를 해결하는 사람인데, 개발을 하지 않고도 문제를 해결할 수 있다면 그게 더 좋은 방법이다.
  5. 이론 vs 경험에서 나는 경험파인 거 같은데, 이론도 편식하지 말아야겠다.

Next 코어뱅킹, MSA와 MySQL로 여는 평생 무료 환전

토스뱅크의 기존 원화예금 코어뱅킹은 모놀리식 및 Oracle DB로 되어 있었지만, 외화 서비스를 시작하게 되면서 외화는 MSA 및 MySQL로 구축하게 되었다는 이야기다.

현재 회사에서 결제 MSA 개발을 담당하고 있어 이번 컨퍼런스에서 가장 관심 있게 본 세션이다. 최근에 서비스와 PG가 직접 연동되어 있던 구조를 서비스 - 결제 MSA - PG 구조로 변경하기도 했고.

  • 동시성 제어
    • 토스뱅크에서는 환전, 자동 모으기, 카드 결제가 일어날 때 계좌의 잔액이 변동되기 때문에 동시성 제어를 해야 하는데, Redis를 이용해 API에 Lock을 걸고, DB에도 Lock을 걸었다.
    • 또한, 거래 가능 검증 시 계좌 상태, 계좌 거래제한, 고객 거래제한, 입금 가능 금액, 중복 거래 등을 체크하는데 동기적으로 처리하게 되면 오래 걸려서 Latency 단축을 위해 Coroutine을 사용했다. (토스뱅크는 Kotlin을 사용한다.)
  • 무중단
    • 일반적인 은행은 00시 근방에 거래가 안 되는데, 이는 잔액대사가 이루어지기 때문이다. 00시 00분 근방에 거래를 막고, 00분에 전일자 스냅샷 테이블을 만든다.
    • 토스뱅크에서는 00분에 전일자 스냅샷을 만들고 00분 이후에 거래내역을 확인하고, 거래내역을 바탕으로 잔액을 역산하여 전일자 스냅샷 테이블을 보전한다.
  • 테스트 자동화
    • Local: 단위 테스트 → 프로그램 정합성 검증
    • Dev: E2E 테스트 → 업무 정합성
    • Live: 이상거래탐지 → 데이터 완결성 검증

SSE 이벤트 푸쉬로 불필요한 Polling 제거하기

토스증권에서 실시간 시세, 주문 정보 등을 매번 Polling으로 조회하고 있었는데, SSE 이벤트 푸쉬로 전환하는 과정에 대한 이야기.

클릭 한 번으로 테스트 45만 개 완료! 테스트 자동화 플랫폼 구축기

테스트 자동화와 관련된 내용이라 유익하긴 했지만, Node.js의 Playwright에 관한 내용이 대부분인 건 아쉬웠다. (내가 Node.js 개발자가 아니라서)

대외계 구조 개선과 모니터링 강화로 시스템 연속성 확보하기

토스에서 인프라 모니터링 하는 방법과 인프라 장애 발생 시 서비스 장애로 이어지지 않도록 우회하는 방법에 관한 이야기이다.

DevChat (네트워킹 세션)

사전 예약제로 연사님들과 직접 대화를 나눠볼 수 있는 시간이다.

내가 주도적으로 질문하기보다는 주로 다른 분들의 질문/답변을 듣고 거기서 추가 질문 정도만 했던 거 같다.

(이제 와서 생각해보면 좀 더 적극적으로 질문해볼 걸 하는 아쉬움이 있긴 하다.)

나는 Server 관련 내용 연사분들을 찾아갔다.

#MSA #모놀리식 코어뱅킹 시스템

= Next 코어뱅킹, MSA와 MySQL로 여는 평생 무료 환전

#실시간 이벤트

= SSE 이벤트 푸쉬로 불필요한 Polling 제거하기

토스뱅크가 차세대를 하지 않는 이유: 지속 가능한 마이그레이션 전략

금융권에서는 차세대 프로젝트라고 해서 대규모 시스템 개편을 하는데, 토스뱅크에서는 Strangler Fig Pattern 전략으로 기존 시스템을 점진적으로 새로운 시스템으로 대체한다.

대규모 사용자 기반의 마이데이터 서비스

마이데이터: 토스 홈 화면에 있는 그거

다양한 기관과 통신하다보니 장애 발생 가능성이 높다.

기관으로 향하는 트래픽을 모니터링 하고 장애 발생 시 트래픽을 차단하여 복구할 수 있도록 돕는다.

다른 기관과 통신 시 API가 오래 걸려도 결국엔 성공하는데, 고객이 화면을 이탈해도 정상적으로 처리되어야 한다. (나중에 다시 토스에 돌아왔을 때 정상적으로 처리된 화면을 보게 해야 한다.)

느낀 점

회사에서 결제 MSA 개발을 담당하는 입장에서 수많은 기관과 통신하고 은행과 증권 서비스를 직접 개발하는 토스를 완전히 동일 선상에 놓고 볼 수는 없지만, 금융과 관련된 개발에서 토스의 사례를 (직접 그대로 적용하지는 못하겠지만) 보고 배우고 참고하여 앞으로 어떻게 풀어가야할지 방향을 고민해 볼 수 있을 것 같다.