뱅크샐러드, 3년간 레거시 모놀리스를 15개 마이크로서비스로 분해한 과정과 섀도잉 전략
핵심 내용
뱅크샐러드가 3년간의 프로젝트를 통해 레거시 모놀리스를 15개 마이크로서비스로 분해하며 섀도잉과 OKR 문화를 활용해 성공적으로 전환했다.
자세히 보기
모놀리스의 한계와 분해 결정
뱅크샐러드는 초기 빠른 성장을 위해 Python과 MongoDB 기반의 유연한 타입 체계를 채택했으나, 시간이 지나며 거대한 모놀리식 서버로 변질되었다. 비즈니스 로직의 복잡도가 급증하고 정확한 동작을 보장하기 어려운 상태에 이르자, 회사는 레거시 서비스를 제거하고 복잡도가 낮은 서비스로 해체하는 분해(decomposition) 전략을 채택했다.
콘웨이 법칙 적용과 15개 마이크로서비스 구조
조직의 커뮤니케이션 구조가 소프트웨어 구조를 따른다는 콘웨이 법칙에 착안하여, 뱅크샐러드는 '스쿼드' 체계에 맞춰 서비스를 재설계했다. 그 결과 연금, 은행 계좌, 카드, 투자 등 15개 마이크로서비스로 구성된 구조가 도출되었다. 이 과정에서 불확실성을 줄이기 위해 '목표가 아닌 것(Non-goals)'을 명확히 정의하고, 기존 API 명세의 오류를 수정하지 않는 등 복잡도 절감에 집중했다.
섀도잉(Shadowing)을 통한 검증과 안정성 확보
레거시 서비스 대체의 핵심 검증 방법은 섀도잉이었다. 기존 서비스와 신규 서비스에 동일한 요청을 보내 응답의 일치 여부를 비교하고, statsd와 Kibana를 통해 디프(diff)를 분석했다. 이를 통해 소수점 처리 차이, 타임존 버그 등 인력 투입으로는 발견하기 어려웠던 잠재적 오류를 사전에 식별했다. 트래픽 비율을 1%부터 점진적으로 높이는 방식으로 안정성을 검증했으며, Chronograf 대시보드로 프로젝트 진척도와 장애 여부를 실시간으로 파악했다.
조직 문화와 프로젝트 성과
프로젝트 기간 동안 매일 또는 필요 시 2시간마다 스탠드업 미팅을 진행하며 긴밀한 소통을 유지했다. Go와 gRPC 기반 서버 템플릿을 제작하여 보일러플레이트 코드 작성 시간을 줄이고 생산성을 높였다. 약 3년에 걸친 프로젝트 끝에 레거시 서비스 분해가 완료되었으며, 이후 한 달 이내로 다수의 서버 차원 기능 개선이 가능해질 만큼 개발 속도가 빨라졌다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.