
백엔드
포스타입 정산 시스템 이관기 1
두줄요약
정산 시스템을 PHP에서 Java로 이관하며, 태스크 서버를 SNS·SQS·ECS 기반 Job Runner로 재설계했습니다. 작업 일관성, 재시도성, 확장성을 높이기 위한 아키텍처 선택 과정을 정리했습니다.
문제 상황
- PHP 기반 정산 시스템의 방대한 로직과 분기문으로 인한 유지보수 어려움
- 태스크 서버에서 스케줄링·비동기 작업 방식이 제각각이어서 재시도와 운영이 비효율적인 상태
원인 분석
- 절차적 로직 누적과 수년간의 유지보수로 불필요한 흐름 증가
- Task 테이블 큐, Redis Pub/Sub, SNS, SQS 등 작업 방식 혼재로 일관성 부족
- 실패 시 데이터 확인 후 코드 수정이 필요한 재시도 구조와 방어 코드 누적 가능성
해결 방법
- PHP 정산 시스템을 Java로 이관하고, 태스크 서버를 새로운 Job Runner 아키텍처로 재구성
- 스케줄링·비동기 작업을 SNS 메시지로 통일하고 SQS, ECS Task로 소비하는 구조 채택
- EventBridge, SNS, SQS, ECS, CodePipeline을 활용해 배포와 운영 체계 정비
선택 이유
- ECS는 Task 단위 스케일링으로 무거운 작업과 높은 처리량 대응에 유리
- SNS, SQS는 팀의 운영 경험이 있고, DLQ·지연 큐·최소 1회 전송 보장 등 재시도성과 신뢰성 확보에 적합
- Kafka보다 러닝 커브가 낮고 현재 서비스 규모에 더 적합한 선택
