Monolithic Architecture
the simplest way to develop a web app

Monolithic Architecture adalah sebuah arsitektur perangkat lunak yang sering digunakan dalam pengembangan aplikasi web. Monolith sendiri berarti bahwa sebuah sistem dibangun dalam satu kesatuan. Dalam implementasinya, sistem yang dibangun terdiri dari beberapa macam komponen yang tergabung dalam satu macam platform.

Let's take the case of a typical 3-tiered traditional web app dimana dalam sebuah sistem terdapat:

  • Presentation
  • Business logic
  • Database Layer

Sebagai contoh kita akan gunakan sebuah aplikasi e-commerce yang di dalamnya terdapat beberapa modul yaitu:

  • Account -> pendaftaran pengguna, informasi pengguna, dsb
  • Product -> pencarian produk, etalase produk, dsb
  • Promotions -> penawaran produk, promosi, dsb
  • Orders -> pemesanan produk, dsb
  • Payment -> pembayaran, invoice, dsb

Dalam Monolithic, sistem dibangun dan di maintain dalam technology stack yang sama, semisal LAMP (Linux, Apache, MySQL, PHP) dengan skema model-view-controller. Jika dilihat dari garis besar, berikut kurang lebih adalah ilustrasi dari implementasi aplikasi tersebut.


[klik pada gambar untuk memperbesar]

Dalam penerapannya, pendekatan Monolithic memiliki beberapa keuntungan dan kerugian.


remember, there's no silver bullet

the Advantages

  • SImple to develop, pada permulaan proyek pengembangan aplikasi, akan sangat mudah jika menggunakan Monolithic Architecture, kompleksitas sangat rendah.
  • Simple to deploy, Anda hanya perlu melakukan deploy (what?) maksudnya deployment hanya akan fokus dari satu kesatuan aplikasi dan technology stack yang digunakan

the Concerns and Drawbacks

  • Maintenance, jika aplikasi sudah menjadi terlalu besar dan kompleks, akan sulit bagi developer untuk memahami aplikasi secara keseluruhan, sehingga jika terdapat permintaan perubahan akan menjadi lebih kompleks dan memakan waktu
  • Long time to ship, Setiap terdapat perubahan, juga aplikasi harus di deploy secara keseluruhan, jika aplikasi sudah terlalu besar, it’s costly to deploy an application as a whole!
  • Failure Cascde, bug di satu modul (e.g. memory leak, database failure, etc) bisa menyebabkan permasalahan pada keseluruhan sistem
  • Complexity of growing applications, Harga dari kemudahan yang ditawarkan pada saat permulaan proyek harus dibayarkan pada saat aplikasi menjadi sangat besar dan kompleks, no clear ownership dari setiap codebase dari aplikasi tersebut
  • Stuck in a Technology stack, pada saat developer ingin mengadopsi satu teknologi baru. Hal tersebut dikarenakan adopsi satu bahasa pemrograman atau framework baru akan berdampak pada keseluruhan sistem, it is costly considering both time and efforts.

Kapan sebaiknya menggunakan Monolithic?

  • Small team (and no microservices expert), sure don’t try, you really don’t want to deal with the complexity of the microservices ..
  • Simple application, aplikasi sederhana yang dalam semasa hidupnya tidak akan menuntut pengembang dengan business logic yang super kompleks, kemampuan scalability yang luar biasa, atau fleksibilitas tinggi dalam penerapan teknologi-teknologi terbaru
  • Fast development, jika Anda ingin membuat sebuah aplikasi dan membuatnya live dalam waktu singkat, go for monolithic!

Begitulah kurang lebih diskusi kita mengenai Monolothic, dalam post berikutnya kita akan mencoba untuk membahas pendekatan lain dalam membangun sebuah sistem, yaitu dengan Microservices, stay tuned!.
Well, thanks for reading, till next time!

Referensi
https://medium.com/koderlabs/introduction-to-monolithic-architecture-and-microservices-architecture-b211a5955c63
https://dzone.com/articles/why-microservices
https://www.n-ix.com/microservices-vs-monolith-which-architecture-best-choice-your-business/

Image Source
http://www.elblender.com/wordpress/wp-content/uploads/2017/01/Organized-Monolithic-System.png
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTjaq_H6b7MGKsB5WlC0iBcW3JcLO00UcRGr-kpdoCxIvrTIA89

Written by gpamungkas on May 17 2019, 2:15 PM.
User
Projects
None
Subscribers
None