BLOG

최신 클라우드 아키텍처를 위한 메시징 서비스
작성일: 2020-04-13

AWS는 지속적으로 애플리케이션 모범사례에 관련된 테크 블로그 글을 게재하고 있습니다. 지난 번 ‘서버리스 애플리케이션 모범 사례’ 블로그 포스팅에 이어 애플리케이션에 메시징 패턴을 도입할 때의 모범 사례를 새로 게재하였습니다. 오늘 메가존 테크블로그에서는 해당 원문 글을 중심으로 일부 핵심 메시징 개념들을 검토하고, 최신 클라우드 아키텍처 설계 시 직면하는 과제를 해결할 때 필요한 AWS 서비스들을 소개해 드리겠습니다.

 

 

 

애플리케이션에서의 통신 구조

 

애플리케이션은 메시지, 데이터 페이로드 패키징을 위한 메커니즘 및 관련 메타 데이터를 사용하여 정보를 서로 주고받을 수 있습니다. 메시지를 보내는 애플리케이션을 생산자라고 하고 메시지를 받는 애플리케이션을 소비자라고 합니다. 생산자와 소비자는 지점 간 요청, 메시지 큐, 구독 주제 또는 이벤트 버스와 같은 다양한 전송 채널을 사용하여 메시지를 교환합니다. 이러한 전송 채널은 메시지 통신 패턴을 구현할 때 유용하게 하는 특성들을 가지고 있습니다. 생산자와 소비자가 메시지를 교환할 때 종속성이 나타나며, 이를 결합(coupling)이라고 합니다.

 

 

 

동기식 통신

 

 

동기식 통신은 생산자가 프로세싱 로직을 계속하기 전에 생산자가 소비자에게 메시지를 보내고 응답을 기다리는 메시지 통신을 의미합니다. 지점 간 채널을 통한 동기식 통신의 예는 HTTP 클라이언트가 HTTP 서비스에 요청을 보내고, 서비스가 요청을 처리하기를 기다린 후 HTTP 응답에 로직을 적용하여 진행 방법을 결정하는 경우입니다.

동기식 통신 패턴은 구현하기가 더 간단하지만, 생산자와 소비자가 밀접히 결합하게 합니다. 밀접한 결합은 트래픽 스파이크에 따른 문제 및 장애가 전체 애플리케이션 내에 직접 전파되어 문제를 일으킬 수 있습니다. 예를 들어, 3계층 아키텍처 내 애플리케이션에 클라이언트 트래픽 스파이크 발생 시 웹 계층은 트래픽 스파이크를 다운 스트림 리소스 (논리 및 데이터 계층)에 대한 부담으로 해석하고 이는 갑작스러운 수요를 충족시키기 위한 확대를 하지 않게 할 수 있습니다. 마찬가지로 논리 또는 데이터 계층 내 다운 스트림 리소스 장애는 웹 계층이 클라이언트 요청에 응답하는 데 직접적인 영향을 줍니다. 애플리케이션은 폴링 또는 푸시 알림 전략과 비동기 통신을 사용하여 상태 Status spinner와 같은 동기 환경을 모방할 수 있습니다.

 

 

 

비동기식 통신

 

 

생산자가 소비자에게 메시지를 보낸 뒤 응답을 기다리지 않고 진행하는 메시지 통신을 비동기라고 합니다. 메시지 큐 채널을 통한 비동기 통신의 예는 클라이언트가 메시지를 큐에 게시하고 큐가 메시지 수신을 확인한 후 소비자가 메시지를 처리하기를 기다리지 않고 진행합니다.

 

비동기 통신 패턴은 큐, 토픽 및 이벤트 버스와 같은 전송 채널을 사용하여 구현되어 생산자와 소비자 간 결합성이 다소 느슨해집니다. 느슨한 결합은 생산자와 소비자 통신 사이에 간접적인 관계를 만들어 서로 독립적으로 작동할 수 있으므로 아키텍처의 장애 복구 능력과 트래픽 스파이크 처리 능력을 향상시킵니다. 3계층 아키텍처 예제를 사용하면 웹, 논리 및 데이터 계층 간에 메시지 큐를 도입하여 서로 독립적으로 확장할 수 있습니다. 애플리케이션 내 클라이언트 트래픽이 급증하면 웹 계층은 트래픽 급증을 처리 해야 하는 대기 열에 더 많은 메시지가 있다고 해석하지만, 로직 계층은 직접적인 영향을 받지 않고 대기 열에서 메시지를 계속 처리할 수 ​​있습니다.

 

 

 

통신 패턴에 따른 고려 사항

 

비동기식 통신 패턴이 최신 클라우드 아키텍처에 도움이 될 수 있지만 고려해야 할 사항이 있습니다. 미들웨어 추가로 인해 비동기 메시징은 단대단 프로세싱 대기 시간을 연장시킵니다. 생산자와 소비자는 미들웨어 스택에 의존하며, 이는 수요에 맞게 확장되어야 하고 장애에 대한 복원력을 요구합니다. 생산자, 소비자 및 미들웨어를 적절하게 구성하여 메시지가 손실되지 않도록 문제를 해결하고, 올바른 작동을 위해 더 많은 모니터링이 필요하며, 문제 해결 및 진단을 위해 여러 개의 로그를 상관시켜야 합니다.

 

Amazon MQMazon Kinesis,  Amazon Simple Queue Service(SQS), Mazon Simple Notification Service(SNS) 및  Amazon EventBridge는 비동기 메시징 패턴을 구현하는 데 사용할 수 있는 고 가용성, 대규모, 장애 방지 관리 서비스입니다. AWS 메시징 페이지에서 이 서비스와 무료 새 디지털 코스인 Architecting Serverless Solutions 의 서버리스 아키텍처로의 통합에 대해 알아보실 있습니다. AWS Event-Driven Architecture에 방문해 메시징 패턴을 적용하여 이벤트 중심 솔루션을 구축하는 방법에 대해 배워보십시오.

 

 

 

원문 URL: https://aws.amazon.com/ko/blogs/architecture/introduction-to-messaging-for-modern-cloud-architecture/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.