[reinvent 2024] 분산 시스템을 위한 통합 패턴

Summary

오늘날의 애플리케이션은 API 노출, 이벤트 발행, 타사 서비스 호출, 상태 외부화를 통해 서로 긴밀히 연결되어 있으며, 이로 인해 분산 시스템의 기본 과제인 순서 불일치, 재시도, 멱등성, 부분적 실패 등을 해결해야 합니다. 이러한 문제를 해결하기 위해 간접화, 변환, 비동기화를 통해 결합도를 낮추는 다양한 옵션이 있습니다. 이번 세션에서는 분산 시스템 설계를 위한 일반적인 트레이드오프와 다양한 디자인 패턴을 소개하며, 실 사례를 통해 이를 효과적으로 적용하는 방법을 탐구합니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Integration patterns for distributed systems
  • Date: 2024년 12월 4일(수)
  • Venue: MGM Grand | Level 1 | Grand 116
  • Speaker:
  • Dirk Froehner : Amazon Web Services 수석 솔루션 아키텍트
  • Balaji Kumar Gopalakrishnan(Amazon 수석 엔지니어)
  • Industry: –

들어가며

이번 세션에서는 통합 아키텍처를 주제로 최신 기술과 실무 적용 사례를 배우고자 신청하게 되었습니다. 현대의 분산 시스템에서 통합은 필수적인 요소로, 이를 효과적으로 설계하기 위해 필요한 핵심 개념과 패턴 등을 이해하고 싶었습니다. 특히, 결합과 그 차원, 제어 흐름 및 흐름 제어, 메시지 순서와 전달 의미론, 실패 및 문제 처리라는 네 가지 주요 주제에 주목하며, 실무 고객 대응 업무에서 다양하게 활용될 수 있기를 기대합니다.

통합 아키텍처의 필수성

통합은 이제 단순히 시스템 간 연결을 넘어서, 현대 애플리케이션 아키텍처의 핵심 요소로 자리 잡았습니다. 통합은 더 이상 사후적으로 고려해야 할 대상이 아니라, 애플리케이션 설계와 소프트웨어 배포 주기의 핵심적인 부분입니다. 이를 간과하면 시스템의 확장성과 안정성에 심각한 영향을 미칠 수 있습니다.

다양한 시스템이 상호작용하는 오늘날의 IT 환경에서 통합은 불가피한 과제입니다. 단순히 두 시스템(A와 B)을 연결하는 것처럼 보이는 작업도  복잡한 질문들을 포함하고 있을수 있습니다.  예를 들어:

  • 동기(synchronous)와 비동기(asynchronous)의 선택
  • 데이터 흐름과 제어 흐름의 차이
  • 메시지 형식, 폴링(polling), 에러 처리와 같은 기술적 고려 사항

이러한 통합 요소를 무시하면 시스템의 안정성과 성능이 저하될 수 있습니다. 따라서 초기에 올바른 통합 전략을 설계하는 것이 필수적입니다.

통합 아키텍처 설계 시 반드시 고려해야 할 분산 시스템의 핵심 요소를 네 가지로 요약합니다:

  1. 결합과 그 차원(Coupling and its dimensions)
    • 시스템 간 의존도를 줄이고 독립성을 유지하는 설계가 중요합니다. 위치, 시간적 의존성, 데이터 형식 의존성 등을 최소화해야 합니다.

  2. 제어 흐름과 흐름 제어(Control flow and flow control)
    • 데이터 흐름과 제어 흐름이 서로 반대 방향으로 작동할 수 있음을 이해해야 하며, 이를 기반으로 트래픽 제어와 백프레셔(backpressure)와 같은 개념을 설계에 반영합니다.

  3. 메시지 순서와 전달 의미론(Message order and delivery semantics)
    • 메시지 순서를 보장해야 하는 경우와 그렇지 않은 경우를 명확히 구분하여 처리 속도와 안정성을 모두 충족시킬 수 있는 전략을 사용합니다.

  4. 실패와 문제 처리(Failure and trouble handling)
    • 모든 시스템은 언젠가 실패할 수 있음을 인정하고, 데드 레터 큐(dead letter queue)와 같은 기술을 활용해 문제를 해결할 준비가 되어 있어야 합니다.

통합 설계의 핵심 요소

Coupling은 시스템 간의 의존성을 나타냅니다. 이상적인 통합 아키텍처는 낮은 결합도와 높은 응집도를 목표로 설계되어야 합니다. 이를 통해 시스템의 유연성과 안정성을 유지할 수 있습니다.

이 패턴은 송신자가 수신자에게 데이터를 보내는 간단한 구조로, 수신자로부터 응답을 기대하지 않는다는 점이 특징입니다.

이 통신 방식은 “Fire-and-Forget” 접근법을 사용하며, 본질적으로 비동기적(asynchronous)입니다.

송신자는 메시지가 전달되었음을 확인하거나 간단한 ACK를 받을 수 있지만, 이후 수신자 처리 결과에 대한 정보를 받지 못합니다.
이 패턴은 간단한 데이터 전달이나 로그 전송 등과 같이, 송신자의 작업을 빠르게 종료해야 하는 상황에서 효과적입니다.

비동기 요청-응답 패턴은 HTTP API와 같은 시스템에서 일반적으로 사용되는 패턴으로, 요청자가 응답을 기다리며 대기하지 않고 작업을 계속 진행할 수 있다는 점에서 효율적입니다.

이 패턴의 주요 특징은 요청 시 Return Address와 Correlation ID를 추가하여 송신자와 수신자 간의 데이터 추적이 가능하다는 점입니다. 이는 요청과 응답을 매핑하여 정확한 데이터를 처리할 수 있도록 돕습니다.

비동기 패턴은 시스템 부하가 클 때 유용하며, 요청자가 응답에 의존하지 않으므로 전체적인 시스템 효율성을 높입니다.

큐를 활용한 경쟁 소비자 패턴에서는 프로듀서(Producer)가 메시지를 큐(Queue)에 추가하고, 여러 소비자(Consumer)가 해당 큐에서 메시지를 가져가 처리합니다.

이 구조의 핵심은 큐가 부하 분산기 역할을 하며, 메시지를 저장하여 처리 속도 차이를 완화할 수 있다는 점입니다.

이를 통해 시스템의 확장성과 안정성이 향상됩니다. 특히, 메시지의 부하가 급격히 증가하는 경우에도 소비자를 추가하여 처리 속도를 유지할 수 있습니다.

메시징 채널과 시스템 안정성 유지

FIFO(First-In-First-Out) 큐는 메시지 순서를 보장하며, 이를 통해 프로듀서가 보낸 메시지가 소비자에게 도달할 때 엄격한 순서를 유지할 수 있습니다. 위의 예제에서는 단일 소비자(single consumer) 시나리오를 보여줍니다. 메시지 D, C, B, A는 큐에 추가된 순서대로 소비자에게 전달됩니다.

FIFO 채널은 메시지 순서 보장이 필수적인 업무에서 효과적이지만, 처리 속도와 복잡성을 감안한 트레이드오프가 필요합니다. 특히 여러 소비자가 동시에 큐에서 메시지를 처리하는 경우, 메시지 그룹(Message Groups)을 활용해 그룹 내 순서를 유지할 수 있습니다.

FIFO 큐와 메시지 그룹을 함께 사용하는 예를 보여줍니다. 메시지는 그룹 ID로 구분되며, 동일 그룹 내에서만 순서가 유지됩니다. 이를 통해 큐는 각 메시지 그룹에 대해 병렬로 작업을 처리할 수 있어 확장성과 성능을 동시에 확보할 수 있습니다.

예를 들어, Amazon SQS는 메시지 그룹 ID를 사용하여 이러한 패턴을 지원하며, 그룹 간 메시지 독립성을 보장합니다.

데드 레터 큐(DLQ)를 통한 오류 메시지 관리를 설명합니다. DLQ는 처리 실패한 메시지를 별도의 큐로 이동시켜 시스템 안정성을 유지하면서 문제를 분석하고 재처리할 수 있도록 돕습니다.

이는 독성 메시지(Poison Pill)와 같은 장애를 최소화하고, 운영 환경에서 직접 문제를 해결하지 않아도 되는 이점을 제공합니다.

결론

이번 세션을 통해 통합 아키텍처의 핵심 개념과 이를 실무에 적용하는 다양한 방법들을 배울 수 있었습니다. 특히 결합과 유연성의 균형, 흐름 제어의 중요성, 실패를 감안한 설계 원칙 등은 모든 시스템 설계자와 개발자가 반드시 이해해야 할 요소임을 다시 한 번 깨달았습니다.

FIFO 큐와 메시지 그룹을 활용해 메시지 순서를 유지하면서도 확장성을 높이는 방법, 데드 레터 큐를 통해 실패 메시지를 안전하게 관리하는 기법, 다중 테넌트 환경에서의 완화 패턴 등은 현재 진행 중인 프로젝트에 바로 적용할 수 있는 실용적인 인사이트를 제공했습니다. 특히 DynamoDB와의 통합으로 메시지 상태를 추적하고 복구할 수 있는 설계는 안정성을 강화하는 데 큰 도움이 될 것으로 보입니다.

글 │메가존클라우드 Cloud Technology Center (CTC), Team2 이성원 SA
게시물 주소가 복사되었습니다.