Sistem modern tidak hidup sendirian: episode ini membahas analisis integrasi antar sistem — inventarisasi titik integrasi, pemilihan pola sinkron vs asinkron, kontrak API dan pertukaran data — dipraktikkan menjadi integration map TokoKita untuk QRIS, sistem akuntansi, dan supplier

Setelah di episode 12 studi kelayakan TokoKita dinyatakan layak dengan payback ±20 bulan, kita masuk ke wilayah yang paling sering menggagalkan proyek integrasi sistem baru: hubungannya dengan sistem lain. Episode ini membahas system integration analysis — inventaris titik integrasi, pola komunikasi, dan kontrak data.
Mengapa integrasi layak episode tersendiri? Karena hampir tak ada sistem bisnis modern yang berdiri sendiri. POS TokoKita harus bicara dengan gateway QRIS agar pembayaran digital jalan, dengan sistem akuntansi Mbak Dwi supaya rekap pajak otomatis, kelak dengan supplier untuk auto-reorder. Setiap sambungan adalah permukaan kegagalan baru: timeout, format beda, versi API berubah diam-diam. Integrasi yang tidak dianalisis sejak desain akan menjadi utang teknis termahal dalam hidup proyek.
Langkah pertama: daftar lengkap siapa-bicara-dengan-siapa, beserta arah data dan frekuensinya:
INT-01 POS Kasir -> QRIS Gateway
Arah: keluar (request QR) + masuk (status callback)
Frekuensi: per transaksi QRIS (~40% transaksi)
Data: nomor struk, nominal, status bayar
INT-02 Server Pusat -> Sistem Akuntansi (jurnal)
Arah: keluar (batch)
Frekuensi: harian jam 23.30
Data: rekap penjualan per metode bayar, retur,
penyesuaian stok bernilai
INT-03 Master Produk <- Daftar Harga Supplier (masuk)
Arah: masuk (file CSV mingguan)
Frekuensi: mingguan
Data: SKU supplier, harga beli baru, status item
INT-04 Server Pusat -> Dashboard Owner
Arah: internal (API baca)
Frekuensi: on-demand realtime
Data: agregat penjualan & stok lintas cabangFormat inventaris ini memaksa pertanyaan yang sering terlewat: data mengalir arah mana? Sekali atau berkala? Siapa pemilik sumber kebenaran tiap field? Untuk harga produk misalnya — INT-03 membawa harga beli baru dari supplier, tapi keputusan harga jual tetap milik modul pusat (decision log DL-03); dua aliran yang menyentuh entitas sama dengan kewenangan berbeda.
Tiga pola dasar yang mencakup mayoritas kebutuhan:
| Pola | Mekanisme | Cocok Untuk | Risiko Utama |
|---|---|---|---|
| Sinkron request-response | REST API langsung | Aksi butuh jawaban instan (cek saldo, minta QR) | Timeout; kedua sistem harus online |
| Webhook/callback | Pemberi layanan meneleop balik | Status asinkron (pembayaran terkonfirmasi) | Pesan hilang saat server down; duplikasi |
| Batch file / antrian | CSV/SFTP atau message queue | Rekap periodik, volume besar, toleransi delay | Data basi antar-kirim; urutan file |
Pemilihan pola bukan selera, melainkan fungsi karakteristik data:
Important
Aturan praktis memilih pola: tanya "apa yang terjadi pada bisnis jika pesan ini telat satu jam?" Kalau jawabannya pelanggan berdiri bingung di kasir — wajib sinkron/webhook dengan fallback. Kalau jawabannya akuntan sedikit lebih lambat tutup buku — batch sudah cukup dan jauh lebih tahan banting.
Integrasi hanya aman jika kontraknya eksplisit: endpoint, format payload, kode error, aturan retry, dan versi. Untuk INT-01, kontrak minimalnya:
{
"event": "payment.success",
"external_ref": "QRIS-TK-DPS-20260816-000123",
"nomor_struk": "DPS-20260816-0047",
"amount": 79500,
"paid_at": "2026-08-16T14:07:33+08:00",
"issuer": "GOPAY",
"signature": "sha256=9f2c..."
}Detail kontrak yang menentukan ketahanan:
external_ref unik; kalau gateway mengirim callback dua kali (dan itu akan terjadi), server mengenali duplikat dan tidak mencatat dua kali.Prinsip umumnya: integrasi dirancang dengan asumsi semua bisa gagal — jaringan, vendor, format, urutan. Desain yang sukses adalah yang punya jalur pemulihan tertulis untuk tiap mode gagalan, bukan yang berharap tidak pernah gagal.
Semua temuan disatukan ke satu gambar peta integrasi — artefak wajib di folder 03-design/:
Peta seperti ini dikonsumsi tiga audiens sekaligus: owner melihat lingkup kerja sama pihak ketiga, developer melihat komponen yang harus dibuat, dan QA melihat daftar skenario uji integrasi. Tiap panah merujuk ID inventaris sehingga detail kontrak tinggal dibuka.
Untuk tiap interface di map, lengkapi tabel spesifikasi singkat:
| Field Interface | INT-01 (QRIS) | INT-02 (Akuntansi) |
|---|---|---|
| Pola | Sync + webhook | Batch CSV via SFTP |
| Trigger | Aksi kasir / event vendor | Scheduler 23.30 |
| Volume estimasi | ~200 trx/hari pilot | 1 file/hari |
| Keamanan | HTTPS + HMAC sign | SFTP key + enkripsi file |
| Mode gagal & aksi | Retry 3x, fallback tunai | Alert WA ke SA, kirim ulang pagi |
| Pemilik kontrak | Vendor QRIS v2.3 | Kami (format disepakati Dwi) |
Kolom terakhir penting secara politis juga: siapa penjaga kontrak. Saat vendor mengubah payload tanpa pemberitahuan, ada nama yang bertanggung jawab mendeteksi dan merespons.
Inti yang harus dibawa pulang:
Sistem sudah dirancang bisa bicara dengan dunia luarnya — sekarang kita pastikan ia benar-benar bekerja di tangan penggunanya. Di episode 14 selanjutnya kita membahas testing support & UAT: menyusun test scenario dari use case, memfasilitasi sesi UAT dengan kasir sungguhan, dan proses sign-off menuju go-live pilot TokoKita. Pastikan tetap semangat!