IT/CS 공부

[CS] 시스템 간 비동기 연동 방식 정리

박소민 2025. 5. 14. 09:29
분산 시스템에서 비동기 연동 방식을 사용하는 이유
분산 시스템에서는 여러 컴포넌트가 서로 독립적으로 운영되며, 서로 다른 네트워크/서버/서비스 간 통신이 발생
이때 하나의 장애가 전체 시스템 장애로 번지지 않도록 하기 위해 비동기 연동이 필요

 

시스템 간 비동기 연동 방식
시스템 간 비동기 연동은 시스템끼리 바로 응답을 주고받지 않고, 작업을 위임하거나 나중에 처리하는 방식
요청한 쪽은 결과를 기다리지 않기 때문에 더 빠르게 사용자에게 응답할 수 있다.
또한 시스템끼리 느슨하게 연결되기 때문에 유지보수성과 확장성이 높다.

1. 메시징 시스템 활용

메시징 시스템 활용이 적절한 이유

- 서비스 간 결합도를 낮춤: 직접 호출이 아닌 메시지를 통해 간접적으로 연결되므로 각 서비스가 독립적으로 배포되고 확장 가능
- 비동기 처리로 부하 분산 가능: 생산자(Producer)와 소비자(Consumer)가 서로 영향을 주지 않고 처리 가능
- 높은 확장성: Kafka 같은 시스템은 파티션 기반의 수평 확장이 가능하여 대량의 데이터 처리에 유리
- 장애 격리: 소비자가 일시적으로 죽어도 메시지는 큐에 남아 있어 재처리 가능

→ 확장성과 독립성이 중요한 분산 시스템에서 탄력적이고 느슨한 연결 구조를 만들 수 있기 때문

개념

Kafka, RabbitMQ와 같은 메시징 시스템을 두고, 시스템 간 메시지를 주고받는 구조
한 시스템이 메시지를 메시징 시스템에 전송하면, 다른 시스템이 그 메시지를 읽어와 처리

장점

  • 처리량이 높고 빠르다.
  • 수평 확장이 용이하다.

고려사항

  • 메시지 유실 방지를 위한 처리 필요
  • 메시지 처리 순서를 보장해야 하는 경우 별도 설정 필요 (Kafka는 파티션 단위로 순서 보장)
  • 메시지 전송과 데이터베이스 작업 사이의 트랜잭션 처리
    • 예: 메시지는 전송됐지만 DB 저장이 실패하거나, 그 반대의 경우
    • 이를 해결하기 위해 Outbox 패턴 등을 고려할 수 있음

2. 데이터베이스 테이블 활용

분산 시스템에서 작고 단순한 메시지 흐름이 필요할 때 적절한 저비용 방식

개념

중간 메시징 시스템 없이 데이터베이스 테이블을 메시지 큐처럼 사용하는 방식이다.
한 시스템이 메시지를 테이블에 저장하면, 다른 시스템이 주기적으로 테이블을 조회하여 메시지를 읽고 처리한다.

장점

  • DB 트랜잭션으로 메시지 저장과 다른 작업을 함께 처리할 수 있다.
  • 메시지 유실 위험이 적고, 처리 순서 보장이 쉽다.

고려사항

  • 조회 주기를 너무 짧게 하면 부하가 발생하고, 길게 하면 반응이 느려질 수 있음
  • 메시지를 삭제하거나 보관하는 정책 필요
  • 메시지 구조가 자주 바뀌면 테이블 스키마도 자주 변경해야 함
  • 고성능 처리에는 적합하지 않을 수 있음

3. CDC (Change Data Capture) 활용

개념

데이터베이스의 변경 로그(binlog 등)를 읽어 변경 사항을 다른 시스템에 전파하는 방식이다.
Debezium 등의 도구를 통해 구현할 수 있다.

| CDC 방식이 적절한 이유

- 기존 시스템 변경 없이 데이터 흐름 추적 가능: DB 로그만 보면 되기 때문에 기존 애플리케이션을 수정하지 않아도 됨
- 트랜잭션 기반의 신뢰성: 데이터베이스의 커밋 로그를 기반으로 하므로 변경 순서와 정합성 보장
- 데이터 복제나 실시간 파이프라인 구축에 유리: 데이터 웨어하우스, 검색엔진 등으로의 동기화 용이

| 분산 시스템에 특히 유리한 경우
이벤트 소싱 기반 아키텍처 마이크로서비스 간 상태 동기화 실시간 데이터 파이프라인 구축

분산 시스템에서 데이터 중심의 이벤트 흐름을 안정적으로 처리할 수 있는 방식

장점

  • 데이터베이스 트랜잭션 단위로 동작하여 정합성이 보장된다.
  • 별도로 메시지를 생성하거나 저장할 필요 없어 애플리케이션 로직이 단순하다.

고려사항

  • 변경된 값만 존재하므로 변경 이유는 알 수 없다.
  • 데이터베이스 구조가 바뀌면 CDC 처리 로직도 함께 수정이 필요하다.
  • 민감한 정보가 로그로 노출되지 않도록 필터링 및 보안 설정이 필요하다.

방식 장점 고려사항
메시징 시스템 처리량이 높고 확장성이 좋음 메시지 유실, 순서 보장, 트랜잭션 처리 필요
데이터베이스 테이블 트랜잭션 보장, 유실 적음 조회 주기 및 삭제 정책 필요, 확장성 제한
CDC 방식 트랜잭션 보장, 로직 단순 변경 이유 파악 불가, DB 구조 변경 시 리스크 존재

 

'IT > CS 공부' 카테고리의 다른 글

[CS] Redis가 싱글 스레드로 동작하는 이유  (0) 2025.05.20
[CS] CAP 정리  (0) 2025.05.15
[CS] 캐시 스템피드 현상  (0) 2025.05.13
[CS] [데이터베이스] 정규화  (0) 2022.07.01
[CS][알고리즘] BFS/DFS  (0) 2022.06.29