고객사마다 다른 JDBC·HTTP·TCP 연동 코드가 핵심 결재 서비스에 퍼지는 문제를 API Proxy로 분리한 설계를 소개한다. 별도 프록시가 모든 결과를 일정한 REST 응답으로 반환해 내부 서비스가 상대 구현을 몰라도 되게 만든다.
핵심 포인트- JDBC의 DB·query, HTTP의 method·parameter처럼 서로 다른 입력을 공통 item 데이터 타입으로 추상화하고, JDBC·HTTP 연동 모듈을 독립 microservice로 나눠 새 고객 추가 시 기존 고객까지 함께 배포하지 않도록 분리
- 핵심 서비스·proxy main·submodule 사이 hop 증가를 줄이려 JSON HTTP 대신 binary serialization과 HTTP/2를 쓰는 gRPC를 도입 — proto 정의로 Java·Ruby 등 여러 언어 stub을 자동 생성
- 성공 시 결과 없고 실패 시에만 메시지를 주는 MSSQL stored procedure의 가변 결과나 내부 문자·외부 숫자 상태값 차이를, 코드를 고치는 대신 proxy의 설정·변환 set으로 흡수해 고객별 차이를 격리
- 외부 timeout에 재시도가 몰려 대기 thread가 쌓이자 Resilience4j로 10개 요청 실패율 30% 초과 시 circuit을 열고 fallback을 반환 — request ID 분산 추적·통합 test·설정 UI를 후속 과제로 제시
왜 읽나다양한 외부 연동을 핵심 서비스에서 떼어내 재사용 가능한 중계 계층으로 만들고, gRPC·설정 추상화·circuit breaker로 확장성과 장애 격리를 잡으려는 설계자에게.