토스뱅크가 차세대 대신 선택한 시스템 전환 방식
인터넷뱅킹이 생긴 이후로 은행들은 일정 주기마다 ‘차세대 프로젝트’를 진행했다. 차세대 프로젝트는 이름처럼 은행의 시스템을 ‘차세대’로 바꾸는 것을 말한다. 금융 환경과 기술은 빠르게 변하는데, 도메인이 복잡한 데다 유연성이 부족한 기존 금융 시스템은 이런 변화를 따라가기 어렵기 때문에 차세대 프로젝트가 필요해진다. 지금까지 많은 금융사들이 차세대 프로젝트를 통해 기존 시스템을 한 번에 갈아엎었다.
그런데 흥미롭게도 인터넷전문은행 토스뱅크는 전통 금융사의 차세대 프로젝트 도입 관행을 따르지 않는다고 한다. 토스뱅크는 자사만의 마이그레이션(다른 운영체제로 옮기는 것) 방식을 통해 은행 시스템을 전환하고 있다. 기존 시스템을 유지하면서 점진적으로 새로운 시스템으로 전환하는 방식을 택했다는 이야기다.
차영록, 김인회 토스뱅크 서버 엔지니어는 12일 삼성동 코엑스 그랜드볼룸에서 열린 토스의 개발자 컨퍼런스 ‘슬래시24’에서 토스뱅크의 차세대 방식에 대해 소개했다.
토스뱅크가 한 번에 모든 시스템을 바꾸는 차세대 프로젝트 대신, 마이그레이션 방법을 선택한 이유는 여러가지가 있다. 차세대 프로젝트를 실행할 경우 프로젝트 도중에 발생하는 추가 요구사항으로, 기존에 개발하고 테스트했던 기능이 무의미해질 수 있다는 단점이 있다. 또 정해진 기한 내 프로젝트를 끝내야 하는 만큼 시간 제약으로 새로운 개발에 대한 테스트가 어렵다.
그래서 토스뱅크는 자체 마이그레이션 전략과 ‘스트랭글러 피그 패턴(Strangler Fig Pattern)’ 방식으로 차세대 없이 은행 시스템을 점진적으로 전환하고 있다. 스트랭글러 피그 패턴은 기존 시스템을 유지하면서 점진적으로 새로운 시스템으로 안전하게 전환할 수 있는 방법이다. 리스크(위험도)를 최소화하고 점진적으로 시스템을 개선하는 만큼, 유지보수와 확장성을 확보할 수 있는 이점이 있다고 김인회 엔지니어는 설명했다.
차영록 엔지니어는 “현재 토스뱅크의 코어뱅킹 시스템은 모놀리식 구조(레거시 시스템)으로 설계됐다”며 “스트랭글러 피그 패턴 방식으로 모놀리식 코어뱅킹 시스템 기능을 하나씩 마이크로서비스로 전환하고 있다”고 말했다. 그는 이어 “궁극적으로는 모든 기능을 마이크로서비스로 전환해 토스뱅크의 아키텍처를 마이크로서비스아키텍처(MSA)로 바꾸는 것을 목표로 하고 있다”고 덧붙였다.
즉, 토스뱅크는 소규모의 독립적인(마이크로) 서비스를 별도 분할해 개발하고 배포할 수 있는 MSA를 코어뱅킹 시스템의 최종 목표로 삼고 있다. 김 엔지니어는 이를 위해 총 네 단계의 과정을 거쳐야 한다고 설명했다.
첫번째, 대상 선정
가장 먼저 어떤 기능을 마이크로서비스로 전환할지 결정해야 한다. 김 엔지니어는 실사례를 설명하기 위해 ‘대출 상환 도메인’ 서비스를 예로 들었다. 대출 상환 도메인은 은행에서 돈을 빌렸을 때 언제, 얼마나 갚아야 하는지 계산해주는 역할을 한다. 은행에서 가장 복잡한 도메인 중 하나다.
차 엔지니어는 “핵심 도메인일수록 부작용이 클 수 있어, 복잡도가 낮은 서비스부터 순차적으로 전환하기로 했다”며 “대출 상환 도메인에서 시스템 의존성이 가장 낮은 ‘납입일 변경’을 첫번째 전환 대상으로 선정했다”고 설명했다.
두번째, 분석
분석 단계에서 연역적 분석과 귀납적 분석 방식을 모두 활용해, 도메인과 기존 시스템을 깊이 이해해야 한다. 정확하고 효율적인 설계를 하기 위한 것이다.
연역적 분석은 일반적인 원칙이나 이론을 바탕으로 구체적인 사례나 결론을 도출하는 분석 방법이다. 귀납적 분석은 구체적 사례나 데이터를 통해 일반적인 원칙이나 이론을 도출하는 분석 방법이다. 또 귀납적 분석에는 함수 호출 그래프 등 시각화한 분석과 카프카(Kafka)를 통해 메소드별 입출력(I/O) 데이터를 수집해, 메소드의 기능과 서비스별 사용빈도를 분석하는 동적분석으로 나뉜다.
예를 들어, 토스뱅크는 연역적 분석을 통해 납입일 변경 도메인과 관련된 모든 정보를 분석했다. 이 과정에서 업무 매뉴얼을 통해 모든 대출 계좌가 납입일 변경이 가능하다는 것을 파악, 이를 대전제로 설정한다.
그런 다음, 대전제를 바탕으로 귀납적 분석을 진행해 납입일 변경이 불가능한 사례를 발견했다. 이를 추가 전제로 설정해 대전제를 보완했다. 최종적으로, 연역적 분석과 귀납적 분석을 결합해 결론을 도출한다. 이렇게 얻은 정보는 설계 단계에서 중요한 참고 자료로 활용될 수 있다는 것이 김 엔지니어의 설명이다.
세번째, 설계
김인회 엔지니어는 철저한 설계를 해야 한다고 강조했다. 그는 “설계 문서만으로도 시스템의 구조와 동작을 완전히 이해할 수 있어야 한다”며 “이것을 가능케 하는 핵심이 바로 문서화”라고 설명했다.
토스뱅크는 분석 결과를 바탕으로 설계 문서를 작성, 마이그레이션 과정의 핵심 가이드로 활용했다. 이 과정에서 동료들의 다양한 피드백을 받아 설계를 보완했다.
마지막, 테스트 케이스 작성
분석 과정을 통해 도출한 전제로 예상할 수 있는 사례와 시나리오를 작성하는 것이 마지막 단계다. 이를 단위 테스트로 구현해 도메인 로직을 견고하게 해야 한다.
김 엔지니어는 “대출 상환 도메인 프로젝트의 실제 테스트 커버리지를 보면 약 90% 수준을 유지하고 있다”며 “도메인의 안정성과 신뢰성을 확보하기 위해 많은 노력을 하고 있다”고 밝혔다.
끝으로, 김 엔지니어는 ‘팀 워크’를 강조했다. 그는 “토스뱅크 프로젝트에서도 복잡한 시스템과 다양한 기술 스택, 문서화 등 해결해야 할 과제가 많았다”며 “그러나 팀원들이 아낌없이 경험과 지식을 공유한 덕분에 마이그레이션 전략을 최적화할 수 있었다”고 전했다.
글. 바이라인네트워크
<홍하나 기자>0626hhn@byline.network
[무료 웨비나] API연결만으로 가능한 빠르고 쉬운 웹3 서비스 구축
- 내용 : API 연결을 통해 웹2와 웹3를 끊김 없이 연결하는 최신 융합 기술과 이를 통한 적용 사례를 다룹니다.
- 일시 : 2024년 10월 10일 (목) 14:00 ~ 15:10
대한민국에서 차세대구축을 대부분 빅뱅방식으로 추진했는데 토스뱅크는 단계적 오픈을 택했다는 거네요. 차세대의 목적은 개별 시스템을 통합하기 위해 인증, 권한관리 같은 공통부분을 통일시키는 데 있습니다. 따라서 “차세대 대신 선택한 시스템 전환 방식”은 잘못된 기사제목입니다.
안녕하세요 홍하나 기자입니다.
말씀 주신 차세대는 개념적인 측면에서 맞습니다. 제가 기사에서 쓴 표현은 ‘은행들이 기존 시스템을 전환하는 일’이라는 관행적 의미입니다. 보통 은행의 시스템 전환을 차세대 프로젝트로 일컫는 것처럼 말이죠.
좋은 피드백 주셔서 감사합니다! 앞으로도 기사 많이 봐주시고 피드백 많이 남겨 주세요!