게시/구독 메시징이란 무엇인가요?
게시-구독 메시징 또는 pub/sub 메시징은 개발자가 클라우드에서 고도의 기능과 복잡한 구조의 애플리케이션을 쉽게 구축할 수 있게 해 주는 비동기식 커뮤니케이션 모델입니다. 최신 클라우드 아키텍처에서는 애플리케이션이 서비스라고 불리는 더 작고 독립적인 빌딩 블록으로 분리됩니다. 게시/구독 메시징은 이러한 분산 시스템을 위한 즉각적인 이벤트 알림을 제공합니다. 이 메시징은 독립적인 소프트웨어 모듈 간의 확장 가능하고 신뢰적인 커뮤니케이션을 지원합니다.
게시/구독 메시징은 어떻게 작동하나요?
게시/구독 시스템에는 네 가지 주요 구성 요소가 있습니다.
메시지
메시지는 발신자로부터 수신자에게 전송되는 통신 데이터입니다. 메시지 데이터 유형은 문자열부터 텍스트, 비디오, 센서 데이터, 오디오, 기타 디지털 콘텐츠 등을 나타내는 복잡한 객체에 이르기까지 다양합니다.
주제
모든 메시지에는 관련 주제가 있습니다. 주제는 보내는 사람과 받는 사람 사이의 중간 채널 역할을 합니다. 주제는 해당 주제에 대한 메시지에 관심이 있는 수신자 목록을 유지 관리합니다.
구독자
구독자는 메시지의 수신자입니다. 구독자는 관심 있는 주제에 등록(또는 구독)해야 합니다. 구독자는 다양한 업무 기능을 수행하거나 메시지를 병렬로 사용하여 다른 작업을 수행할 수 있습니다.
게시자
게시자는 메시지를 보내는 구성 요소입니다. 게시자는 주제에 대한 메시지를 작성하여 해당 주제의 모든 구독자에게 한 번만 전송합니다. 게시자와 구독자 간의 이러한 상호 작용은 일대일 관계입니다. 게시자는 브로드캐스팅 중인 정보를 누가 사용하고 있는지 알 필요가 없으며, 구독자는 메시지의 출처를 알 필요가 없습니다.
게시/구독 메시징 시스템의 기능은 어떤 것들이 있나요?
게시/구독 패턴을 사용하여 개발된 애플리케이션에는 별도의 애플리케이션 및 통신 로직이 있습니다. 메시징 인프라는 게시자와 구독자 간의 메시지 전송을 분리하고, 다른 구독자에게 비동기식으로 브로드캐스팅합니다.
게시/구독 통신 시스템의 주요 기능은 다음과 같습니다.
푸시 전송
게시/구독 메시징에서는 메시지가 메시지 주제에 게시될 때 비동기 이벤트 알림을 즉시 푸시합니다. 메시지를 사용할 수 있게 되면 구독자가 알림을 받습니다.
다중 전송 프로토콜
주제는 메시지 대기열, 서버리스 함수, HTTP 서버, 이메일 주소 등 여러 유형의 엔드포인트에 연결합니다.
AWS를 사용한 메시지 대기열 구현에 대해 읽어보기 »
팬아웃
이 상황은 메시지가 주제로 전송된 후 복제되어 여러 엔드포인트로 푸시될 때 발생합니다. 팬아웃은 비동기 이벤트 알림을 제공하므로 병렬 처리가 가능합니다.
필터링
필터링 기능을 사용하면 구독자가 메시지 필터링 정책을 생성할 수 있습니다. 이를 통해 해당 주제에 게시된 모든 메시지를 수신하는 것이 아니라, 관심 있는 알림만 수신할 수 있습니다.
멀티플렉싱
경우에 따라 게시자가 구독자가 될 수도 있습니다. 메시지 스트림을 멀티플렉싱하고, 내부적으로 일관된 방식으로 서로 연결되는 여러 시스템을 만들 수 있습니다.
게시/구독 메시징의 이점은 무엇인가요?
게시/구독 모델을 사용하면 여러 최신 애플리케이션에 필요한 이벤트 기반 아키텍처를 구축할 수 있습니다. 이벤트를 사용하여 분리된 서비스 간에 서로 트리거하고 통신할 수 있습니다. 이벤트란 쇼핑 카트에 항목이 추가되는 것과 같은 상태의 변화 또는 업데이트를 말합니다.
게시/구독 메시징은 실시간 이벤트에 기반한 애플리케이션을 구축하는 개발자들에게 큰 이점을 제공합니다. 아래에는 몇 가지 이점이 요약되어 있습니다.
폴링 제거
메시지 주제를 사용하면 정보와 업데이트가 푸시 기반으로 즉시 전송되므로, 메시지 소비자가 새로운 정보 및 업데이트를 주기적으로 확인하거나 폴링할 필요가 없습니다. 따라서 응답 시간이 단축되며, 지연이 허용되지 않는 시스템에서 특히 문제가 될 수 있는 전송 지연 시간이 줄어듭니다.
동적 타겟팅
게시/구독 패턴을 사용하면 서비스를 보다 쉽고 자연스럽게 검색할 수 있으며, 오류 발생 가능성이 줄어듭니다. 애플리케이션이 메시지를 전송할 수 있도록 피어 명단을 유지 관리하는 것이 아니라, 게시자는 그저 주제에 메시지를 게시합니다. 그러면 관심 있는 사용자가 엔드포인트에서 해당 주제를 구독하고 이러한 메시지를 받기 시작합니다. 여러 구독자가 변경되거나 업그레이드되거나 사라질 수 있으며 그에 따라 시스템이 동적으로 조정됩니다.
독립적으로 분리 및 확장
게시/구독 방식은 소프트웨어의 유연성을 높입니다. 게시자와 구독자는 분리되어 있으며 서로 독립적으로 작동하므로, 게시자와 구독자를 독립적으로 개발하고 확장할 수 있습니다. 원하는 경우 이달에는 주문을 특정 방식으로 처리하고 다음 달에는 다른 방법으로 처리하도록 결정할 수도 있습니다. 게시/구독 방식에서는 모든 구성 요소가 연동하여 작동하는 방식을 유연하게 조정할 수 있기 때문에, 기능을 추가하거나 변경해도 시스템 전체에 그 파급 효과가 전달되지 않습니다.
통신 간소화
통신과 통합을 위한 코드는 작성하기 가장 까다로운 코드 중 하나입니다. 게시/구독 모델은 메시지 주제에 대한 단일 연결을 사용하고 모든 지점 간 연결을 없앰으로써 복잡성을 줄입니다. 주제에서 구독을 관리하여 어떤 메시지를 어떤 엔드포인트로 전송할지 결정합니다. 콜백 횟수가 적으므로 결합이 느슨해지고, 코드를 유지 관리하고 확장하기가 쉬워집니다.
내구성
게시/구독 메시징 서비스는 여러 서버에 동일한 메시지의 복사본을 저장하여 매우 높은 내구성과 한 번 이상의 전송을 보장하는 경우가 많습니다.
보안
메시지 주제는 콘텐츠를 게시하려는 애플리케이션을 인증하며, 네트워크를 통해 전송 중인 메시지를 암호화된 엔드포인트를 사용하여 보호할 수 있도록 합니다.
게시/구독 메시징의 사용 사례는 어떤 것들이 있나요?
아래에는 게시/구독 메시징 시스템의 일반적인 사용 사례가 요약되어 있습니다.
병렬 비동기 처리 작업 수행
메시지 주제에 게시된 이벤트는 필요하지만 서로 관련이 없는 여러 작업을 여러 작업자가 동시에 수행하도록 트리거할 수 있습니다.
애플리케이션 및 시스템 알림 전송
영향을 받는 애플리케이션 구성 요소와 사용자에게 중요한 업데이트 및 비동기 이벤트 알림을 즉시 전송합니다.
비동기 워크플로 관리
애플리케이션 간에 이벤트를 전달하거나, 데이터 스토어 간에 데이터를 이동하거나, 분산 캐시를 새로 고치거나, 비즈니스 시스템에서 레코드를 업데이트합니다.
워크로드 밸런싱
대량 처리를 위한 작업을 배치로 구성하거나, 큰 작업을 여러 개의 작은 작업으로 나누고 메시지 대기열을 사용하여 작업을 여러 작업자에게 배분합니다.
여러 시스템에 로깅
나중에 분석할 이벤트를 기록하거나, 운영 및 보안에 필요한 로그를 캡처하거나, 백업 또는 규정 준수 요구 사항을 충족하기 위해 아카이빙할 수 있습니다.
복제에 팬아웃 사용
프로덕션 환경과 개발 환경 간에 데이터를 복제하거나, 라이브 데이터를 개발하고 테스트합니다.
서버리스 애플리케이션 조정
서버리스 애플리케이션의 구성 요소를 조정하는 분산 함수 및 메시지 대기열에 비동기 이벤트 알림을 팬아웃합니다.
IoT 데이터 스트리밍
게시/구독 패턴은 사물 인터넷(IoT) 디바이스의 매우 강력한 상호 작용 방식입니다. 디바이스는 데이터를 백엔드 시스템에 또는 서로 간에 손쉽게 스트리밍할 수 있습니다.
메시지 대기열과 게시/구독 메시징의 차이점은 무엇인가요?
메시지 대기열은 서버리스 및 마이크로서비스 아키텍처에 사용되는 또 다른 비동기식 통신 형태입니다. 메시지는 처리되고 삭제되기 전까지 대기열에 저장됩니다. 메시지 대기열을 사용하려면 발신자가 메시지를 교환하는 상대방을 알아야 합니다. 메시지 순서 지정으로 인해 시스템에서 병목 현상이 발생할 수도 있습니다.
반면, 게시/구독 패턴을 사용하면 유연성을 높일 수 있습니다. 관심 있는 여러 구독자가 동시에 비동기식으로 메시지를 수신할 수 있습니다. 게시자는 구독자가 누구인지 알 필요가 없습니다. 메시지 처리는 더 안정적이고 확장하기가 용이하며, 더 나은 성능을 제공합니다.
AWS는 게시/구독 메시징 요구 사항을 어떻게 지원하나요?
Amazon Web Services(AWS)에서는 서로 다른 게시/구독 애플리케이션에 사용할 수 있는 두 가지 서비스를 제공합니다.
게시/구독 API
AWS AppSync는 애플리케이션 개발을 간소화하는 서버리스 GraphQL 및 게시/구독 API를 생성하기 위한 완전관리형 서비스입니다. 단일 엔드포인트를 생성하여 데이터를 안전하게 쿼리, 업데이트 또는 게시할 수 있습니다.
AWS AppSync로 구축된 게시/구독 API를 사용하여 서버리스 WebSockets 연결을 통해 실시간 데이터 업데이트를 구독 API 클라이언트에 게시할 수 있습니다. 다양한 사용 사례에 대한 몰입력 있는 실시간 경험을 만들어낼 수 있습니다. 예를 들어 최신 경기 점수, 재무 데이터, 고객 참여 이벤트, 투표, 위치 인식 기능(예: 지도 및 푸시 알림 마케팅) 등을 제공할 수 있습니다.
다음은 AWS AppSync를 사용하여 수행할 수 있는 몇 가지 작업입니다:
- 한 번의 네트워크 요청을 통해 하나 이상의 소스 또는 마이크로서비스의 데이터에 액세스
- 오프라인 데이터 동기화, 버저닝, 충돌 해결을 통해 오프라인에서도 데이터와 상호 작용하고 데이터를 업데이트
- API 요청에 대한 요금 및 연결된 클라이언트로 전송되는 실시간 메시지에 대한 요금만 지불
게시/구독 메시징
Amazon Simple Notification Service(SNS)에서는 게시/구독 메시징 모델을 사용하여 애플리케이션을 손쉽게 구축할 수 있습니다. 확장 가능하고 비용 효율적인 방법으로 애플리케이션에서 고객 또는 애플리케이션으로 메시지를 전송할 수 있습니다.
Amazon SNS는 다음과 같은 몇 가지 기능을 제공합니다:
- 분산된 시스템, 마이크로서비스 및 이벤트 중심의 서버리스 애플리케이션 간의 스루풋이 높은 푸시 기반의 다대다 메시징
- 메시지 암호화 및 트래픽 프라이버시
- 분석, 컴퓨팅, 컨테이너, 데이터베이스, 사물 인터넷(IoT), 기계 학습(ML), 보안, 스토리지와 같은 AWS 카테고리 전반에 걸친 팬아웃 기능
지금 무료 AWS 계정을 만들어 AWS에서 게시/구독 사용을 시작하세요.