Semua soal system design

Design Webhook Delivery System

Deliver events reliably to third-party endpoints with retries, backoff, ordering, and at-least-once guarantees.

Prompt latihan

  1. Problem Statement, Functional Requirements, and Scale Assumptions

    Tentukan ruang lingkup sistem pengiriman webhook: registrasi langganan event, pengiriman callback HTTP ke endpoint subscriber, dan retry saat gagal. Kecualikan secara eksplisit event sourcing, stream processing, dan UI untuk manajemen webhook dari desain awal. Nyatakan asumsi skala awal sebelum mengusulkan komponen apa pun.

  2. Non-Functional Requirements

    Tentukan NFR utama: target latensi pengiriman untuk percobaan pengiriman pertama, semantik jaminan pengiriman at-least-once, dukungan idempotensi untuk receiver, dan rate limiting pada request keluar untuk menghindari membanjiri receiver yang lambat atau sedang pulih. Putuskan jaminan mana yang kritis-produk versus mana yang dapat eventually consistent.

  3. Quantitative Analysis

    Estimasikan event per detik yang di-ingest, ukuran payload rata-rata, faktor amplifikasi retry (berapa banyak percobaan pengiriman tambahan per event rata-rata), distribusi lag pengiriman, dan kebutuhan storage untuk log pengiriman. Turunkan laju request HTTP keluar termasuk retry dan nilai kapasitas delivery worker puncak yang dibutuhkan.

  4. API Design

    Tentukan operasi API untuk mendaftarkan langganan endpoint webhook, mendaftar langganan, mengambil status pengiriman untuk event tertentu, memutar ulang pengiriman yang gagal, dan mengelola filter tipe event. Sertakan bentuk request dan response, manajemen secret langganan untuk HMAC signing, dan kasus error untuk endpoint tidak valid dan langganan yang dinonaktifkan.

  5. High-Level Design

    Usulkan komponen utama: lapisan ingestion event, dispatch queue, delivery worker, retry scheduler, delivery log store, dan subscription registry. Jelaskan bagaimana sebuah event mengalir dari ingestion melalui dispatch, percobaan pengiriman, penanganan sukses atau gagal, dan penjadwalan retry. Identifikasi jalur pengiriman panas dan di mana kegagalan bercabang ke jalur retry.

  6. Additional High-Level Design Prompts

    Perjelas strategi filtering dan transformasi event Anda (bagaimana subscriber memilih tipe event dan apakah transformasi payload didukung), bagaimana isolasi multi-tenant bekerja di delivery worker pool (mencegah receiver lambat satu tenant memblokir pengiriman tenant lain), dan bagaimana penilaian kesehatan endpoint webhook serta circuit breaking mengurangi percobaan retry yang sia-sia terhadap receiver yang konsisten gagal.

  7. Deep Dives

    Deep dive ke tiga area: (1) Retry dengan exponential backoff, bandingkan strategi full jitter versus decorrelated jitter dan dampaknya terhadap thundering herd saat pemulihan; rancang batas retry maksimum dan dead letter queue untuk pengiriman yang gagal permanen; bahas retry budget per-receiver untuk mencegah satu receiver lambat mengonsumsi seluruh kapasitas retry; (2) Jaminan pengiriman, jelaskan semantik at-least-once dan mengapa exactly-once delivery mustahil tanpa kerja sama receiver; rancang pembuatan idempotency key (event ID plus attempt number) dan deduplikasi sisi-receiver menggunakan idempotency store; bahas workaround praktis untuk receiver yang tidak dapat mengimplementasikan deduplikasi; (3) Keamanan webhook, rancang HMAC-SHA256 payload signing dengan secret per-langganan; jelaskan pencegahan replay attack menggunakan window timestamp (tolak request yang lebih tua dari 5 menit); bahas pertimbangan IP allowlisting dan mutual TLS untuk subscriber keamanan-tinggi.

  8. Final Review Handoff Readiness

    Ringkas keputusan desain end-to-end: strategi retry yang dipilih, level jaminan pengiriman, desain idempotency key, pendekatan HMAC signing, konfigurasi circuit breaker untuk receiver tidak sehat, dan model isolasi multi-tenant. Soroti dua failure mode terbesar yang tersisa (receiver mati permanen dan network partition saat pengiriman) dan berikan rencana rollout dengan feature flag untuk mengaktifkan retry dan circuit breaking secara bertahap.

Preview solusi

Jalur referensi Solusi Webhook Delivery System adalah materi belajar yang bersifat read-only. Gunakan untuk membandingkan desain Anda sendiri dengan sebuah jalur referensi yang ringkas sebelum memulai latihan atau setelah Anda menyelesaikan satu putaran. Queue pasangan event-subscription saat ingestion sehingga delivery worker terdecouple (terpisah) dari thr…

Lihat paket belajar di pricing