6.4 Membongkar Aplikasi Menjadi Building Block
Setelah tahu status aplikasi, kita perlu melihat lebih dalam: aplikasi terdiri dari apa saja.
Bayangkan Anda membuka aplikasi CRM yang sudah Anda catat di spreadsheet. Statusnya active, criticality tinggi, dan dipakai oleh tim sales dan customer service. Tapi ketika Anda mulai bertanya lebih detail, Anda sadar bahwa aplikasi ini bukan satu kesatuan yang utuh. Di dalamnya ada modul untuk mengelola data pelanggan, modul untuk mencatat interaksi, modul untuk membuat laporan, dan modul untuk mengirim notifikasi. Masing-masing modul ini punya fungsi yang berbeda, dipakai oleh orang yang berbeda, dan bahkan mungkin dikelola oleh tim yang berbeda.
Inilah titik di mana Anda perlu membongkar aplikasi menjadi bagian-bagian yang lebih kecil. Dalam arsitektur, kita menyebutnya application building block.
Application building block adalah potongan fungsional dari sebuah aplikasi yang bisa dipahami, dipetakan, dan dikelola secara terpisah. Sebuah aplikasi CRM tidak perlu dilihat sebagai satu blok raksasa. Anda bisa memecahnya menjadi modul sales, modul service, modul marketing, dan seterusnya. Setiap modul ini punya service yang menjalankan logika bisnis, API yang menjadi pintu komunikasi, data store yang menyimpan informasi, dan UI yang dilihat pengguna.
Ambil contoh modul sales di aplikasi CRM. Modul ini punya service untuk membuat peluang baru, service untuk memperbarui status deal, dan service untuk menghitung komisi. Service-service ini diekspos melalui API yang bisa dipanggil oleh aplikasi lain. Data peluang disimpan di data store yang terpisah dari data pelanggan. Integrasi dengan ERP terjadi melalui API khusus yang mengirim data pesanan setelah deal ditutup. Semua ini adalah building block yang bisa Anda petakan satu per satu.
Berikut ilustrasi dekomposisi aplikasi CRM menjadi building block yang saling terhubung:
Mengapa ini penting? Karena ketika Anda ingin mengubah satu bagian, Anda tidak perlu mengubah semuanya. Misalnya, tim bisnis ingin mengganti modul laporan dengan dashboard yang lebih modern. Jika Anda tahu bahwa modul laporan adalah building block yang terpisah, Anda bisa menggantinya tanpa menyentuh modul sales atau service. Atau jika Anda ingin mengintegrasikan aplikasi CRM dengan sistem baru, Anda cukup melihat API mana yang sudah tersedia, bukan membongkar seluruh aplikasi.
Pemetaan building block juga membantu Anda melihat duplikasi. Mungkin Anda menemukan bahwa modul notifikasi di CRM sebenarnya sama dengan modul notifikasi di aplikasi lain. Dua tim berbeda membangun hal yang sama karena tidak tahu bahwa sudah ada yang punya. Dengan peta building block, Anda bisa mengkonsolidasi dan menghemat biaya.
Yang perlu dicatat: building block tidak selalu berupa komponen teknis seperti API atau database. Ada juga building block yang bersifat fungsional, seperti kemampuan mengelola pesanan pelanggan. Kemampuan ini bisa diwujudkan oleh satu service, atau kombinasi beberapa service dan API. Nanti di subbab berikutnya kita akan bedakan antara business capability dan technical component. Untuk sekarang, cukup pahami bahwa aplikasi bukan monolit. Aplikasi adalah kumpulan blok yang bisa Anda bongkar, pahami, dan kelola secara terpisah.
Sebagai contoh konkret, berikut tabel pemetaan building block untuk aplikasi CRM yang telah dibongkar:
| Modul | Service | API | Data Store | UI |
|---|---|---|---|---|
| Sales | BuatPeluang | /api/sales/opportunities | DB_Peluang | Halaman Sales |
| Sales | UpdateDeal | /api/sales/deals | DB_Deal | Halaman Sales |
| Sales | HitungKomisi | /api/sales/commissions | DB_Komisi | Halaman Sales |
| Service | CatatInteraksi | /api/service/interactions | DB_Interaksi | Halaman Service |
| Service | KelolaTiket | /api/service/tickets | DB_Tiket | Halaman Service |
| Marketing | KirimEmail | /api/marketing/emails | DB_Email | Halaman Marketing |
| Marketing | BuatKampanye | /api/marketing/campaigns | DB_Kampanye | Halaman Marketing |
| Notifikasi | KirimNotif | /api/notifications | DB_Notifikasi | - |
| Laporan | GenerateReport | /api/reports | DB_Report | Dashboard Laporan |
Dengan tabel ini, Anda bisa langsung melihat komponen apa saja yang membentuk setiap modul dan bagaimana mereka saling terhubung.
Setelah Anda mulai membongkar aplikasi menjadi building block, pertanyaan berikutnya muncul: mana yang merupakan kemampuan bisnis dan mana yang merupakan komponen teknis? Ini penting karena sering kali orang menyamakan aplikasi dengan kemampuan bisnis, padahal keduanya berbeda.
