Memecah Monolith App ke Modular App
Baru-baru ini saya baru menonton video mengenai rasa bosan. Video tersebut menjelaskan bahwa kita harus berdamai dengan rasa bosan dan menikmati setiap proses nya, dimana kadang kala rasa bosan menuntun kita kepada kreatifitas dan produktifitas.
Hargai rutinitas, kita tidak akan menghasilkan sesuatu dengan hanya sekali melakukan dan mencoba.
Jika rasa bosan datang dan kita tidak mau menghadapinya, hanya ada dua kemungkinan:
- Kita tidak dilahirkan untuk mencapainya
- Mungkin kita benar-benar tidak menginginkanya
Abaikan cerita diatas karena kita akan membahas hal yang berbeda kali ini. Oke kita lanjut diskusi mengenai Monolith Application vs Modular Application.
Monolith
Apa itu Monolith secara singkat Monolith App adalah Kode program yang yang tergabung dalam dan hanya dalam satu project. Arsitektur ini biasa kita temui saat kita membuat Aplikasi sederhana.
Modular
Sedangkan Modular arsitektur adalah Kode program yang terpisah atau dipecah menjadi service-service kecil sesuai dengan responsiblity-nya.
Why?
Kenapa kita membutuhkan arsitektur modular pada aplikasi kita. Oke kita ambil contoh Aplikasi Ijo yang memiliki banyak service (Ojek, Tiket, Belanja Makanan, Belanja Barang dll). Dengan besarnya aplikasi maka resiko conflict menjadi lebih besar terlebih setiap service dikerjan oleh team yang berbeda. Build time juga akan terpengaruh terutama ketika kita pertama kali clone dan clear build project kita.
Sedangkan jika kita memecah aplikasi ke beberapa service yang lebih kecil ketika setiap team melakukan perubahan tidak semua kode akan terpengaruh secara langsung (Perubahan hanya terjadi pada lingkup service yang terkait). Build time juga akan berkurang karena kita tidak perlu build seluruh aplikasi hanya untuk service terkait. Arsitektur setiap service juga dapat disesuikan dengan kebutuhan dan kemampuan setiap team.
Walaupun Modular arsitektur memiliki banyak kelebihan tidak semua project cocok menggunakan arsitektur ini. Mungkin untuk project atau aplikasi kecil akan terlalu over engineering, karena terlalu banyak setup dan konfigurasi pada awal pembuatan project.
Setelah kita tahu kenapa kita memerlukan arsitektur ini untuk aplikasi kita, pasti teman-teman bertanya-tanya.
Mas bagaimana kita mengimplementasikan Modular Arsitektur nya ?
Implementasi
Untuk mengimplementasikan arsitektur ini kita hanya butuh belajar lebih dalam mengenai:
- Workspace
Workspace akan kita gunakan untuk menampung project dan framework kita.
- Framework
Sedangkan Framework kita gunakan untuk memisahkan service-service yang kita miliki. (Contoh Aplikasi Ijo: Ojek, Tiket, Belanja Makanan, Belanja Barang dll)
Oke kita mulai langka-langkah untuk implementasinya:
- Buat Workspace baru (File -> New -> Workspace), sesuai dengan arti katanya ruang kerja. Jadi workspace kita gunakan untuk menampilkan seluruh project atau framework kita dalam satu ruang kerja sehingga kita tidak perlu membuka banyak project saat kita ingin mengubah dan mengecek apakah kode kita berjalan baik itu pada lingkup service yang berubah atau ketika framework digunakan pada MainApp atau Custom Launcpad.
- Buat Project baru sebagai MainApp (File -> New -> Project -> Single View App), MainApp merupakan project aplikasi utama yang nantinya akan menjalankan semua atau beberapa framework yang tadinya telah kita pecah.
- Selanjutnya membuat Service Module (Framework). Kita ambil contoh kita akan membuat Network Service dan Tiket Service (File -> New -> Project -> Framework). Jangan lupa pada pilihan Add To dan Group pilih Workspace kita.
- Agar framework kita dapat di akses oleh MainApp kita harus menambahkan Framework kita pada Build Phase -> Link Binary With Libraries dan jangan lupa agar tidak menimbulkan error
dyld: Library not loaded: Reason: image not found
saat aplikasi dijalankan tanpa xcode build and run running kita harus menambahkan framework kita pada Build Phase -> Embeded Frameworks atau jika Embeded Frameworks tidak tampil kita dapat mengaktifkannya melalui General -> Frameworks, Libraries, and Embedded Content ubah dari Do Not Embed ke Embed & Sign.
- Done, sekarang coba build and run project MainApp. Yeay sukses running pada simulator.
Oke part memecah framework sudah selesai, Next kita akan belajar bagaimana kita menambahkan, menjalankan kode framework kita pada MainApp dan bagaimana kita mengkonfigurasi Cocoapods pada workspace yang memilki banya project dan framework sehingga saat kita sekali menjalankan pod install semua dependency framework yang dibutuhkan oleh setiap project dan framework bisa terinstall dan dapat dijalankan.
Next Part
Some useful content