본문

[아키텍처 설계] 데이터 전송 서비스 SQS, MSK(kafka), Kinesis

최근 RAG(검색 증강 생성) 시스템과 복잡한 데이터 파이프라인을 구축하면서, 컴포넌트 간의 데이터를 어떻게 손실 없이 안정적으로 주고받을지에 대해 깊은 고민에 빠진 적이 있습니다. 특히 갑작스러운 트래픽 병목 현상을 해결하고 방대한 양의 실시간 로그를 처리하기 위해 트러블슈팅을 겪으면서, 상황에 맞는 적절한 메시징 및 스트리밍 서비스를 선택하는 것이 전체 아키텍처의 성패를 좌우한다는 것을 다시금 깨달았습니다.

 

클라우드 환경에서 "데이터를 어떻게 보낼 것인가?"는 늘 까다로운 과제입니다. 오늘은 저와 같은 고민을 하고 계실 개발자 및 시스템 설계자분들을 위해, 비슷한 듯 다른 AWS의 세 가지 핵심 서비스(SQS, MSK, Kinesis)의 차이점과 상황별 선택 기준을 정리해 보았습니다.

 

1. 핵심 요약: 각 서비스는 어떤 역할을 할까?

가장 먼저 이 세 가지 서비스가 아키텍처 내에서 어떤 '역할'을 담당하는지 직관적으로 이해하는 것이 중요합니다.

  • Amazon SQS (Simple Queue Service): 시스템의 '우체국' 역할을 합니다. 작업 요청을 대기열에 세워 하나씩 순차적으로 처리하거나, 서비스 간의 결합도를 낮춰 부하를 분산할 때 주로 사용합니다.

Event-Driven Design: Choosing Between SNS, SQS, and EventBridge

  • Amazon Kinesis: AWS 환경에 최적화된 '스트리밍 허브'입니다. 복잡한 인프라 설정 없이 실시간 데이터를 수집하고 곧바로 분석으로 연결하고 싶을 때 적합한 일체형 도구입니다.

Kinesis를 '스트리밍 허브'로 활용하여 실시간 데이터 수집부터 전처리(Lambda), 분석(Elasticsearch/Kibana) 및 백업(S3)까지 매끄럽게 연결한 파이프라인 예시

  • Amazon MSK (Managed Streaming for Apache Kafka): 대규모 데이터를 위한 '실시간 고속도로'입니다. 오픈소스인 Kafka의 강력한 성능과 생태계를 활용하면서도, 직접 인프라를 운영하는 부담을 덜고 싶을 때 선택하는 고성능 파이프라인입니다.

다중 가용 영역(Multi-AZ)에 안전하게 배포되어 인프라 관리 부담 없이 고가용성을 보장하는 강력한 MSK 클러스터 구성 예시

2. 상황별 아키텍처 선택 가이드

시스템이 직면한 상황에 따라 적합한 도구는 달라집니다. 아래의 체크리스트를 통해 방향성을 점검해 볼 수 있습니다.

  • "비동기 작업 처리가 필요한가?" 이메일 발송, 이미지 리사이징 등 단발성 작업이나, 트래픽 폭주로부터 백엔드 서버를 안전하게 보호해야 한다면 SQS가 가장 확실하고 간편한 출발점입니다.
  • "AWS 생태계 내에서 빠른 실시간 분석 파이프라인을 구축하고 싶은가?" 클릭 몇 번으로 스트리밍 환경을 구성하고 S3, Redshift 등 AWS의 다른 분석 서비스와 매끄럽게 연동해야 한다면 Kinesis를 추천합니다.
  • "이미 Kafka에 익숙하거나, 타 환경과의 호환성 및 오픈소스 생태계가 중요한가?" 대규모 센서 데이터나 로그를 처리하며, 향후 외부 오픈소스 툴 연동이나 멀티 클라우드 확장을 고려하고 있다면 표준 기술인 MSK가 정답이 될 수 있습니다.

3. 주목해야 할 3가지 핵심 차이점

이 서비스들을 실무에 적용하기 전, 구조적인 차이를 명확히 인지해야 합니다.

  • 메시지(Message) vs 스트리밍(Streaming) SQS는 처리 후 대기열에서 삭제되는 '일회성 처리'에 가깝습니다. 반면, Kinesis와 MSK는 데이터의 '흐름(Stream)'을 유지하므로 여러 서비스가 동일한 데이터를 동시에 읽어가거나, 장애 발생 시 과거 데이터를 다시 재생(Replay)할 수 있다는 결정적인 차이가 있습니다.
  • 운영 및 관리의 복잡도 SQS와 Kinesis는 AWS가 알아서 관리해 주는 완전 관리형(Serverless) 서비스에 가까워 서버 설정에 대한 고민이 거의 없습니다. 반면 MSK는 관리 편의성은 높였지만, 여전히 Kafka의 아키텍처를 따르기 때문에 파티션이나 토픽 설정을 세밀하게 튜닝하는 엔지니어링 노하우가 요구됩니다.
  • 확장성과 생태계(Ecosystem) MSK는 전 세계 개발자들이 사용하는 Apache Kafka 표준을 따르므로, 타 플랫폼으로 이전하거나 다양한 외부 툴을 결합하기에 매우 유리합니다. 반대로 Kinesis는 AWS 내부 인프라와의 결속력이 뛰어나, AWS 중심의 아키텍처를 구상할 때 가장 빠르고 강력한 시너지를 냅니다.

마치며

시스템을 처음 설계하는 단계이거나 마이크로서비스 간의 통신이 필요하다면, 먼저 SQS를 도입하여 시스템의 결합도를 낮추고 안정성을 확보하는 것이 좋은 선택일 것입니다. 이후 데이터가 폭발적으로 증가하고 이를 실시간으로 분석해야 하는 환경으로 넘어간다면, 팀의 운영 편의성을 고려해 Kinesis를 채택하거나, 더 높은 수준의 성능과 표준화가 필요할 때 MSK로 진화해 나가는 것이 바람직한 방향성이라고 생각합니다.

여러분의 프로젝트에서는 지금 어떤 데이터를, 어떤 속도로 다루고 계신가요? 각자의 비즈니스 환경과 현장에 가장 알맞은 아키텍처를 찾아가는 트러블슈팅 과정에, 이 글이 작은 보탬이 되기를 바랍니다 :)

공유

댓글

Cloud & AI Engineering | 임승한

design by tokiidesu. powerd by AXZ.