토스증권의 차세대, 어떤 그림일까?

1.
새로운 트레이딩시스템을 개발하고자 했지만, 토스 및 카카오에 이어지는 글입니다.

개인적으로 이용하는 주식앱은 딱 하나입니다. 토스입니다. 카카오를 사용할 수 있지만 어떻게 UI를 구성했는지 궁금해서 설치한 후 가끔 이용합니다. 처음 접했을 때의 당혹감을 지금도 기억합니다. 윈도우 기반이지만 모뎀을 이용하였던 코스콤 KOSTEL을 개발한 이후 제가 본 UI는 하나같이 같습니다. 현재가, 관심종목, 기타등등의 데이타를 정해진 표에 넣고 특정한 데이타를 실시간 처리합니다. 필요한 기능을 한 화면에 담는 경우도 많았습니다. 화면수가 늘어났지만 Grid를 이용하여 데이타를 보여주는 방식은 그대로입니다. 토스UI는 이런 관행을 깨버렸습니다. 무언가 쇼핑몰같다는 느낌을 받았습니다.

“쇼핑하듯이 엄지로 주식을 쇼핑하라!”

물론 이런 느낌이 기획자의 의도인지는 알 수 없고 알 필요도 없습니다. 확실히 차별화에 성공하였고 대상고객에 적합한 UI를 만들었다는 생각이었습니다. 기술적인 구조를 어떻게 그렸는지 궁금하였지만 묻어두었죠. 그리고 우연히 페북에서 토스증권이 차세대개발자를 모집한다는 글을 보았습니다.

좀 길죠.. 읽어보면서 급 관심이 가는 부분이 있었습니다. Java/Kotlin이야 금융권 차세대프레임워크의 경우 Java가 많으니까 이해가 갔지만 Spring Framework를 적어놓을 걸 보니까 맨땅에 헤딩한다는 느낌이 들더군요. 여기세 Kafka와 Redis를 사용한다는 말에 급 관심이 높아졌습니다. 그래서 토스 채용사이트에서 찾아보았습니다. Frontend Developer에게 요구되는 바입니다.

이런 분과 함께하고 싶어요

React, Vue, Angular 등 SPA 프레임워크 사용에 능숙하신 분이면 좋아요.
제품 또는 서비스를 주도적으로 개발하신 경험을 갖고 계신 분들과 함께하고 싶어요.
단순히 주어진 개발을 해내는 것보다, 주도적으로 문제를 발견하고 분석해 솔루션을 제안할 수 있는 분과 함께하고 싶어요.
증권서비스는 토스앱에서 주식탭 진입부터, 주식 정보를 탐색하고 주식을 사고 팔고 자산과 권리를 관리하는 일련의 과정이 하나로 이어져있기 때문에, 클린 아키텍처에 관심이 있거나, 더 나은 아키텍처를 구성하기 위해 노력하시는 분들 이면 더 좋아요.

이력서는 이렇게 작성하시는 걸 추천해요

그동안의 경험을 단순 나열하는 것이 아닌, 경험 속에서의 임팩트 및 러닝 포인트를 확인하고 싶어요.
고객의 보이스를 기반으로 빠르게 제품의 완성도를 높여가고, 주어진 문제를 스스로 해결해보려고 시도하신 경험이 있는지 궁금해요.
서버 사이드 렌더링(SSR) 및 모바일 앱 내 웹앱 개발 경험이 있다면 기술해주세요.
기존 소스 코드를 새로운 코드 베이스로 점진적으로 이관한 경험이 있으면 기술해주세요.

토스증권이 사용하는 기술

코어: React, TypeScript, Next.js
상태 관리: React-Query, Recoil, Jotai, Zustand
스타일링: Emotion
패키지 매니저: Yarn Berry, PNPM
빌드: Webpack, ESBuild, SWC, Babel
CI/CD: GitHub Actions, CircleCI

다음은 Core Developer (원장개발자_차세대)입니다.

합류하면 함께 할 업무에요

기존 원장 시스템을 분석하고 차세대 원장을 위한 설계를 도출하여 새로운 원장 시스템을 만드는 업무를 담당해요.
증권사 원장 시스템의 세부 영역(매매, 감사, 계좌, 공통, 수익, 시세, 출납 등)을 모듈화하여 변화에 유연한 시스템을 구축해요.
업무에 대한 책임과 권한은 담당자에게 있으며 주도적으로 업무를 진행해요.

이런 분과 함께하고 싶어요

3년 이상의 증권 서비스 관련 개발·운영 경험이 있거나 증권 차세대 원장 개발 프로젝트에 참여한 경험이 있는 분을 찾아요.
C, Oracle SQL 프로그램을 분석, 개발, 운영할 수 있는 분을 찾아요.
기존의 증권 업무를 처음부터 다시 고민하고 새롭게 만들어 나갈 분을 찾아요.
경험하지 못한 새로운 업무를 적극적으로 받아들일 수 있는 분을 찾아요.

그리고 Server Developer (차세대)입니다.

합류하면 함께 할 업무에요

토스증권 서비스의 근간이 되는 증권 원장시스템의 모든 부분을 새롭게 만들어가는 업무를 담당하고 있어요.
매매, 감사, 계좌, 공통, 수익, 시세, 출납, 회계 등 차세대 증권 시스템의 아키텍처 설계 및 개발 전역에 걸친 변화에 함께하실 수 있어요.
수익률을 포함한 고객의 계좌 정보, 주식의 구매와 판매/검색/가격 변동과 같은 실시간 데이터 처리 등, 모든 부분에서 안정적이고 빠른 처리를 위해 다양한 라이브러리와 솔루션을 이용해 합리적이고 효율적인 개발 방법을 찾으며 일합니다. 담당하고 있는 제품과 기술 영역에서는 Ownership 을 가지고 기술적인 최종 의사결정을 할 수 있어요.
언제든 클라우드에 올라탈 수 있는, 증권업계의 기술을 선도하는 증권시스템을 만들게 됩니다.
Java/Kotlin, Spring Framework를 기본으로 Redis, Kafka, Kubernetes, ELK를 적극적으로 사용하며, 대용량 트래픽이나 동시성 처리에 대한 고민을 많이 하시게 될 거예요.

토스증권이 사용하는 기술

Java, Kotlin, Spring Framework, JPA/Hibernate, Netty
MySQL, Oracle, Redis, MongoDB, Kafka, Elasticsearch, InfluxDB, Grafana

핀테크기업에서 출발해서 그런지 몰라서 오픈소스롤 접근가능하면서 검증된 기술을 다양하게 채택하고 있습니다. 일반 금융회사라고 하면 쉽지 않았을 결정을 쉽게 한 것을 보면 토스의 개발 및 운영경험이 밑바탕이 되었을 것이라고 생각합니다.

2.
전통적인 금융투자회사의 시스템 구성은 대략 다음과 같습니다.

– HTS/WTS를 위한 미들웨어 및 프레임워크(서버와 클라이언트 모두 몇 회사의 제품이 독점한 상태)
– 백오피스를 위한 프레임워크
– Tmax와 같은 TP-Monitor 및 Oracle
– KRX 연계를 위한 FEP

구성을 보면 아시겠지만 오프소스의 영역은 별로 없습니다. 최근 Linux가 영역을 넓히고 있지만 핵심 부분은 여전히 90년대 후반부터 이어져온 기술들이 약간 바뀌면서 오늘에 이르고 있습니다. 토스나 카카오가 차세대를 하면서 전통적인 회사들이 기술구조를 그대로 따라야 하는지는 선택입니다. 장점과 단점이 있을 수 있습니다. 다만 운영 및 비용면에서 보면 새로운 설계가 적합하리라 생각합니다. 토스뱅크·토스증권 시스템은 어떻게 이뤄졌을까?을 보면서 앞서 소개한 기술들이 어떻게 결합하여 서비스를 만들었는지 대략 나옵니다.

위 그림을 보시면 전통적인 회사들의 구조와 가장 큰 차이점은 Kafka입니다. Apache 재단이 제공하는 유명한 오픈소스이면서 메시징제품입니다. 보통 금융회사들은 Kafka 대신에 Tmax 혹은 Tuxedo와 같은 Transaction Middleware를 사용합니다. Transaction이 아닌 Event라는 개념이 Messaging Middleware에서 중요합니다. 물론 Kafka를 이용하여 Transaction을 처리하는 다양한 방법이 있는 것으로 압니다. Kafka를 이용하여 대용량 Transaction을 처리하는 것이 아마도 토스팀의 노하우가 아닐까 합니다. 개인적으로 이런 그림을 선호합니다.

또다른 그림을 보죠. 금융투자회사에서 가장 중요한 시세서비스입니다.

앞서와 같이 Kafka를 통합니다. 여기서도 전통적인 증권사와 다른 점이 보입니다. REST API와 Websocket을 표준적인 API로 제공합니다. 증권사들이 Open API라고 제공하는 대부분 API들은 앞서 언급한 HTS 미들웨어가 윈도우 단말과 통신하기 위한 만든 Prop API입니다. 반면 암호통화거래소들의 API를 보면 REST API와 Webscoket을 표준으로 채택합니다. 모바일앱(웹엡)과 최적의 조합을 이루기 때문입니다. 전통적인 증권사들이 REST API와 WEBSocket을 이용한 API를 제공하기 시작했던군요. 한국투자증권입니다.

한국투자증권 KIS

토스의 기술구조가 여의도에서 표준으로 발전할지 알 수 없습니다. 고객이나 운용 혹은 비용을 고려할 때 조금씩 변화하리라 생각합니다. 아마도 키움증권이 바뀌면 다른 곳들도 바뀌지 않을까요?

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.