Seiring berkembangnya aplikasi Anda, database dapat menjadi bottleneck dalam sistem Anda tanpa infrastruktur atau modifikasi yang tepat. Engineer sering kali menghadapi pilihan sulit saat traffic melonjak: apakah mereka harus meningkatkan performa server saat ini, atau menambahkan lebih banyak server ke dalam sistem? Panduan ini menguraikan perbedaan antara penskalaan horizontal dan vertikal, konsekuensi dari masing-masing penskalaan, dan cara memilih pendekatan yang tepat untuk kebutuhan Anda.
Penskalaan database adalah proses peningkatan kapasitas, performa, dan ketersediaan sistem. Hal ini memungkinkan database Anda menangani lebih banyak data dan mengikuti perkembangan jumlah pengguna.
Dalam industri ini, para ahli menggunakan dua istilah utama untuk proses ini. Penskalaan vertikal adalah "peningkatan skala", sedangkan penskalaan horizontal adalah "penyebaran skala". Memahami kedua jalur ini adalah langkah pertama dalam membangun sistem data yang andal.
Penskalaan vertikal, yang juga dikenal sebagai peningkatan skala, mencakup penambahan daya ke server yang ada. Anda tetap menggunakan node database yang sama, tetapi Anda memberinya lebih banyak CPU, memori, atau penyimpanan untuk melakukan tugasnya.
Hal ini sering dianggap sebagai cara tradisional untuk menskalakan database relasional. Hal ini membuat arsitektur tetap sederhana karena semua data Anda masih berada di satu tempat.
Manfaat
Tantangan
Layanan database terkelola, seperti Cloud SQL, dapat membantu mempermudah penskalaan vertikal dengan memungkinkan Anda mengubah ukuran mesin hanya dengan beberapa klik, tetapi penting untuk diingat bahwa Anda mungkin masih mencapai batas hardware fisik tersebut.
Skala kecil: Bayangkan sebuah startup yang berkembang pesat dan menjalankan aplikasi web di satu database. Saat traffic mulai meningkat, mereka dapat beralih ke instance yang lebih besar, yang pada gilirannya memberi mereka lebih banyak daya komputasi untuk menangani pengunjung tambahan tanpa perlu menulis ulang kode aplikasi mereka.
Skala perusahaan: Perusahaan besar dengan sistem lama juga dapat menggunakan penskalaan vertikal. Sistem ini biasanya mengandalkan hubungan yang kompleks antardata. Karena kode mereka dibuat untuk satu database, mereka dapat meningkatkan skala dengan menambahkan lebih banyak daya ke satu mesin tersebut, bukan mencoba beralih ke sistem terdistribusi.
Kebutuhan internal: Beberapa perusahaan juga menggunakan penskalaan vertikal untuk pelaporan internal. Mereka dapat menambahkan lebih banyak RAM ke server database utama agar dapat memproses kueri besar yang membutuhkan banyak resource dengan lebih cepat tanpa memperlambat pengalaman pengguna biasa.
Penskalaan horizontal, atau penyebaran skala, berarti menambahkan lebih banyak mesin ke sistem database Anda, bukan membuat satu mesin menjadi lebih canggih, yang mendistribusikan pekerjaan ke sekelompok server. Ini adalah konsep inti dalam cloud computing modern dan sistem terdistribusi.
Engineer menggunakan teknik seperti sharding, yaitu membagi data menjadi bagian-bagian yang lebih kecil di berbagai server, dan replikasi, yaitu menyalin data ke beberapa node, agar hal ini dapat berfungsi.
Manfaat
Tantangan
Database SQL terdistribusi seperti Spanner dapat membantu Anda mengatasi tantangan ini. Spanner menangani pekerjaan berat dalam menyinkronkan data di beberapa mesin untuk Anda, sehingga Anda tidak perlu membagi data secara manual atau kehilangan keamanan database relasional. Hal ini memungkinkan Anda melakukan penskalaan horizontal tanpa membuat sistem Anda terlalu rumit.
Kapasitas: Platform e-commerce global dapat menggunakan penskalaan horizontal selama acara diskon besar. Saat jutaan orang mengunjungi situs secara bersamaan, sistem dapat secara otomatis menyeimbangkan kembali data di seluruh node baru untuk menangani traffic, sehingga memastikan tidak ada satu server pun yang kewalahan.
Redundansi: Aplikasi keuangan yang sangat penting terkadang juga menggunakan penskalaan horizontal. Aplikasi ini dapat mendistribusikan database-nya di beberapa lokasi fisik, yang dikenal sebagai zona ketersediaan. Penyiapan ini membantu memastikan bahwa jika satu pusat data mengalami masalah, aplikasi tetap berjalan, sehingga promise konsistensi data tetap terpenuhi.
Kedekatan: Perusahaan game global dapat men-deploy node database di berbagai belahan dunia. Dengan menempatkan node database lebih dekat ke pemain, mereka dapat memberikan pengalaman yang cepat dan lancar dengan lag yang sangat rendah. Misalnya, jika seorang pemain tinggal di Tokyo, data profilnya disimpan di node database Tokyo untuk pembacaan dan penulisan yang sangat cepat.
Saat membahas penskalaan cloud, penskalaan vertikal berarti mengupgrade ukuran virtual machine yang menghosting database Anda. Penskalaan horizontal melibatkan penambahan lebih banyak instance mesin ke grup penskalaan otomatis atau cluster terdistribusi.
Beberapa perusahaan menggunakan campuran kedua metode tersebut, yang disebut penskalaan diagonal. Dalam pendekatan ini, Anda menambahkan lebih banyak node ke sistem Anda (penskalaan horizontal) dan mengupgrade kapasitas hardware (penskalaan vertikal). Perusahaan besar dapat menggunakan ini untuk mendapatkan yang terbaik dari kedua penskalaan tersebut, memastikan database mereka sangat tersedia dan cukup kuat untuk tugas-tugas lokal yang kompleks.
Ya. Meskipun secara tradisional sulit, database SQL terdistribusi modern seperti Spanner menggunakan sinkronisasi jam yang canggih dan protokol cerdas untuk memungkinkan penskalaan horizontal sekaligus menjaga data Anda tetap teratur dan akurat.
Perhatikan tanda-tanda peringatan seperti penggunaan CPU atau memori yang tinggi, waktu kueri yang lambat, dan peningkatan lag bagi pengguna selama jam sibuk. Semua ini adalah tanda bahwa database Anda saat ini mungkin kesulitan untuk mengimbangi.
Perbedaan utama antara penskalaan horizontal dan vertikal adalah cara keduanya menambahkan resource ke sistem Anda. Penskalaan vertikal meningkatkan daya ke satu mesin, sedangkan penskalaan horizontal menambahkan lebih banyak mesin ke jaringan Anda.
Fitur | Penskalaan vertikal | Penskalaan horizontal |
Konsep | Menambahkan resource ke satu mesin | Menambahkan lebih banyak mesin ke jaringan |
Kapasitas | Batas hardware yang ketat | Hampir tidak terbatas |
Periode nonaktif | Biasanya memerlukan waktu non-operasional | Tanpa waktu non-operasional (node ditambahkan secara dinamis) |
Kompleksitas | Lebih rendah (arsitektur sederhana) | Lebih tinggi (memerlukan logika terdistribusi) |
Biaya | Biaya lebih tinggi untuk hardware berukuran besar | Penskalaan linear dengan mesin standar |
Fitur
Penskalaan vertikal
Penskalaan horizontal
Konsep
Menambahkan resource ke satu mesin
Menambahkan lebih banyak mesin ke jaringan
Kapasitas
Batas hardware yang ketat
Hampir tidak terbatas
Periode nonaktif
Biasanya memerlukan waktu non-operasional
Tanpa waktu non-operasional (node ditambahkan secara dinamis)
Kompleksitas
Lebih rendah (arsitektur sederhana)
Lebih tinggi (memerlukan logika terdistribusi)
Biaya
Biaya lebih tinggi untuk hardware berukuran besar
Penskalaan linear dengan mesin standar
Ada beberapa gagasan yang sudah tidak berlaku terkait database SQL dan NoSQL yang masih tersebar luas di industri. Sebagian besar kesulitan dalam menskalakan database SQL tradisional berpusat pada cara database tersebut menangani penggabungan dan konsistensi data. Menyebarkan database relasional ke banyak server dapat menjadi tantangan teknis, tetapi solusi terdistribusi modern telah menyelesaikan banyak masalah ini, sehingga developer dapat menskalakan SQL secara horizontal tanpa kehilangan fitur relasional yang mereka butuhkan. Berikut tiga kesalahpahaman umum dan kebenarannya:
Fakta: Bisa. Meskipun desain relasional yang lebih lama lebih mengutamakan penskalaan vertikal, sistem SQL terdistribusi modern memungkinkan database relasional mencakup beberapa mesin. Pendekatan ini menggabungkan konsistensi SQL dengan kekuatan pertumbuhan horizontal arsitektur cloud modern.
Fakta: NoSQL efektif untuk set data besar yang tidak terstruktur, tetapi database SQL sering kali lebih baik untuk kueri terstruktur yang kompleks. Dalam banyak kasus, database SQL yang disesuaikan dengan baik akan mengungguli NoSQL jika aplikasi Anda mengandalkan hubungan yang mendalam antara titik data.
Fakta: Anda tidak perlu memilih. Pola arsitektur modern memungkinkan Anda menskalakan sistem di berbagai mesin sekaligus menjaga aturan ketat untuk keamanan data, yang dikenal sebagai kepatuhan ACID, di seluruh cluster.
Saat memutuskan cara menskalakan database, pilihan sering kali bergantung pada anggaran, jumlah data yang Anda miliki, dan jumlah waktu beroperasi yang Anda perlukan. Saran umumnya adalah sebagai berikut:
Google Cloud menawarkan berbagai alat database yang dapat disesuaikan dengan strategi penskalaan Anda. Baik Anda memerlukan kemudahan peningkatan skala atau kekuatan penyebaran skala berkapasitas tinggi, produk ini dapat membantu.


Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.