0Pricing
Cloud & IT Cert Prep · Pelajaran

Event Grid dan Arsitektur Berbasis Peristiwa

Rutekan peristiwa dari layanan Azure dan penerbit kustom menggunakan Event Grid, sebarkan ke beberapa pelanggan, lalu bandingkan Event Grid dengan Event Hubs dan Service Bus.

Event Grid dan Arsitektur Berbasis Peristiwa adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa Itu Arsitektur Berbasis Peristiwa?

Dalam arsitektur berbasis peristiwa, komponen berkomunikasi dengan menerbitkan dan berlangganan peristiwa, bukan dengan memanggil satu sama lain secara langsung. Sebuah komponen (produsen) menghasilkan peristiwa ketika sesuatu yang penting terjadi — sebuah file diunggah, sebuah pesanan dibuat, atau perangkat mengirimkan pembacaan. Komponen lain (pelanggan) merespons peristiwa yang relevan bagi mereka secara mandiri dan asinkron. Hal ini memisahkan produsen dari konsumen, sehingga meningkatkan skalabilitas, ketahanan, dan kemudahan pemeliharaan.

Apa Itu Azure Event Grid?

Azure Event Grid adalah layanan perutean peristiwa yang dikelola sepenuhnya dan mengirimkan peristiwa dari sumber (penerbit) ke penangan (pelanggan) menggunakan model push. Event Grid dirancang untuk peristiwa reaktif dan diskret — sesuatu berubah dan Anda perlu segera meresponsnya. Layanan ini menjamin pengiriman setidaknya sekali dengan percobaan ulang otomatis, mendukung pemfilteran agar pelanggan hanya menerima peristiwa yang relevan, serta dapat merutekan peristiwa ke Azure Functions, Logic Apps, webhook, Event Hubs, dan antrean Service Bus.

Topik Event Grid dan Langganan Peristiwa

Penerbit mengirimkan peristiwa ke topik Event Grid. Pelanggan membuat langganan peristiwa pada suatu topik dengan menentukan titik akhir dan aturan filter opsional. Satu topik dapat memiliki beberapa langganan — setiap langganan menerima salinan mandiri dari peristiwa yang cocok. Layanan Azure seperti Blob Storage, Resource Manager, Service Bus, dan Azure Container Registry merupakan sumber peristiwa bawaan dengan topik sistem yang tidak memerlukan konfigurasi tambahan.

# Create a custom Event Grid topic
az eventgrid topic create \
  --name MyEventTopic \
  --resource-group MyRG \
  --location eastus

# Create a subscription routing to an Azure Function
az eventgrid event-subscription create \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../providers/Microsoft.EventGrid/topics/MyEventTopic' \
  --endpoint '/subscriptions/.../providers/Microsoft.Web/sites/myFunctionApp/functions/EventHandler'

Skema Peristiwa

Peristiwa yang diterbitkan ke Event Grid mengikuti skema JSON standar dengan bidang wajib: id (pengidentifikasi unik), eventType (misalnya, Microsoft.Storage.BlobCreated), subject (jalur ke sumber daya peristiwa), eventTime (stempel waktu ISO 8601), dataVersion, dan data (payload khusus peristiwa). Event Grid juga mendukung skema CloudEvents (standar CNCF) untuk interoperabilitas dengan platform peristiwa lainnya.

// Event Grid event payload (Event Grid schema)
[
  {
    'id': 'b781910b-3000-4f19-a4c2-b6b9c4ca7a12',
    'eventType': 'Microsoft.Storage.BlobCreated',
    'subject': '/blobServices/default/containers/uploads/blobs/photo.jpg',
    'eventTime': '2025-01-15T12:30:00.000Z',
    'data': {
      'api': 'PutBlockList',
      'url': 'https://mystorageacct.blob.core.windows.net/uploads/photo.jpg',
      'contentType': 'image/jpeg',
      'contentLength': 524288
    },
    'dataVersion': '',
    'metadataVersion': '1'
  }
]

Pemfilteran Peristiwa

Langganan peristiwa mendukung pemfilteran untuk mengurangi gangguan di sisi pelanggan. Anda dapat memfilter berdasarkan jenis peristiwa (hanya menerima BlobCreated, bukan BlobDeleted), awalan atau akhiran subjek (hanya blob dalam kontainer tertentu), atau filter lanjutan pada bidang mana pun dalam data peristiwa menggunakan operator seperti StringContains, NumberGreaterThan, dan BoolEquals. Pemfilteran dilakukan di sisi server, sehingga pelanggan hanya menerima peristiwa yang sesuai dengan kriterianya.

# Subscribe to BlobCreated events for .jpg files only
az eventgrid event-subscription create \
  --name jpgImageSub \
  --source-resource-id '/subscriptions/.../storageAccounts/mystorageaccount' \
  --endpoint 'https://myfunction.azurewebsites.net/api/ProcessImage' \
  --included-event-types 'Microsoft.Storage.BlobCreated' \
  --subject-ends-with '.jpg'

Event Grid vs Event Hubs vs Service Bus

Tiga layanan Azure menangani peristiwa dan pesan — pilih berdasarkan skenario Anda. Event Grid digunakan untuk perutean peristiwa reaktif (volume rendah, diskret, dan reaktif — misalnya, notifikasi perubahan sumber daya). Event Hubs digunakan untuk streaming peristiwa berthroughput tinggi (jutaan peristiwa per detik, telemetri, dan alur big data). Service Bus digunakan untuk pengiriman pesan perusahaan dengan pengurutan, deduplikasi, pemindahan ke antrean surat mati, dan transaksi (pemrosesan pesanan, transaksi keuangan).

// Decision guide:
// Event Grid  — 'Something happened, react to it'
//               Azure resource events, webhooks, low-latency fan-out
//               Price: per event (cheap for low volume)

// Event Hubs  — 'Capture a firehose of streaming data'
//               IoT telemetry, log aggregation, real-time analytics
//               Price: per throughput unit + capture

// Service Bus — 'Reliable message delivery between services'
//               Order processing, workflow steps, dead-letter queues
//               Price: per operation + messaging units

Menerbitkan Peristiwa Kustom

Terbitkan peristiwa kustom ke topik Event Grid menggunakan permintaan HTTP POST sederhana dengan kunci akses topik tersebut. Layanan atau aplikasi apa pun yang dapat membuat permintaan HTTP dapat menerbitkan peristiwa. Dengan demikian, peristiwa dapat dengan mudah dihasilkan dari aplikasi lokal, layanan pihak ketiga, atau layanan Azure yang tidak memiliki dukungan Event Grid bawaan. Gabungkan hingga 1 MB peristiwa dalam setiap POST untuk meningkatkan efisiensi.

# Get the topic endpoint and key
TOPIC_ENDPOINT=$(az eventgrid topic show --name MyEventTopic --resource-group MyRG --query endpoint -o tsv)
TOPIC_KEY=$(az eventgrid topic key list --name MyEventTopic --resource-group MyRG --query key1 -o tsv)

# Publish a custom event
curl -X POST $TOPIC_ENDPOINT \
  -H 'Content-Type: application/json' \
  -H "aeg-sas-key: $TOPIC_KEY" \
  -d '[{
    "id": "event-001",
    "eventType": "Contoso.OrderPlaced",
    "subject": "/orders/ORD-12345",
    "eventTime": "2025-01-15T12:00:00Z",
    "data": { "orderId": "ORD-12345", "total": 99.99 },
    "dataVersion": "1.0"
  }]'

Kebijakan Surat Mati dan Percobaan Ulang

Jika upaya pengiriman peristiwa gagal (pelanggan mengembalikan HTTP non-2xx), Event Grid akan mencoba lagi menggunakan backoff eksponensial dengan jitter hingga 24 jam (dapat dikonfigurasi hingga 72 jam) dengan maksimum 30 percobaan ulang. Setelah seluruh percobaan ulang habis, Event Grid dapat memindahkan peristiwa yang tidak terkirim ke kontainer Azure Blob Storage sebagai surat mati untuk penyelidikan manual. Konfigurasikan pemindahan ke surat mati ketika pengiriman peristiwa yang andal sangat penting dan Anda perlu mengaudit atau memproses ulang peristiwa yang gagal.

# Configure dead-letter storage and retry for a subscription
az eventgrid event-subscription update \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../topics/MyEventTopic' \
  --deadletter-endpoint '/subscriptions/.../storageAccounts/mystg/blobServices/default/containers/deadletter' \
  --max-delivery-attempts 30 \
  --event-ttl 1440  # 24 hours in minutes

Ringkasan Azure Event Hubs

Azure Event Hubs adalah platform streaming data terdistribusi yang mampu menerima dan memproses jutaan peristiwa per detik. Layanan ini menggunakan model konsumen yang dipartisi — peristiwa didistribusikan ke berbagai partisi, dan setiap grup konsumen membaca peristiwa secara mandiri dengan kecepatannya sendiri. Hal ini memungkinkan beberapa konsumen memproses aliran yang sama tanpa koordinasi. Kasus penggunaan umum mencakup penyerapan telemetri IoT, agregasi log aplikasi, analisis aliran klik, dan alur data dasbor waktu nyata.

# Create an Event Hubs namespace and hub
az eventhubs namespace create \
  --name myEventHubNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az eventhubs eventhub create \
  --name telemetry \
  --namespace-name myEventHubNS \
  --resource-group MyRG \
  --partition-count 8 \
  --message-retention 3  # Days to retain events

Azure Service Bus untuk Pengiriman Pesan yang Andal

Azure Service Bus adalah perantara pesan perusahaan yang menyediakan antrean (titik ke titik) dan topik dengan langganan (terbitkan-berlangganan). Berbeda dari Event Grid (kirim dan lupakan) dan Event Hubs (streaming), Service Bus menjamin pengiriman berurutan (antrean FIFO), deteksi duplikat, antrean surat mati untuk kegagalan pemrosesan, sesi pesan untuk pemrosesan berkelompok, dan transaksi — semuanya penting untuk alur kerja keuangan dan pemrosesan pesanan.

# Create a Service Bus namespace and queue
az servicebus namespace create \
  --name myServiceBusNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az servicebus queue create \
  --name order-processing \
  --namespace-name myServiceBusNS \
  --resource-group MyRG \
  --enable-dead-lettering-on-message-expiration true \
  --max-delivery-count 10  # Move to dead-letter after 10 failed attempts

Pola Berbasis Peristiwa Praktis: Pemrosesan File

Pola berbasis peristiwa Azure yang umum: pengguna mengunggah file ke Blob Storage, yang memicu peristiwa BlobCreated ke Event Grid. Event Grid merutekan peristiwa tersebut ke Azure Function yang memproses file (mengubah ukuran gambar, mengekstrak teks, memvalidasi data), lalu menulis hasilnya ke Azure SQL Database. Jika pemrosesan gagal, peristiwa dipindahkan ke surat mati di kontainer penyimpanan. Seluruh alur ini tidak memerlukan polling dan tidak memerlukan komputasi persisten saat tidak aktif.

// Azure Function: process image on BlobCreated event
module.exports = async function (context, eventGridEvent) {
  const blobUrl = eventGridEvent.data.url;
  const blobName = eventGridEvent.subject.split('/blobs/').pop();

  context.log('Processing image:', blobName);

  // Process via Cognitive Services Vision API
  const tags = await analyzeImage(blobUrl);

  // Write metadata to Cosmos DB via output binding
  context.bindings.cosmosOutput = {
    id: blobName,
    tags,
    processedAt: new Date().toISOString()
  };

  context.log('Processing complete for:', blobName);
};

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda telah mempelajari bahwa Azure Event Grid merutekan peristiwa diskret dari penerbit ke pelanggan menggunakan pengiriman push dengan pemfilteran dan pemindahan ke surat mati, perbedaan utama antara Event Grid (peristiwa reaktif), Event Hubs (streaming), dan Service Bus (pengiriman pesan perusahaan yang andal), serta cara membangun alur berbasis peristiwa dengan merangkai peristiwa Blob Storage melalui Event Grid ke Azure Functions. Selanjutnya, kita akan mempelajari layanan Azure DevOps.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Event Grid dan Arsitektur Berbasis Peristiwa” gratis?

Ya — teks lengkap “Event Grid dan Arsitektur Berbasis Peristiwa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Event Grid dan Arsitektur Berbasis Peristiwa”?

Rutekan peristiwa dari layanan Azure dan penerbit kustom menggunakan Event Grid, sebarkan ke beberapa pelanggan, lalu bandingkan Event Grid dengan Event Hubs dan Service Bus. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Event Grid dan Arsitektur Berbasis Peristiwa” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pemicu dan Pengikatan Azure Functions
  2. Durable Functions untuk Alur Kerja Berstatus
  3. Azure Logic Apps
  4. Event Grid dan Arsitektur Berbasis Peristiwa
← Kembali ke Cloud & IT Cert Prep