전통 코어 뱅킹을 넘어 — MSA로 새로 설계한 대출 시스템
토스뱅크에서 대출 서버 개발을 맡은 발표자가 '토스뱅크의 완전히 새로운 대출 시스템'을 연다. 전통 금융회사는 대부분의 비즈니스 로직이 강하게 결합된 모놀리식 코어 뱅킹 시스템 위에 구현되고, 채널계라 불리는 서비스 서버는 사용자 요청·응답을 코어 뱅킹의 전문 규격에 맞춰 변환·전달하는 데 그쳤다. 이런 구조는 신규 피처마다 영향도 분석에 많은 시간이 들고 그 피처가 다시 분석 대상이 되는 악순환을 만들어, 빠르게 바뀌는 애자일 조직에서는 유지보수가 어렵다.
토스뱅크는 마이크로서비스의 장점을 가져오면서 전통 금융 시스템과의 연계를 새로 설계했다. MSA로 구성한 서비스 서버와 모놀리식 코어 뱅킹을 각각 독립된 API 서비스로 정의하고, 전문 방식이 아닌 HTTP API 통신으로 필요할 때만 코어 뱅킹과 통신하면서 독립된 마이크로서비스가 비즈니스 로직을 직접 해결하도록 했다. 대출에 필요한 신용정보를 위해 KCB·나이스·신용정보원 같은 대외 기관과의 통신 구조도 새로 설계했는데, 관여 기관이 늘며 심사 응답 속도가 늘어지는 문제가 생겼다. 기존 금융권은 여러 기관을 동시에 호출하는 비동기로 풀었지만 사용자가 급증하면 기관이 감당 못 할 트래픽이 몰려 시스템이 마비되곤 했다. 그래서 토스뱅크는 기관이 견딜 만큼만 보내고 사용자 수에 맞춰 동적으로 요청을 처리하는 유량 제어 시스템을 도입했고, 관계형 DB로 MySQL, 메시지 서비스로 Kafka, 유량 제어·캐시로 Redis를 활용했다. 대출이 실행되기까지는 사용자·약관·상품·대출 서버 등 여러 서비스가 관여하고 각자 독립 스키마를 가져, 협업 없이는 이렇게 큰 시스템을 유지할 수 없다. 협업을 위해서는 스키마를 언제든 복제·생성할 수 있어야 하고, 버전 컨트롤과 연동해 DDL 쿼리 버전이 관리되어야 하며, 비즈니스 로직과 스키마의 동기화가 보장되어야 한다.