시스템 간 통신은 반드시 동기적일 필요는 없다. 비동기 연동 방식은 시스템들이 즉시 응답을 기다리지 않고, 메시지를 큐에 넣거나 이벤트를 발행해두고 나중에 처리할 수 있도록 설계된 구조를 말한다. 이는 특히 대용량 트래픽 처리, 장시간 작업 처리, 시스템 간 느슨한 결합이 필요한 환경에서 유용하게 사용된다.
아래는 대표적인 비동기 연동 방식과 그 특징들이다.
🔹 메시지 큐 (Message Queue)
- 대표 기술: RabbitMQ, ActiveMQ, Amazon SQS 등
- 동작 방식: 송신 시스템이 메시지를 큐에 넣고 바로 반환. 수신 시스템은 큐에서 메시지를 꺼내 비동기적으로 처리
- 특징: 신뢰성 높음, 메시지 순서 보장, 실패 시 재시도 가능
- 사용 예시: 주문 처리, 결제 완료 후 알림 발송 등
🔹 이벤트 브로커 / 퍼블리시-서브스크라이브 (Pub/Sub)
- 대표 기술: Apache Kafka, Google Pub/Sub, Redis Streams
- 동작 방식: 발신 시스템이 이벤트를 발행하면, 이를 구독하고 있는 시스템들이 수신하여 처리
- 특징: 다대다 통신 가능, 느슨한 결합 구조, 이벤트 로그를 기반으로 재처리 가능
- 사용 예시: 주문 완료 시 알림, 재고 차감, 통계 적재 등 여러 시스템에서 동시 처리
🔹 웹훅 (Webhook)
- 동작 방식: 이벤트 발생 시, 대상 시스템의 HTTP 엔드포인트로 자동 POST 요청 전송
- 특징: 구현이 간단하고 실시간 전달 가능
- 제약: HTTP 기반으로 신뢰성 보장이 어려움. 장애 대응이나 재시도는 별도 구현 필요
- 사용 예시: 외부 결제사로부터 결제 성공 알림 받기, GitHub 커밋 알림 연동 등
🔹 비동기 HTTP 요청 + 콜백 / Polling
- 동작 방식: 요청은 비동기로 전송하고, 결과는 콜백 URL로 전달하거나 주기적으로 상태를 Polling
- 특징: 처리 흐름 제어가 가능해 복잡한 프로세스에 적합
- 단점: Polling은 리소스 낭비가 발생할 수 있음
- 사용 예시: 리포트 생성, 이미지 처리, 백그라운드 작업 등 장시간 처리 업무
🔹 파일 기반 연동 (예: CSV, JSON 배치)
- 동작 방식: 일정 주기마다 파일을 생성해 FTP/S3 등의 저장소에 업로드하고, 수신 시스템이 이를 다운로드하여 처리
- 특징: 대용량 데이터에 적합, 시스템 간 느슨한 연결 구조
- 단점: 실시간성이 낮고, 오류 발생 시 추적이 어려움
- 사용 예시: 외부 기관에 배치로 데이터 제공, 정산용 데이터 전달 등
✅ 마무리
비동기 연동 방식은 시스템 간 결합도를 낮추고, 성능과 확장성을 확보하는 데 중요한 역할을 한다.
업무의 특성과 요구 조건(신뢰성, 실시간성, 처리량 등)에 따라 적절한 방식을 선택하는 것이 핵심이다.