System Design

Wildan Fahmi Gunawan
Scrum Booster
Published in
2 min readApr 30, 2019

Dalam membentuk sebuah sistem atau program, kita tidak bisa hanya memikirkan kondisi saat ini, namun kita juga perlu mempersiapkan sistem kita untuk masa depan. Salah satu bentuk persiapan kita terhadap masa depan adalah membentuk sistem yang memiliki skalabilitas yang tinggi. Sebuah service dibilang scalable ketika pertumbuhan antara performa dan penambahan resources dari sebuah service itu proporsional. Performa dalam hal ini dapat dibilang sebagai kemampuan untuk memenuhi kebutuhan lebih banyak pengguna atau program lain yang membutuhkannya. Artinya, suatu sistem dibilang scalable ketika sistem tersebut dapat menampung lebih banyak request seiring dengan bertambahnya aset dari sistem tersebut.

Scalability tidak bisa terlepas dari performa, bahkan terkadang ada yang tidak bisa membedakan antara scalability dan performa. untuk mempermudah,

  • Permasalahan performa berhubungan dengan individu user, Sistem anda lambat untuk satu user
  • Permasalahan scalability berhubungan dengan besarnya muatan, Sistem anda cepat untuk satu user, namun lambat ketika muatannya besar atau banyak user yang mengakses sistem anda disaat yang bersamaan.

Lalu bagaimana cara kita bisa membuat sistem kita menjadi scalable?

  1. Clones, kita bisa membuat service kita menjadi scalable dengan mengclonenya kebeberapa server kemudian didistribusikan menggunakan load balancer
  2. Menggunakan database yang lebih mudah di kemabangkan seperti MongoDB ataupun CouchDB. NoSQL lebih mudah untuk di scale dibanding MySQL
  3. Cache, dengan menyimpan sebagian data yang sering digunakan pada cache, pengguna tidak harus selalu mengakses sistem dan dapat mengambil memory secara cepat melalui Cache.
  4. Ascychronism, mempersiapkan semua pekerjaan berat sebelum berjalannya program sehingga ketika program dijalankan, pekerjaan-pekerjaan berat sudah dilakukan sehingga program lebih cepat dalam menanggapi request pengguna

--

--