< 토스가 안정적으로 서버를 운영하는 방법 >
토스는 50여개 서비스를 제공하는 모바일 금융 플랫폼이다. 누적 사용자는 1900만명으로, 매월 1000만명 이상이 사용하고 있다. 사용자도, 서비스 수도 많은 토스는 서버를 어떻게 운영하고 있을까.
결론부터 말하면, 토스는 전통적인 금융기업보다 인터넷기업과 비슷한 인프라 구조를 채택했다. 또 데이터센터 이중화로, 두 개의 데이터센터에서 서비스를 운영하고 있다. 일부 서비스는 아마존웹서비스(AWS)를 활용하고 있다. 일반적으로 두 개의 데이터센터를 운영할 경우 여러 컴포넌트에서 운영이슈가 발생하곤 한다. 토스는 지금까지 쌓아온 노하우를 바탕으로 안정적으로 서버를 운영하는 방법을 자체 개발자 컨퍼런스 ‘슬래시21’에서 공유했다.
토스의 서비스는 마이크로소프트아키텍처(MSA)로 구성되어 있어 서버가 많다. 많은 양의 서버를 관리하고, 효율적으로 인프라를 활용하기 위해 쿠버네티스를 컨테이터 오케스트레이션으로 도입했다.
또 캘리코(calico) cni, 서비스 매시, 이스티오(Istio)를 채택했다. 민감한 자료는 오픈소스 소프트웨어 스토리지 플랫폼인 Ceph에 저장하고 있다.
토스에는 송금 외에도 은행과 연동되는 서비스가 많다. 송금 이후 채팅할 수 있는 서비스, 카드사 알림, 은행 대출 추천 등 외부 연동 서비스가 많다. 홈탭이나 내소비 등 여러 서비스의 데이터를 모아 보여주기도 한다.
토스는 여러 서비스 특성에 맞춰 스프링(Spring) 계열의 프로젝트를 선택해 개발하고 있다. 개발언어는 과거 자바를 많이 사용했다면, 최근에는 코틀린을 주로 사용하고 있다. 클라우드 서비스인 AWS는 도메인네임시스템(DNS)를 설정하거나 이미지 검수, 스태틱파일을 서빙하는 기능으로 활용하고 있다.
> 로그를 활용한 모니터링
MSA 구조로 인해 서버들이 여러 곳에서 뜨는 만큼, 토스는 로그의 중앙집중화가 필요하다고 판단했다. 로그백, 파일비트를 통해 애플리케이션 로그를 아파치 카프카(Kafka)로 보내고, 데이터시각화 대시보드에서 검색해 볼 수 있도록 했다.
배포ID는 어느 배포 버전에서 발생하는 로그인이 알려주며, 신규 혹은 이전 배포에서 발생하는지 확인할 수 있다. 만약 에러로그가 신규 배포에서만 발생할 경우 바로 롤백한다.
또 금융회사로 5년간 장기 보관해야 하는 데이터는 카프카에서 하둡으로 데이터를 쌓아 장기보관하고 있다.
> 토스가 서버 인프라를 모니터링하는 방법
토스의 서버 인프라는 서비스가 늘면서 더욱 복잡해졌다. 지난 2019년 토스의 서버 인프라에 올라간 마이크로서비스 종류는 130개에서, 현재 236개로 늘어났다. 현재 토스는 컨테이너 기반의 오케스트레이션 시스템을 서버 인프라로 사용하고 있다. 지난 2019년 VAMP, DC/OS 기반의 인프라에서 이스티오와 쿠버네티스 환경으로 마이그레이션을 진행했다.
마이그레이션 이후 메인 모니터링 시스템은 프로메테우스로 바뀌었다. 운영의 편리성을 돕는 타노스도 메인 모니터링으로 자리 잡았다.
토스의 서버 인프라 모니터링 발표를 맡은 이재성 토스코어 데브옵스 엔지니어는 “종합하면 네트워크 제어권을 강화해 네트워크 문제를 진단할 수 있는 메트릭을 강화했다”며 “발생이슈와 메트릭 사이의 상관관계를 높이고 모니터링 인프라도 스케일 아웃이 가능하도록 구성을 발전시키는데 노력했다”고 전했다.