Apa itu Diagram Alir?
Sebuah Diagram Aliradalah peta perilaku dasar yang memvisualisasikan alur kerja operasional langkah demi langkah, prosedur algoritmik, atau logika bisnis berurutan. Dengan mewakili tindakan sistem sebagai bentuk geometris yang berbeda dan mencatat alur kontrol dengan panah arah, diagram alir memudahkan insinyur perangkat lunak dan arsitek sistem untuk melacak jalur eksekusi bersyarat, mengisolasi blok titik kegagalan tunggal, serta menganalisis lingkaran logika sistem sebelum menulis kode backend yang sebenarnya.
Dengan Mermaid.js, Anda tidak perlu menghabiskan berjam-jam menyeret kotak, mengatur garis grid secara detail, atau menghitung ulang variabel padding. Mesin tata letak menghitung koordinat simpul secara dinamis dari skrip deklaratif mentah Anda, sehingga Anda dapat sepenuhnya fokus pada logika dasar sistem Anda.
Panduan Sintaks Inti: Elemen dan Konstruksi
Untuk merancang diagram alir yang elegan dan mudah dibaca di Mermaid, Anda harus menguasai petunjuk arah kanvas, pembatasan simpul geometris, variabel kabel tautan, dan subgraf struktural.
1. Menetapkan Arah Kanvas
Orientasi diagram alir Anda ditentukan langsung pada baris pertama oleh pasangan kata kunci yang diterapkan pada graph atau diagram alirwrapper. Anda dapat mengendalikan arah penskalaan visual tata letak Anda menggunakan empat kunci orientasi utama:
diagram alir TD(Atas ke Bawah / Orientasi Vertikal)diagram alir BU(Bawah ke Atas orientasi)diagram alir LR(Kiri ke Kanan / Orientasi Horizontal)diagram alir RL(Kanan ke Kiri orientasi)
2. Menyesuaikan Geometri Simpul (Bentuk)
Secara default, deklarasi ID biasa ditampilkan sebagai kotak persegi panjang tajam. Untuk membuat diagram Anda lebih mudah dibaca, gunakan kurung penutup khusus Mermaid untuk menyisipkan konteks visual langsung ke langkah-langkah kerja yang berbeda. Setiap blok definisi harus diawali dengan token tata letak arah agar dapat diproses dengan benar:
- Sudut Bulat:
id(Teks)— Melambangkan langkah proses umum. - Bentuk Stadion/Kapsul:
id([Text])— Penanda standar untuk batas awal dan akhir batas. - Subrutin/Proses yang Didefinisikan Sebelumnya:
id[[Text]]— Melambangkan rutin sistem yang terenkapsulasi atau skrip kelas eksternal. - Silinder/Database:
id[(Text)]— Melambangkan persistensi basis data, cache, atau gudang data. - Rombus/Hati Keputusan:
id{Text}— Melambangkan sakelar bersyarat, cabang if/else, atau titik evaluasi. - Jajaran Genjang:
id[/Text/]atauid[Text]— Menghasilkan batas miring untuk mewakili input/output data secara eksplisit (I/O).
flowchart TD
start_node([Mulai Eksekusi])
query_db[(Instan PostgreSQL)]
validate_check{Diberi Izin?} 
3. Aturan Kabel Penghubung dan Label Inline
Anda dapat menyesuaikan garis penghubung Anda untuk mewakili berbagai hubungan struktural dan gaya komunikasi. Untuk menjaga diagram Anda tetap bersih, sisipkan label deskriptif langsung pada jalur tautan Anda:
flowchart TD
%% Panah penghubung standar dengan label teks
A --> |"Payload JSON"| B
%% Garis titik-titik/asinkron dengan label teks
B -.-> |"Kejadian Asinkron"| C
%% Garis tebal dengan label teks
C ==> |"Tulisan Kritis"| D 
4. Isolasi Modular melalui Subgraf
Untuk menetapkan perimeter jaringan yang bersih, mengelompokkan mikroservis, atau memisahkan tanggung jawab tim, kelompokkan elemen-elemen Anda di dalam struktursubgraf pembungkus. Anda mendefinisikan subgraf dengan memberikan ID internal, judul tampilan opsional, dan menutupnya denganakhir tag:
flowchart TD
subgraph auth_sub["Batas Keamanan"]
gateway[Gateway API] --> auth_worker(Penilai Token)
akhir 
Praktik Terbaik untuk Diagram Alir yang Bersih
- Pisahkan Tata Letak Secara Horizontal: Untuk pipeline rekayasa panjang dengan banyak langkah, pilih
flowchart LRarah. Ini lebih bersih saat diperbesar pada monitor landscape lebar standar dibandingkan tata letak vertikal yang panjang. - Pisahkan Lingkaran yang Kompleks: Jika suatu alur kerja mengandung lingkaran pengulangan berat, beri label pada koneksi balik secara jelas (misalnya,
ulangi --> |"Coba Reset"| mulai) untuk mencegah pembaca salah mengira lingkaran ini sebagai jalur maju standar. - Hindari Menggabungkan Jenis Grafik: Tetap gunakan
flowchartkata kunci daripadagraphbendera saat merender peta kompleks. Mesinflowchartmenggunakan algoritma tata letak yang diperbarui yang mendukung kombinasi panah canggih dan rute jalur yang lebih bersih.
Contoh Diagram Alir Mermaid.js Dunia Nyata
Contoh 1: Jaringan Ingesti Berbasis Peristiwa Mikroservis (Arsitektur Kiri-ke-Kanan)
Rancangan fungsional ini memodelkan layanan ingesti telemetri web. Ini menunjukkan cara menggabungkan input data, berlian keputusan, dan bentuk basis data awan di atas kanvas horizontal yang jelas.
flowchart LR
%% Tentukan node elemen dengan bentuk geometri eksplisit
init([Webhook Dipicu]) --> input_io[/Tangkap Permintaan HTTP/]
input_io --> auth_check{Validasi Token}
auth_check --> |"Token Tidak Valid"| err_stop([Kembalikan 401 Tidak Sah])
auth_check --> |"JWT Sah"| write_queue[[Terbitkan ke Antrian Kafka]]
write_queue --> worker_proc(Daemon Konsumen)
worker_proc --> db_store[(Klaster TimescaleDB)]
db_store --> term([Alur Berakhir])
%% Opsi gaya kustom cepat
style auth_check fill:#fff3cd,stroke:#ffc107,stroke-width:2px
style err_stop fill:#f8d7da,stroke:#dc3545,stroke-width:1px 
Analisis Sintaks: Diagram ini mengalir dengan lancar dari kiri ke kanan. Langkah validasi menggunakan bentuk berlian keputusan kuning (auth_check{Validasi Token}), yang membagi jalur eksekusi secara bersih menjadi dua hasil yang berbeda. Penyimpanan data langsung dapat dikenali berkat silinder basis data khusus mereka ([(Kelompok TimescaleDB)]) dan input berbentuk jajaran genjang.
Contoh 2: Mesin Pendaftaran Pengguna Multi-Tingkat Perusahaan (Vertikal dengan Subgraf Bersarang)
Rancangan perusahaan canggih ini memetakan alur pendaftaran aplikasi. Ini mengatur langkah-langkah secara vertikal melintasi tiga subgraf struktural terpisah untuk mewakili lapisan arsitektur yang berbeda.
flowchart TD
subgraph Client_Tier["Lapisan Antarmuka UI Presentasi"]
app[Antarmuka Aplikasi Seluler]
web[Frontend SPA Web]
end
subgraph Service_Tier["Router Gateway Inti"]
proxy[[Proxy Balik Ingress Nginx]]
auth_svc(Pekerja Layanan Otorisasi)
end
subgraph Persistence_Tier["Pusat Data yang Diamankan"]
main_db[(Database Utama Akun Pengguna)]
cache_node[(Cache Sesi Redis)]
end
%% Tentukan saluran komunikasi di seluruh lapisan subsistem
app -- "Permintaan HTTPS" --> proxy
web -- "Permintaan HTTPS" --> proxy
proxy --> |"Rute /v1/auth"| auth_svc
auth_svc --> |"Verifikasi Sesi"| cache_node
auth_svc --> |"Simpan Akun"| main_db 
Analisis Sintaks: Indikator orientasi atas-ke-bawah (flowchart TD) memaksa mesin tata letak untuk mengatur komponen secara bersih dari atas ke bawah. Blok pembatas mengelompokkan komponen yang terkait menjadi lapisan-lapisan terpisah (Klien, Layanan, dan Persistensi), memberikan arsitektur keseluruhan rasa yang intuitif dan sangat terstruktur.