Memecah Monolith App ke Modular App (Part 3)
Oke pagi ini kita akan membagikan pengalaman kita dalam memecah dari Monolith App ke Modular App. Yup kendala kali ini adalah file-size ketika kita salah dalam mengembed framework kita.
Dalam memecah Monolith App ke Modular App sebenarnya kita hanya memecah kedalam modul-module yang berbentuk framework dan di tambahkan sebuah Launcher App, sehingga kita dapat me-RUN aplikasi hanya pada module/feature tertentu sehingga proses building aplikasi lebih singkat.
Oke pada tutorial kita yang pertama, Bisa teman-teman baca di sini:
Pada tutorial tersebut kita perlu mengembed framework kita ke MainApp. Nah langkah tersebut sudah benar tetapi bagaimana kalau kita memiliki Module/Feature/Framework yang membutuhkan framework lain yang di MainApp sudah ada.
Yup kita tidak perlu mengembed framework kita ke child framework tersebut, karena jika dilakukan IPA size kita akan bertambah dan itu nggak bagus untuk Aplikasi kita.
Oke kita ambil contoh pada aplikasi yang sedang saya kerjakan
Awalnya aplikasi tersebut hanya memisahkan Networking dari MainApp(Danakini) nah karena kita memiliki Feature baru lagi yang saat saya coba satukan membuat build time nya jadi lama sekali, maka saya putuskan untuk memisahkan feature baru ke Module (KiniBayar, KiniTunai, KiniLimit, Liveness dan Common).
Untuk KiniBayar, KiniTunai, dan KiniLimit memiliki launcher mereka sendiri sehingga saat kita RUN aplikasi kita hanya melakukan build hanya pada Feature tersebut.
Oke The Problem is Feature2 tersebut membutuhkan Framework lain seperti Networking, Common dan Liveness dan nantinya Framework/Feature KiniBayar, KiniTunai dan KiniLimit akan di embed ke MainApp atau Launcher App yang sudah mengembed semua Framework tersebut.
Sehingga KiniBayar, KiniTunai dan KiniLimit hanya perlu tau header (method, class dst) yang ada pada Framework tersebut tanpa mengembed.
Yup sesuai dengan gambar diatas, untuk framework2 yang bakal di embed di MainApp kita tidak perlu mengembed lagi di framework kita. Framework hanya perlu tau framework apa yang dibutuhkan dan method2 nya.
Nah berbeda dengan MainApp/LauncherApp, pada MainApp kita harus mengembed semua framework yang di butuhkan + framework feature nya.
Oke sekian, next kalo ada problem yang mungkin bisa saya share akan saya share lagi sehingga kita bisa belajar bersama.
Sekian, Finn, The end