EVENT-DRIVEN MICROSERVICES DOMAIN-DRIVEN-DESIGN SOFTWARE-ARCHITECTURE COLLABORATION SYSTEM-DESIGN BUSINESS-LOGIC AGILE DEVELOPMENT-WORKFLOW MODELING WORKSHOP EVENT-STORMING

Event Storming: Mengurai Kompleksitas Bisnis dan Merancang Sistem Event-Driven yang Efektif

⏱️ 10 menit baca
👨‍💻

Event Storming: Mengurai Kompleksitas Bisnis dan Merancang Sistem Event-Driven yang Efektif

Dunia pengembangan software modern semakin kompleks. Kita dituntut untuk membangun sistem yang responsif, skalabel, dan mampu berevolusi dengan cepat mengikuti kebutuhan bisnis. Konsep seperti Event-Driven Architecture (EDA) dan Microservices Architecture telah menjadi pilihan populer untuk mencapai tujuan ini. Namun, merancang sistem semacam itu tidaklah mudah. Bagaimana kita bisa memastikan semua pihak—mulai dari tim bisnis hingga developer—memiliki pemahaman yang sama tentang bagaimana bisnis bekerja dan bagaimana sistem harus meresponsnya?

Di sinilah Event Storming hadir sebagai penyelamat. Ini adalah metode workshop kolaboratif yang visual dan cepat untuk menjelajahi domain bisnis yang kompleks dan merancang arsitektur sistem yang lebih baik, terutama untuk sistem event-driven. Bayangkan sebuah sesi di mana semua orang yang terlibat dalam sebuah proyek berkumpul di depan papan tulis besar, menempelkan sticky notes, dan secara bersama-sama memetakan alur peristiwa dalam bisnis mereka. Kedengarannya menarik, bukan?

Mari kita selami lebih dalam apa itu Event Storming, mengapa penting, dan bagaimana Anda bisa menerapkannya dalam proyek Anda.

1. Apa Itu Event Storming?

Event Storming adalah teknik workshop yang dirancang oleh Alberto Brandolini untuk mengeksplorasi domain bisnis yang kompleks dengan fokus pada domain events. Ini adalah pendekatan yang sangat visual dan kolaboratif, di mana peserta dari berbagai latar belakang (bisnis, developer, QA, dll.) bekerja bersama untuk memetakan “apa yang terjadi” dalam suatu sistem.

📌 Inti dari Event Storming: Mengidentifikasi peristiwa-peristiwa penting (events) yang terjadi dalam domain bisnis dan memahami urutan serta konsekuensi dari peristiwa tersebut.

Alih-alih memulai dengan data atau fungsionalitas, Event Storming dimulai dengan peristiwa (events) karena peristiwa adalah fakta yang tidak dapat disangkal dan merupakan bahasa umum yang dapat dipahami oleh semua orang. Misalnya, “Pesanan Dibuat”, “Pembayaran Diterima”, “Produk Dikirim”. Semua ini adalah fakta yang terjadi di masa lalu.

💡 Mengapa “Storming”? Kata “storming” mengacu pada brainstorming yang intens dan cepat. Tujuannya adalah untuk menghasilkan sebanyak mungkin ide dan pemahaman dalam waktu singkat, tanpa terlalu banyak filter di awal. Kesalahan dan miskonsepsi akan diperbaiki seiring berjalannya proses.

2. Mengapa Event Storming Penting untuk Developer?

Event Storming bukan sekadar teknik bisnis; ini adalah alat yang sangat ampuh bagi developer karena beberapa alasan kunci:

3. Perlengkapan dan Peran dalam Event Storming

Untuk mengadakan sesi Event Storming yang efektif, Anda memerlukan beberapa perlengkapan dan peran kunci:

Perlengkapan:

Peran Kunci:

Kunci sukses: Pastikan semua pihak yang relevan hadir dan berpartisipasi aktif. Semakin beragam sudut pandang, semakin kaya pemahaman yang didapat.

4. Langkah-Langkah Melakukan Event Storming (Workshop)

Ada beberapa level Event Storming, mulai dari gambaran besar hingga detail implementasi. Kita akan fokus pada Big Picture Event Storming yang paling umum dan fundamental.

A. Big Picture Event Storming (2-4 jam)

Tujuan: Mendapatkan pemahaman menyeluruh tentang seluruh domain bisnis, mengidentifikasi semua peristiwa penting, dan menemukan bounded contexts.

  1. Siapkan Ruangan: Tempelkan kertas besar atau gunakan papan tulis yang sangat luas. Ini akan menjadi “garis waktu” Anda.

  2. Identifikasi Domain Events (Sticky Note Oranye 🍊)

    • Mulai dengan pertanyaan: “Apa yang terjadi dalam bisnis ini?”
    • Tuliskan setiap peristiwa penting yang terjadi di masa lalu, selalu dalam bentuk past tense. Contoh: Pesanan Dibuat, Pembayaran Diterima, Produk Dikirim, Pengguna Terdaftar.
    • Tempelkan secara kronologis di papan tulis. Jangan khawatir tentang akurasi kronologi di awal, perbaiki nanti. Fokus pada kuantitas.
    • “No filter!”: Dorong semua orang untuk menempelkan ide sebanyak mungkin tanpa ragu atau takut salah.
  3. Urutkan Kronologis dan Perbaiki Alur

    • Setelah banyak events tertempel, fasilitator akan memandu peserta untuk mengurutkan events secara kronologis dari kiri ke kanan.
    • Diskusikan dan perbaiki alur jika ada yang tidak masuk akal atau ada peristiwa yang terlewat.
  4. Identifikasi Commands (Sticky Note Biru 🔵)

    • Untuk setiap Domain Event, tanyakan: “Apa yang memicu peristiwa ini terjadi?”
    • Ini biasanya adalah tindakan yang dilakukan oleh pengguna atau sistem lain. Contoh: Untuk Pesanan Dibuat, command-nya bisa Buat Pesanan.
    • Tempelkan Command tepat sebelum Event yang dipicunya.
  5. Identifikasi Aggregates/Entities (Sticky Note Kuning 🟡)

    • Untuk setiap Command dan Event, tanyakan: “Objek bisnis (entitas) apa yang berubah atau terlibat?”
    • Ini adalah “hal” yang memiliki identitas dan mengelola konsistensi data. Contoh: Pesanan, Produk, Pengguna.
    • Tempelkan Aggregate di atas Command dan Event yang memengaruhinya. Ini akan mulai menunjukkan bounded contexts secara visual.
  6. Identifikasi External Systems (Sticky Note Ungu 🟣)

    • Tanyakan: “Sistem eksternal apa yang terlibat atau berinteraksi di sini?”
    • Ini bisa berupa payment gateway, layanan email, CRM, atau API pihak ketiga lainnya.
    • Tempelkan saat interaksi terjadi.
  7. Identifikasi Policies/Reactions (Sticky Note Hijau 🟢)

    • Tanyakan: “Ketika peristiwa ini terjadi, apa lagi yang harus dilakukan sistem secara otomatis?”
    • Ini adalah aturan bisnis atau reaksi otomatis terhadap suatu event. Contoh: “Ketika Pesanan Dibuat, maka Kirim Email Konfirmasi.”
    • Tempelkan setelah Event yang memicunya, dan panah ke Command berikutnya jika ada.
  8. Identifikasi Read Models/Projections (Sticky Note Merah Muda 🌸)

    • Tanyakan: “Informasi apa yang perlu ditampilkan kepada pengguna atau sistem lain pada titik ini?”
    • Ini adalah tampilan data yang dioptimalkan untuk kebutuhan baca. Contoh: Daftar Pesanan Saya, Detail Produk.
    • Tempelkan di bagian bawah, di mana data tersebut relevan untuk ditampilkan.
  9. Identifikasi Hotspots/Pain Points (Sticky Note Merah 🔴)

    • Selama proses, jika ada area yang membingungkan, tidak jelas, membutuhkan diskusi lebih lanjut, atau merupakan risiko bisnis/teknis, tandai dengan sticky note merah. Ini adalah area yang perlu ditindaklanjuti.

B. Proses Setelah Big Picture Event Storming

Setelah sesi Big Picture, Anda akan memiliki dinding penuh sticky notes yang merepresentasikan pemahaman bersama tentang domain Anda. Ini adalah artefak yang sangat berharga!

5. Tips Praktis untuk Event Storming yang Efektif

🎯 Agar sesi Event Storming Anda sukses, perhatikan tips berikut:

Hindari:

Kesimpulan

Event Storming adalah investasi waktu yang sangat berharga bagi tim mana pun yang ingin membangun sistem yang solid, terutama dalam konteks arsitektur event-driven dan microservices. Dengan memvisualisasikan alur peristiwa bisnis secara kolaboratif, Anda tidak hanya mengurai kompleksitas tetapi juga membangun pemahaman bersama yang kuat di seluruh tim. Ini adalah fondasi yang akan mengurangi miskomunikasi, mempercepat pengembangan, dan menghasilkan desain sistem yang lebih tangguh dan adaptif.

Jadi, siapkan sticky notes Anda, kumpulkan tim, dan mulailah “badai” peristiwa Anda sendiri! Anda akan terkejut betapa banyak wawasan yang bisa Anda dapatkan.

🔗 Baca Juga