수천 개의 API/BATCH 서버를 하나의 설정 체계로 관리하기
나재은 토스 · 토스 기술 블로그
AI 핵심 요약
수천 개의 API·배치 서버 설정을 복사해 관리하면서 생기는 중복과 오타는 인프라 장애, 특히 정산 오류로 이어질 수 있었습니다. API 설정에는 global·cluster·phase·app 등의 계층을 겹치는 오버레이 구조와 템플릿을 도입하고, Python 코드와 조건부 규칙으로 동적 요구사항에도 대응했습니다. 배치에는 Jenkins Job-DSL을 감싼 Groovy 빌더와 업무 규칙 테스트를 마련해 개발자가 선언만으로 Job을 구성하게 했으며, 메모리 부족은 전용 노드를 필요할 때 생성하고 유휴 시 종료하는 Dynamic Provisioning으로 해결했습니다. 설정을 소프트웨어처럼 테스트하고 요구사항에 맞춰 진화시키는 구조가 개발자와 DevOps의 협업을 단순하게 하고 대규모 변경을 쉽게 만든다는 것이 핵심입니다.
- 공통값과 환경별 차이를 계층으로 나누고, 우선순위 규칙을 명확히 하면 설정 중복을 줄일 수 있습니다.
- 긴 문자열 설정은 템플릿 변수로 분해해 필요한 값만 바꾸고, 배열처럼 단순 오버레이가 어려운 구조에는 조건부 적용 규칙을 둘 수 있습니다.
- Jenkins Job-DSL을 빌더 형태로 감싸면 복잡한 Jenkins 설정을 숨기고 자동완성·테스트가 가능한 선언형 인터페이스를 제공할 수 있습니다.
- 배치 워커를 동적으로 프로비저닝하고 유휴 노드를 종료하면 프로세스 간 자원 경쟁과 상시 노드 운영 비용을 함께 줄일 수 있습니다.
소개
토스페이먼츠 서버플랫폼 팀이 '설정' 하나로 얼마나 깊이 고민하고 문제를 해결해왔는지 공유해 드려요.
비슷한 학습 자료
컨퍼런스 SLASH
토스ㅣSLASH 21 - 토스의 서버 인프라 모니터링
문서 차영훈
토스의 디바이스 팜 만들기
문서 허지훈
토스페이먼츠의 Open API 생태계
문서 정석호
200여개 서비스 모노레포의 파이프라인 최적화
문서 김동석