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:

flowchart TD CRM["Aplikasi CRM"] --> Sales["Modul Sales"] CRM --> Service["Modul Service"] CRM --> Marketing["Modul Marketing"] Sales --> S1["Service: Buat Peluang"] Sales --> S2["Service: Update Deal"] Sales --> S3["Service: Hitung Komisi"] S1 --> API1["API"] S1 --> DS1["Data Store Peluang"] S1 --> UI1["UI Sales"] S2 --> API2["API"] S2 --> DS2["Data Store Deal"] S3 --> API3["API"] S3 --> DS3["Data Store Komisi"] S2 --> ERP["Integrasi ERP"]

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.

Application Building Block Diagram
Application Building Block Diagram