본문으로 이동
수천 개의 API/BATCH 서버를 하나의 설정 체계로 관리하기
문서

수천 개의 API/BATCH 서버를 하나의 설정 체계로 관리하기

나재은 · 토스 · 토스 기술 블로그

원본 보기

소개

토스페이먼츠 서버플랫폼 팀이 '설정' 하나로 얼마나 깊이 고민하고 문제를 해결해왔는지 공유해 드려요.

AI 핵심 요약

수천 개의 API·배치 서버 설정을 복사해 관리하면서 생기는 중복과 오타는 인프라 장애, 특히 정산 오류로 이어질 수 있었습니다. API 설정에는 global·cluster·phase·app 등의 계층을 겹치는 오버레이 구조와 템플릿을 도입하고, Python 코드와 조건부 규칙으로 동적 요구사항에도 대응했습니다. 배치에는 Jenkins Job-DSL을 감싼 Groovy 빌더와 업무 규칙 테스트를 마련해 개발자가 선언만으로 Job을 구성하게 했으며, 메모리 부족은 전용 노드를 필요할 때 생성하고 유휴 시 종료하는 Dynamic Provisioning으로 해결했습니다. 설정을 소프트웨어처럼 테스트하고 요구사항에 맞춰 진화시키는 구조가 개발자와 DevOps의 협업을 단순하게 하고 대규모 변경을 쉽게 만든다는 것이 핵심입니다.

  • 공통값과 환경별 차이를 계층으로 나누고, 우선순위 규칙을 명확히 하면 설정 중복을 줄일 수 있습니다.
  • 긴 문자열 설정은 템플릿 변수로 분해해 필요한 값만 바꾸고, 배열처럼 단순 오버레이가 어려운 구조에는 조건부 적용 규칙을 둘 수 있습니다.
  • Jenkins Job-DSL을 빌더 형태로 감싸면 복잡한 Jenkins 설정을 숨기고 자동완성·테스트가 가능한 선언형 인터페이스를 제공할 수 있습니다.
  • 배치 워커를 동적으로 프로비저닝하고 유휴 노드를 종료하면 프로세스 간 자원 경쟁과 상시 노드 운영 비용을 함께 줄일 수 있습니다.