Penskalaan database horizontal versus vertikal

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.

Menskalakan dan berinovasi dengan database Google Cloud

Apa yang dimaksud dengan penskalaan database?

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.

Apa yang dimaksud dengan penskalaan vertikal?

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 dan tantangan penskalaan vertikal

Manfaat

  • Kepraktisan: Kode Anda tetap sama karena database masih terlihat seperti satu mesin bagi aplikasi Anda
  • Pemeliharaan yang lebih mudah: Anda hanya perlu mengelola dan mengupdate satu server
  • Konsistensi: Anda tidak perlu khawatir tentang sinkronisasi data antara beberapa server

Tantangan

  • Batas ketat: Setiap mesin memiliki kapasitas maksimum. Pada akhirnya, Anda tidak dapat menambahkan lebih banyak hardware ke satu server
  • Waktu non-operasional: Anda sering kali perlu menghentikan database sejenak untuk melakukan upgrade hardware ini
  • Titik tunggal kegagalan: Jika satu server tersebut tidak berfungsi, seluruh aplikasi Anda juga akan tidak berfungsi

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.

Contoh dan kasus penggunaan umum penskalaan vertikal

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.

Apa yang dimaksud dengan penskalaan horizontal?

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 dan tantangan penskalaan horizontal

Manfaat

  • Pertumbuhan tanpa batas: Anda dapat terus menambahkan lebih banyak mesin seiring bertambahnya kebutuhan Anda
  • Ketersediaan tinggi: Karena Anda memiliki beberapa server, sistem tetap online meskipun salah satu node gagal
  • Efisiensi biaya: Anda dapat menggunakan hardware standar yang lebih murah daripada membeli satu server besar yang mahal

Tantangan

  • Kompleksitas: Aplikasi Anda perlu mengetahui cara berkomunikasi dengan beberapa server, yang menambah tantangan desain
  • Konsistensi data: Menjaga data tetap sinkron di berbagai mesin dapat sulit dikelola
  • Perubahan kode: Anda mungkin perlu mengubah kode aplikasi untuk menangani lingkungan database terdistribusi

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.

Contoh dan kasus penggunaan umum penskalaan horizontal

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.

Pertanyaan umum (FAQ)

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

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

Penskalaan SQL versus NoSQL: mematahkan mitos

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.

Memilih pendekatan skalabilitas yang tepat

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:

  • Jika Anda memiliki jumlah traffic yang dapat diprediksi dan moderat, akan lebih mudah untuk memulai dengan penskalaan vertikal karena lebih sederhana dan cepat untuk disiapkan.
  • Jika Anda membangun untuk skala global atau memerlukan waktu operasional yang konstan, sebaiknya rencanakan penskalaan horizontal sejak awal. Perlu kerja lebih untuk merancangnya, tetapi dapat menyelamatkan Anda dari masalah besar di kemudian hari.

Menskalakan dengan lancar di Google Cloud

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.

Langkah selanjutnya

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

Google Cloud