본문으로 건너뛰기
JAEWON CHANG시스템 작업 기록
언어

제원

소속
넛지헬스케어
기간
2024 – 2025
통합 대상
관계사 커뮤니티 서비스 10개 이상
환경
하위 서비스 15개 이상을 포함한 메가앱
이해관계자
기획 · 백엔드 · Android · iOS · QA · 운영, 50명 이상
이관 방식
서비스별 DNS 레코드 순차 전환
역할
프론트엔드 개발 · 통합 구조 설계 · 이관 수행

배경

관계사별 커뮤니티가 각각 다른 코드베이스와 운영 환경으로 분리되어 있었다. 열 곳 넘는 서비스가 같은 기능을 각자 개발하고 각자 유지보수했다.

공통 기능 하나를 고치려면 여러 저장소를 동시에 수정하고 각각 배포해야 했다. 서비스마다 요구사항과 출시 주기, 운영 방식도 달라서 변경 하나의 영향 범위를 예측하기 어려웠다.

수행

  1. 기능을 공통과 서비스별로 나눴다. 하나의 코드베이스에서 여러 테넌트가 동작하도록 구조를 바꾸고, 테넌트 차이는 기능 플래그와 설정으로 분리했다.

  2. 각 조직의 요구사항을 공통 요구와 개별 요구로 다시 분류했다. 공통으로 올릴 수 없는 요구는 설정 값으로 남기고, 올릴 수 있는 요구는 통합 스펙으로 합쳤다.

  3. 기존 EC2 환경은 그대로 둔 채 통합 서버를 먼저 준비했다. 한 번에 전부 바꾸지 않고, 서비스별 DNS 레코드를 하나씩 통합 환경으로 옮겼다. 문제가 생기면 해당 서비스만 기존 환경으로 되돌릴 수 있도록 두었다.

  4. 통합 이후 트래픽이 한 구조로 모이면서 리소스 사용량이 올라갔다. Auto Scaling을 적용해 증가분에 대응했다.

  5. 기획·백엔드·모바일·운영 조직과 API 규격, 일정, 의존성을 조율했다. 하위 서비스가 15개 이상인 메가앱이라 서비스별 출시 사이클과 변경 영향도 함께 맞춰야 했다.

시스템

서비스별 DNS 순차 전환 경로rollbackcutoverService AService BService NRoute 53per-service recordLegacy EC2one per serviceMulti-tenant serverflags + configAuto Scaling
그림 dns cutover

전환 단위는 서비스 하나. 되돌릴 경로를 남긴 채 이동했다.

각 서비스의 트래픽은 Route 53 레코드를 거친다. 레코드를 하나씩 기존 EC2에서 멀티테넌트 서버로 옮기고, 문제가 생기면 그 레코드만 기존 환경으로 되돌린다. 통합 서버 뒤에는 Auto Scaling 그룹을 뒀다.

측정

유지 대상 코드베이스

이전: 10+이후: 1

공통 기능은 한 곳에서만 고친다.

운영 · 유지보수 인력

~20%

통합 전 투입 인력 대비 유지보수 인력.

조율 대상 하위 서비스

15+

메가앱 내 서비스별 출시 사이클을 함께 조정했다.

역할 경계

  • 백엔드 API와 모바일 클라이언트는 각 팀이 담당했다. 나는 프론트엔드 통합 구조와 이관 절차를 맡았다.
  • 통합 대상 요구사항의 최종 결정은 기획·운영 조직과 함께 내렸다.
  • 무중단 이관은 순차 전환과 롤백 경로 확보로 달성하려 한 목표였고, 전환 단위는 서비스 단위였다.