Microsoft AZ-204: Azure 이벤트 기반 및 메시지 솔루션 — 학습 가이드

다음의 일부입니다: Microsoft Azure Developer Associate AZ-204 — 학습 가이드. 검증된 답안으로 연습하기: Microsoft 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.

개요

Azure의 이벤트 및 메시징 포트폴리오는 서로를 보완하는 네 가지 서비스로 구성됩니다: 반응형 이벤트 처리를 위한 Event Grid, 대규모 스트리밍 수집을 위한 Event Hubs, 엔터프라이즈 메시징 및 워크플로 조정을 위한 Service Bus, 모바일 푸시를 위한 Notification Hubs. 이 서비스들을 완전히 익히려면 각 서비스의 핵심 추상화, 전달 및 재시도 의미 체계, 확장 모델을 알아야 하며, pub/sub, 명령 처리, 원격 분석 데이터 수집, 디바이스 또는 사용자 알림과 같은 일반적인 애플리케이션 패턴에서 어떤 서비스를 선호해야 하는지 이해해야 합니다.

Event Grid: 토픽, 구독, 스키마, 필터링 및 데드레터링

Event Grid는 개별 이벤트를 위한 완전 관리형 푸시 기반 pub/sub 패브릭입니다. 게시자는 이벤트를 토픽으로 보내고, 구독자는 토픽에 이벤트 구독을 등록하여 HTTPS 웹 후크, Azure Functions, Logic Apps, Service Bus, Storage Queues, Event Hubs와 같은 지원되는 처리기에서 일치하는 이벤트를 수신합니다. Event Grid는 두 가지 게시자 모델을 정의합니다. 시스템 토픽은 구독 또는 리소스 그룹 내에서 이벤트를 게시하는 자사 Azure 서비스를 나타내는 Azure 관리형 토픽 리소스입니다(예: Storage Blob 생성, Key Vault 비밀 순환 또는 Resource Manager 이벤트). 사용자 지정 토픽은 애플리케이션이 이벤트를 게시하는 사용자가 생성한 토픽 엔드포인트로, 자체 서비스 및 도메인 전반에 걸쳐 이벤트 기반 패턴을 활성화합니다. 시스템 토픽은 게시자 코드가 필요 없으며 Azure 리소스를 반응형 처리기에 연결하는 작업을 단순화합니다. 반면 사용자 지정 토픽은 이벤트 계약 및 수명 주기에 대한 완전한 제어권을 제공합니다.

Event Grid 이벤트는 네이티브 Event Grid 스키마 또는 CloudEvents v1.0 사양을 사용할 수 있습니다. Event Grid 스키마에서 각 이벤트는 id(고유 식별자), eventType(작업), subject(필터링을 지원하는 계층적 경로), eventTime(UTC), data(페이로드), dataVersion, metadataVersion, topic을 포함합니다. CloudEvents는 id, source, type, time, subject, data와 같은 표준화된 속성 집합을 제공합니다. CloudEvents를 선택하면 플랫폼 간 상호 운용성이 쉬워집니다. Event Grid 스키마는 Azure에서 발생한 이벤트와의 일관성을 유지하고 subject에 대한 풍부한 필터링 기능을 제공합니다.

이벤트 구독은 라우팅, 전달 옵션 및 필터를 정의합니다. 기본 필터에는 이벤트 유형 포함 및 subject 접두사/접미사(subjectBeginsWith, subjectEndsWith)가 있으며, 이는 계층적 리소스 이름 지정에 효율적입니다. 고급 필터는 최상위 이벤트 또는 데이터 내의 필드를 기준으로 일치시킵니다(예: 숫자 범위 비교, 대/소문자를 구분하지 않는 문자열 포함, 부울 같음, 배열 포함). 필터를 조합하여 정밀한 팬아웃 제어를 구현하고 다운스트림 작업 및 이그레스(egress)를 최소화할 수 있습니다.

전달은 최소 한 번(at-least-once) 전달 의미 체계를 사용하는 푸시 방식입니다. Event Grid는 지수 백오프를 사용하여 재시도합니다. 최대 재시도 횟수와 이벤트 TTL(Time-To-Live)을 구성할 수 있습니다. 전달이 최종적으로 실패하거나 이벤트가 만료되면 Event Grid는 구독에 지정한 Blob Storage 컨테이너로 이벤트를 데드레터(dead-letter) 처리할 수 있습니다. 데드레터링은 감사 또는 재처리를 위해 페이로드와 메타데이터를 보존합니다. 필요한 경우 별도의 프로세스를 사용하여 이벤트를 복원하고 재생할 수 있습니다. 웹 후크 엔드포인트는 소유권을 증명하기 위해 유효성 검사 핸드셰이크에 참여하며, 제한된 네트워크의 경우 퍼블릭 노출이 필요 없고 Azure AD 기반 권한 부여를 사용할 수 있는 관리형 Azure 엔드포인트(Functions, Service Bus, Storage Queue)를 선호할 수 있습니다.

Event Hubs: 파티션, 소비자 그룹, 처리량, 캡처 및 안정적인 소비

Event Hubs는 대용량 원격 분석 및 로그 스트림을 짧은 대기 시간으로 수집합니다. 데이터는 독립적이고 순서가 지정된 커밋 로그(commit log)인 파티션에 추가됩니다. 파티션은 생성 시 처리량을 병렬화하기 위해 선택됩니다. 생산자는 키별 순서를 보존하기 위해 파티션 키를 할당하고, 서비스는 이 키를 해시하여 파티션에 할당합니다. 여러 판독기가 파티션을 병렬로 처리할 수 있으며, 파티션 내에서는 순서가 보장됩니다.

소비자 그룹은 스트림에 대한 독립적인 뷰를 제공하여, 서로 다른 처리 애플리케이션이 서로 간섭하지 않고 각자 자신의 위치를 유지할 수 있도록 합니다(예: 실시간 이상 감지기와 보관 파이프라인). 판독기를 수평적으로 확장하려면 파티션 소유권 분산이 필요합니다. SDK의 EventProcessorClient는 인스턴스 간의 파티션 할당 및 재조정을 조정합니다.

표준(Standard) 계층의 처리량 단위(TU)는 용량을 정의합니다. 각 TU는 수신 및 송신 대역폭 할당량을 부여합니다. 자동 확장(Auto-inflate) 기능은 최고 사용량에 맞춰 TU를 자동으로 확장할 수 있습니다. 프리미엄(Premium) 계층은 전용 컴퓨팅과 예측 가능한 대기 시간을 제공하는 처리 단위를 사용합니다. 제한(throttling) 메트릭을 모니터링하여 프로비저닝이 적절한지 확인합니다. Event Hubs는 동일한 엔드포인트에서 Kafka 프로토콜을 지원하므로, 브로커를 직접 실행하지 않고도 Kafka 클라이언트의 리프트 앤 시프트(lift-and-shift)를 단순화할 수 있습니다.

생산자는 AMQP 또는 HTTPS를 사용할 수 있습니다. AMQP(443 포트의 AMQP-over-WebSockets 포함)는 다중화된 영구 연결과 효율적인 일괄 처리를 제공하며, 송수신 모두에 권장됩니다. HTTPS는 단순하거나 간헐적인 전송에는 적합하지만 수신은 지원하지 않습니다. 롱폴링(long-polling)은 사용할 수 없으며 효율성과 흐름 제어를 포기해야 합니다. 제한된 기업 네트워크에서는 AMQP-over-WebSockets를 사용하면 일반적인 아웃바운드 프록시를 통과하면서도 성능을 유지할 수 있습니다.

검사점 설정(Checkpointing) 및 오프셋 관리는 정확성을 위해 매우 중요합니다. 각 이벤트는 파티션별로 시퀀스 번호와 오프셋을 가집니다. 수신기는 스트림을 따라 진행하며, 배치를 성공적으로 처리한 후에는 일반적으로 EventProcessorClient를 통해 Azure Blob Storage 컨테이너와 같은 영구 스토리지에 자신의 위치를 검사점으로 저장합니다. 재시작 또는 장애 조치 시, 프로세서는 마지막 검사점부터 다시 시작하여 멱등성(idempotent) 핸들러를 통해 최소 한 번 이상(at-least-once) 처리를 달성합니다. 검사점이 없으면 소비자는 기본 위치(가장 최신 또는 가장 오래된)에서 시작하여 이벤트를 재처리하거나 건너뛸 위험이 있습니다.

캡처(Capture)는 구성 가능한 시간 또는 크기 창에 따라 일괄 처리된 추가 전용(append-only) Avro 파일을 Azure Blob Storage 또는 Azure Data Lake Storage Gen2에 자동으로 기록하여 서버 측 보관 기능을 제공합니다. 이를 통해 콜드 경로(cold-path) 분석을 위한 사용자 지정 일괄 처리기를 만들 필요가 없어지며, 다운스트림 도구(Spark, Synapse)가 캡처 파이프라인에 대해 정확히 한 번(exactly-once) 의미 체계를 갖는 불변의 스트림 세그먼트를 사용할 수 있게 됩니다.

Service Bus 및 Queue Storage: 명령, 워크플로, 세션 및 포이즌 메시지 처리

Service Bus는 풍부한 전송 보장이 필요한 명령, 워크플로, 통합 시나리오를 위한 엔터프라이즈급 메시지 브로커입니다. 큐는 지점 간 메시징을 구현하며, 하나의 경쟁 소비자가 각 메시지를 수신합니다. 구독이 있는 토픽은 게시/구독(pub/sub)을 지원합니다. 게시자는 토픽으로 메시지를 보내고, 독립적인 구독은 규칙에 따라 복사본을 수신합니다. 구독 규칙은 SQL 필터, 상관관계 필터 또는 부울 true 필터가 될 수 있으며, 메시지별 포함 여부를 계산하고 작업을 통해 메시지 속성을 추가하거나 수정할 수 있습니다.

세션은 관련된 메시지에 대해 순서가 보장되고 배타적인 처리를 제공합니다. 서로 관련된 메시지(예: 주문 123의 모든 단계)에 SessionId를 할당합니다. 수신자는 세션 잠금을 수락하고 해당 세션의 메시지를 도착 순서대로 처리하며, 선택적 세션 상태를 유지한 후 다음 소비자가 소유권을 가질 수 있도록 세션을 해제합니다. 이는 대규모 FIFO를 위한 선호되는 패턴입니다. 세션이 없으면 경쟁 소비자 간에 순서가 보장되지 않습니다.

Service Bus는 PeekLock 및 ReceiveAndDelete 모드를 지원합니다. PeekLock은 안정성을 위한 기본 모드입니다. 소비자는 잠금 기간 동안 메시지를 잠그고 처리한 다음 Complete로 처리 완료합니다. 처리에 실패하면 소비자는 Abandon(메시지를 다시 사용 가능하게 만듦), Defer(시퀀스 번호를 사용하여 나중에 검색하도록 연기) 또는 Dead-letter(이유 및 오류 설명과 함께 엔터티의 별도 배달 못한 편지 하위 큐로 이동)를 수행할 수 있습니다. ReceiveAndDelete는 수신 즉시 메시지를 제거하여 안정성을 처리량과 맞바꿉니다.

주요 속성은 수명 주기를 제어합니다. TTL(Time to Live)은 엔터티 기본값으로 설정하고 메시지별로 재정의할 수 있으며, 만료된 메시지는 구성에 따라 배달 못한 편지 큐로 이동되거나 삭제됩니다. 잠금 기간은 메시지가 처리되는 동안 잠겨 있는 시간을 제어합니다. SDK는 최대 한도 내에서 장기 작업에 대한 잠금을 자동으로 갱신할 수 있습니다. 최대 배달 횟수는 큐 또는 구독별로 구성됩니다. 이 횟수만큼 배달 시도(Abandon 또는 잠금 손실)가 실패하면 메시지는 자동으로 배달 못한 편지 큐(DLQ)로 이동됩니다. 운영자는 진단 또는 수정 로직을 사용한 재처리를 위해 DLQ의 메시지를 처리합니다.

Azure Queue Storage는 REST 인터페이스를 갖춘 더 간단하고 대규모로 확장 가능한 큐 서비스로, 기본적인 분리, 높은 팬아웃, 비용에 민감한 워크로드에 가장 적합합니다. 이 서비스는 한 번 이상 전송, 처리 중 메시지를 숨기는 표시 제한 시간, 메시지별 TTL(기본 7일, 만료되지 않도록 구성 가능)을 제공합니다. 개별 메시지 크기는 제한되며, 세션, 트랜잭션, 순서 보장, 중복 검색, 배달 못한 편지 하위 큐, 고급 필터와 같은 기능은 사용할 수 없습니다. 간단한 백그라운드 작업과 저비용으로 매우 높은 처리량이 필요한 경우 Queue Storage를 선택하십시오. 정교한 라우팅(토픽/구독), 세션을 통한 FIFO, 예약된 배달, 지연, 엔터티 간 트랜잭션, 중복 검색 기간, AMQP 지원이 필요하거나 통합 안정성 및 거버넌스가 중요한 경우 Service Bus를 선택하십시오. 일반적인 패턴은 Event Grid 또는 Queue Storage를 통해 경량 이벤트를 팬인(fan in)하고, Service Bus에서 비즈니스에 중요한 명령과 상태 전환을 조정하는 것입니다.

Notification Hubs: 푸시 라우팅 및 플랫폼 자격 증명 관리

Notification Hubs는 대규모 디바이스 등록을 관리하고 Apple(APNs), Android(FCM), Windows(WNS) 및 기타 플랫폼으로 타겟 알림을 라우팅하는 크로스 플랫폼 푸시 엔진입니다. 애플리케이션은 태그 및 태그 식을 사용하여 디바이스를 등록하므로, 정밀한 대상 그룹 선택(예: user:42 AND region:emea OR topic:promotions)이 가능합니다. 템플릿을 사용하면 플랫폼별 렌더러가 확장하는 단일 로컬라이즈된 페이로드를 보낼 수 있어 서버 로직을 줄이고 최소한의 백엔드 분기로 디바이스별 개인화를 지원합니다. 설치(Installation) 모델은 플랫폼 핸들, 태그, 템플릿을 디바이스당 단일 리소스에 캡슐화하여 디바이스 수명 주기 관리를 간소화합니다.

플랫폼 자격 증명 관리는 안정적인 전송의 핵심입니다. APNs의 경우, 인증서 기반 또는 토큰 기반 자격 증명(Key ID, Team ID, .p8 토큰 포함)을 업로드하고 허브 또는 네임스페이스별로 샌드박스 또는 프로덕션 엔드포인트를 선택하여 환경을 분리합니다. FCM의 경우, 적절한 서버 자격 증명(HTTP v1의 경우 OAuth2 범위를 가진 Google 서비스 계정 사용)을 구성합니다. WNS의 경우, 앱을 등록하여 패키지 SID와 클라이언트 시크릿을 얻습니다. 자격 증명은 주기적으로 순환됩니다. 순환을 예약하고 피드백 채널을 모니터링하여 유효하지 않은 디바이스 핸들을 확인하세요. Notification Hubs는 앱 서버로부터의 허브 수준 인증을 위해 SAS를 사용하며, Azure AD 역할은 관리 작업을 보호합니다. 태그 지정 규칙을 사용하여 다중 테넌트 앱을 분할하고, 예약 또는 일괄 푸시로 전송 속도를 조절하여 플랫폼 할당량을 준수하세요.

실제 문제 시나리오

스타벅스는 주문이 준비되면 고객에게 알리고, 바리스타 워크플로우 단계를 안정적으로 처리하며, 사전 예방적 유지보수를 위해 장비 텔레메트리를 분석해야 하는 글로벌 모바일 주문 경험을 출시하고 있습니다.

  1. Event Grid로 이벤트 기반 주문 라이프사이클 연결
  1. Service Bus 토픽과 세션으로 바리스타 워크플로우 조정
  1. Event Hubs로 장비 텔레메트리 수집 및 보관
  1. Notification Hubs로 타겟 푸시 알림 전송
  1. 관찰 가능성 및 복원력 보장

이 아키텍처는 관심사를 명확하게 분리합니다. Event Grid는 반응형 오케스트레이션을 주도하고, Service Bus는 워크플로우의 정확성과 순서를 보장하며, Event Hubs는 대규모의 지속적인 텔레메트리를 처리하고, Notification Hubs는 최소한의 백엔드 복잡성으로 정확하고 플랫폼에 특화된 고객 알림을 전달합니다.


Azure API 관리 · 모든 도메인 · Azure 캐싱

이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

시험 합격하기 →

Microsoft 찾아보기 →

Related guides

올인원 액세스

하나의 구독. 모든 시험.

모든 플랜은 무제한 답변 검색, 모의고사, AI 해설, 전체 자료 라이브러리를 20개 이상의 언어로 잠금 해제합니다.

월간
24.87
Just €0.83/day
모든 포함:
  • 무제한 답변 검색
  • 무제한 모의고사
  • AI 기반 해설
  • 전체 자료 라이브러리
  • 20개 이상의 언어
  • 주간 콘텐츠 업데이트
  • 보상 및 추천
  • 우선 지원
무료 체험 시작

신용카드 필요 없음*

최고의 가치
12개월
179.87
Just €0.49/daySave 40%
모든 포함:
  • 무제한 답변 검색
  • 무제한 모의고사
  • AI 기반 해설
  • 전체 자료 라이브러리
  • 20개 이상의 언어
  • 주간 콘텐츠 업데이트
  • 보상 및 추천
  • 우선 지원
무료 체험 시작

신용카드 필요 없음*

✓ 무료 플랜 포함 · ✓ 언제든지 취소 가능 · ✓ 모든 플랜은 전체 제품을 잠금 해제합니다