Minds Explored: Scale Up Our Team Like MongoDB Do

Istilah scaling sudah cukup erat jika dihubungkan dengan database, karena seiring berjalannya waktu, data yang disimpan dalam database pasti akan semakin besar dan semakin banyak. Peningkatan ukuran data ini tentu akan memengaruhi proses pengolahan dan pencarian data dari database menjadi lebih lama dari sebelumnya. Oleh karena itu, adanya scaling dalam sebuah database ini menjadi penting.

Scaling sendiri dibagi menjadi dua tipe, yaitu scaling secara vertikal dan horizontal. Dalam praktiknya, horizontal scaling dianggap lebih unggul dari segi availability dan kecepatan akses. Tipe scaling yang satu ini bekerja dengan menggabungkan beberapa server kecil yang saling backup satu sama lain. Apabila ada satu server yang down, maka server lain akan melakukan backup.

Sementara itu, vertical scaling hanya menggunakan satu server, sehingga ketika data semakin besar kita perlu menambah kapasitas server tersebut. Parahnya lagi, jika terjadi down pada server, data tidak akan dapat diakses oleh aplikasi karena ketiadaan backup oleh server lain.

Nah, MongoDB yang akan kita bahas pada artikel ini memiliki metode horizontal scalability berupa Replikasi dan Sharding.

Apa Itu MongoDB?

Sebelum melangkah lebih jauh, mari kita bahas sedikit terlebih dahulu mengenai apa itu MongoDB. MongoDB adalah salah satu database NoSQL, yaitu non-relational database yang tidak menggunakan skema tabel dan sering digunakan untuk mengolah big data atau real-time application. Di sisi sebaliknya, ada yang disebut sebagai relational database atau biasa disebut Structured Query Language (SQL).

Replikasi MongoDB

Secara umum, replikasi pada MongoDB dilakukan dengan menggabungkan beberapa server menjadi satu cluster dan mereplika (menyalin) data ke masing-masing server. Pada replikasi, terdapat satu server yang berstatus sebagai Primary, yaitu server yang akan memproses segala sesuatu mengenai data.

Lalu, member yang lain akan berstatus sebagai Secondary, yaitu server yang akan menjadi backup untuk primary server. Tujuan dari replikasi ini adalah apabila terjadi masalah atau down pada primary server, maka secara otomatis secondary server yang akan menggantikan tugas dari primary server.

Primary server yang down sebelumnya akan berstatus sebagai secondary server apabila telah up kembali. Jadi, tidak akan ada proses down pada database yang menyebabkan aplikasi tidak dapat mengakses data.

Nah, dari replikasi MongoDB ini yang dapat kita jadikan contoh pada tim adalah saling backup antar member. Misalnya, apabila ada satu tim member kita sedang tidak dapat menjalankan tugasnya karena suatu accident atau event, kita sebagai member satu tim bisa membantu dengan mem-backup tugas yang teman kita tidak dapat handle pada waktu tersebut. Dengan begitu, proses development dapat terus berjalan dengan lancar dan on track sesuai dengan plan yang sudah direncanakan.

Sharding MongoDB

Secara garis besar, Sharding pada MongoDB bisa dikatakan versi advance dari Replikasi, di mana data akan dibagi menjadi beberapa pecahan (shard) untuk semua member dalam satu cluster.

Jadi apa bedanya dengan replikasi?

Ilustrasi proses Replikasi dan Sharding pada MongoDB

Di sini kita ibaratkan A, B, dan C adalah sebuah data. Dapat Anda lihat bedanya, Replikasi memiliki kapasitas data yang sama untuk masing-masing server. Sedangkan untuk Sharding, setiap data akan dibagi menjadi beberapa pecahan dan masing-masing server hanya akan memiliki satu pecahan dari data.

Nah, dari Sharding MongoDB ini, yang bisa kita jadikan contoh untuk scale up tim kita adalah dengan membagi load pekerjaan dalam tim kita menjadi beberapa part. Kemudian, masing-masing part dapat didistribusikan ke setiap member dalam tim.

Dengan begitu, beban kerja tidak akan sepenuhnya diserahkan ke salah satu member tim kita saja, melainkan setiap member akan memiliiki kontribusi dari masing-masing part yang sudah diberikan. Apabila semua part ini digabungkan, maka tim kita akan dapat mencapai goal yang sudah direncanakan.

Satu lagi yang dapat kita ambil dari Sharding adalah bahwa setiap member dalam suatu tim memiliki kontribusi mereka dalam mencapai company goals, sekecil apapun kontribusi tersebut. Karena tanpa adanya pecahan kecil kontribusi member tim kita, goals besar yang ingin dicapai dari suatu company tidak akan dapat terbentuk.

Kutipan oleh Galeh Werdyo Pamungkas
Baca Juga

Jadi, untuk semua teman-teman yang ada di luar sana, jangan merasa insecure dengan kecilnya kontribusi yang kita berikan pada company kita. Sebab, dalam besarnya goals suatu company, di situ ada pecahan-pecahan kecil kontribusi yang kita berikan.

Ingin mengetahui lebih lanjut terkait sharing-sharing MPeople lainnya? Kunjungi blog kami di sini!

Galeh Werdyo Pamungkas - DevOps Engineer, MTARGET