Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menganalisis kohesi dan kopling untuk dekomposisi basis data
Bagian ini membantu Anda menganalisis pola kopling dan kohesi dalam database monolitik Anda untuk memandu dekomposisinya. Memahami bagaimana komponen database berinteraksi dan bergantung satu sama lain sangat penting untuk mengidentifikasi titik istirahat alami, menilai kompleksitas, dan merencanakan pendekatan migrasi bertahap. Analisis ini mengungkapkan ketergantungan tersembunyi, menyoroti area yang cocok untuk pemisahan segera, dan membantu Anda memprioritaskan upaya dekomposisi sambil meminimalkan risiko transformasi. Dengan memeriksa kopling dan kohesi, Anda dapat membuat keputusan berdasarkan informasi tentang urutan pemisahan komponen untuk menjaga stabilitas sistem selama proses transformasi.
Bagian ini berisi topik berikut:
Tentang kohesi dan kopling
Kopling mengukur tingkat saling ketergantungan antara komponen database. Dalam sistem yang dirancang dengan baik, Anda ingin mencapai kopling longgar, di mana perubahan pada satu komponen memiliki dampak minimal pada komponen lain. Kohesi mengukur seberapa baik elemen-elemen dalam komponen database bekerja sama untuk melayani satu tujuan yang terdefinisi dengan baik. Kohesi yang tinggi menunjukkan bahwa elemen komponen sangat terkait dan berfokus pada fungsi tertentu. Saat menguraikan database monolitik, Anda harus menganalisis kohesi dalam masing-masing komponen dan kopling di antara keduanya. Analisis ini membantu Anda membuat keputusan berdasarkan informasi tentang cara memecah database sambil mempertahankan integritas dan kinerja sistem.
Gambar berikut menunjukkan kopling longgar dengan kohesi tinggi. Komponen dalam database bekerja sama untuk melakukan fungsi tertentu, dan Anda meminimalkan dampak perubahan pada satu komponen. Ini adalah keadaan ideal.
Gambar berikut menunjukkan kopling tinggi dengan kohesi rendah. Komponen database terputus, dan perubahan sangat mungkin berdampak pada komponen lain.
Pola kopling umum dalam database monolitik
Ada beberapa pola kopling yang biasa ditemukan saat menguraikan database monolitik menjadi database khusus layanan mikro. Memahami pola-pola ini sangat penting untuk inisiatif modernisasi database yang sukses. Bagian ini menjelaskan setiap pola, tantangannya, dan praktik terbaik untuk mengurangi kopling.
Pola kopling implementasi
Definisi: Komponen saling berhubungan erat pada tingkat kode dan skema. Misalnya, memodifikasi struktur customer tabel berdampakorder,inventory, dan billing layanan.
Dampak modernisasi: Setiap layanan mikro memerlukan skema database khusus dan lapisan akses datanya sendiri.
Tantangan:
-
Perubahan pada tabel bersama memengaruhi beberapa layanan
-
Risiko tinggi efek samping yang tidak diinginkan
-
Peningkatan kompleksitas pengujian
-
Sulit untuk memodifikasi komponen individual
Praktik terbaik untuk mengurangi kopling:
-
Tentukan antarmuka yang jelas antar komponen
-
Gunakan lapisan abstraksi untuk menyembunyikan detail implementasi
-
Menerapkan skema khusus domain
Pola kopling temporal
Definisi: Operasi harus berjalan dalam urutan tertentu. Misalnya, pemrosesan pesanan tidak dapat dilanjutkan hingga pembaruan inventaris selesai.
Dampak modernisasi: Setiap layanan mikro membutuhkan kontrol data otonom.
Tantangan:
-
Memecah dependensi sinkron antar layanan
-
Kemacetan kinerja
-
Sulit untuk mengoptimalkan
-
Pemrosesan paralel terbatas
Praktik terbaik untuk mengurangi kopling:
-
Menerapkan pemrosesan asinkron jika memungkinkan
-
Gunakan arsitektur berbasis peristiwa
-
Desain untuk konsistensi akhirnya bila sesuai
Pola kopling penyebaran
Definisi: Komponen sistem harus digunakan sebagai satu unit. Misalnya, perubahan kecil pada logika pemrosesan pembayaran memerlukan pemindahan seluruh database.
Dampak modernisasi: Penerapan basis data independen per layanan
Tantangan:
-
Penerapan berisiko tinggi
-
Frekuensi penyebaran terbatas
-
Prosedur rollback yang kompleks
Praktik terbaik untuk mengurangi kopling:
-
Memecah menjadi komponen yang dapat diterapkan secara independen
-
Menerapkan strategi sharding database
-
Gunakan pola penyebaran biru-hijau
Pola kopling domain
Definisi: Domain bisnis berbagi struktur dan logika database. Misalnya, customerorder, dan inventory domain berbagi tabel dan prosedur yang disimpan.
Dampak modernisasi: Isolasi data khusus domain
Tantangan:
-
Batas domain yang kompleks
-
Sulit untuk menskalakan domain individu
-
Aturan bisnis kusut
Praktik terbaik untuk mengurangi kopling:
-
Identifikasi batas domain yang jelas
-
Pisahkan data berdasarkan konteks domain
-
Menerapkan layanan khusus domain
Pola kohesi umum dalam database monolitik
Ada beberapa pola kohesi yang biasa ditemukan ketika mengevaluasi komponen database untuk dekomposisi. Memahami pola-pola ini sangat penting untuk mengidentifikasi komponen database yang terstruktur dengan baik. Bagian ini menjelaskan setiap pola, karakteristiknya, dan praktik terbaik untuk memperkuat kohesi.
Pola kohesi fungsional
Definisi: Semua elemen secara langsung mendukung dan berkontribusi untuk melakukan fungsi tunggal yang terdefinisi dengan baik. Misalnya, semua prosedur dan tabel yang disimpan dalam modul pemrosesan pembayaran hanya menangani operasi terkait pembayaran.
Dampak modernisasi: Pola ideal untuk desain database microservice
Tantangan:
-
Mengidentifikasi batas-batas fungsional yang jelas
-
Memisahkan komponen tujuan campuran
-
Mempertahankan tanggung jawab tunggal
Praktik terbaik untuk memperkuat kohesi:
-
Kelompokkan fungsi terkait bersama
-
Hapus fungsionalitas yang tidak terkait
-
Tentukan batas komponen yang jelas
Pola kohesi berurutan
Definisi: Output dari satu elemen menjadi masukan untuk elemen lainnya. Misalnya, hasil validasi untuk umpan pesanan ke pemrosesan pesanan.
Dampak modernisasi: Membutuhkan analisis alur kerja yang cermat dan pemetaan aliran data
Tantangan:
-
Mengelola dependensi antar langkah
-
Menangani skenario kegagalan
-
Mempertahankan ketertiban proses
Praktik terbaik untuk memperkuat kohesi:
-
Dokumentasikan aliran data yang jelas
-
Menerapkan penanganan kesalahan yang tepat
-
Desain antarmuka yang jelas di antara langkah-langkah
Pola kohesi komunikasi
Definisi: Elemen beroperasi pada data yang sama. Misalnya, fungsi manajemen profil pelanggan semuanya bekerja dengan data pelanggan.
Dampak modernisasi: Membantu mengidentifikasi batas data untuk pemisahan layanan guna mengurangi kopling antar modul
Tantangan:
-
Menentukan kepemilikan data
-
Mengelola akses data bersama
-
Menjaga konsistensi data
Praktik terbaik untuk memperkuat kohesi:
-
Tentukan kepemilikan data yang jelas
-
Menerapkan pola akses data yang tepat
-
Desain partisi data yang efektif
Pola kohesi prosedural
Definisi: Elemen dikelompokkan bersama karena mereka harus dieksekusi dalam urutan tertentu, tetapi mereka mungkin tidak terkait secara fungsional. Misalnya, dalam pemrosesan pesanan, prosedur tersimpan yang menangani validasi pesanan dan pemberitahuan pengguna dikelompokkan bersama hanya karena terjadi secara berurutan, meskipun mereka melayani tujuan yang berbeda dan dapat ditangani oleh layanan terpisah.
Dampak modernisasi: Membutuhkan pemisahan prosedur yang cermat sambil mempertahankan aliran proses
Tantangan:
-
Mempertahankan aliran proses yang benar setelah dekomposisi
-
Mengidentifikasi batas-batas fungsional yang sebenarnya dibandingkan dengan dependensi prosedural
Praktik terbaik untuk memperkuat kohesi:
-
Prosedur terpisah berdasarkan tujuan fungsionalnya daripada perintah eksekusi
-
Gunakan pola orkestrasi untuk mengelola alur proses
-
Menerapkan sistem manajemen alur kerja untuk urutan yang kompleks
-
Rancang arsitektur berbasis peristiwa untuk menangani langkah-langkah proses secara mandiri
Pola kohesi temporal
Definisi: Elemen terkait dengan persyaratan waktu. Misalnya, ketika pesanan ditempatkan, beberapa operasi harus dijalankan bersama: pemeriksaan inventaris, pemrosesan pembayaran, konfirmasi pesanan, dan pemberitahuan pengiriman semuanya harus dilakukan dalam jangka waktu tertentu untuk mempertahankan status pesanan yang konsisten.
Dampak modernisasi: Mungkin memerlukan penanganan khusus dalam sistem terdistribusi
Tantangan:
-
Mengkoordinasikan dependensi waktu di seluruh layanan terdistribusi
-
Mengelola transaksi terdistribusi
-
Mengonfirmasi penyelesaian proses di beberapa komponen
Praktik terbaik untuk memperkuat kohesi:
-
Menerapkan mekanisme penjadwalan dan batas waktu yang tepat
-
Gunakan arsitektur berbasis peristiwa dengan penanganan urutan yang jelas
-
Desain untuk konsistensi akhirnya dengan pola kompensasi
-
Menerapkan pola saga untuk transaksi terdistribusi
Pola kohesi logis atau kebetulan
Definisi: Elemen secara logis dikategorikan untuk melakukan hal yang sama, meskipun mereka memiliki hubungan yang lemah atau tidak bermakna. Contohnya adalah menyimpan data pesanan pelanggan, jumlah inventaris gudang, dan template email pemasaran dalam skema database yang sama karena semuanya berhubungan dengan operasi penjualan, meskipun memiliki pola akses yang berbeda, manajemen siklus hidup, dan persyaratan penskalaan. Contoh lain adalah menggabungkan pemrosesan pembayaran pesanan dan manajemen katalog produk dalam komponen database yang sama karena keduanya merupakan bagian dari sistem e-commerce, meskipun mereka melayani fungsi bisnis yang berbeda dengan kebutuhan operasional yang berbeda.
Dampak modernisasi: Harus difaktorkan ulang atau direorganisasi
Tantangan:
-
Mengidentifikasi pola organisasi yang lebih baik
-
Memecah dependensi yang tidak perlu
-
Restrukturisasi komponen yang dikelompokkan secara sewenang-wenang
Praktik terbaik untuk memperkuat kohesi:
-
Mengatur ulang berdasarkan batas-batas fungsional yang sebenarnya dan domain bisnis
-
Hapus pengelompokan sewenang-wenang berdasarkan hubungan dangkal
-
Menerapkan pemisahan elemen yang tepat berdasarkan kemampuan bisnis
-
Sejajarkan komponen database dengan persyaratan operasional spesifiknya
Menerapkan kopling rendah dan kohesi tinggi
Praktik terbaik
Praktik terbaik berikut dapat membantu Anda mencapai kopling rendah:
-
Minimalkan dependensi antar komponen database
-
Gunakan antarmuka yang terdefinisi dengan baik untuk interaksi komponen
-
Hindari status bersama dan struktur data global
Praktik terbaik berikut dapat membantu Anda mencapai kohesi tinggi:
-
Kelompokkan data dan operasi terkait bersama
-
Pastikan setiap komponen memiliki tanggung jawab tunggal yang jelas
-
Pertahankan batasan yang jelas antara domain bisnis yang berbeda
Fase 1: Memetakan dependensi data
Memetakan hubungan data dan mengidentifikasi batas-batas alam. Anda dapat menggunakan alat, seperti SchemaSpy
Anda juga dapat mengekspor skema database Anda dalam database grafik atau di Jupiter buku catatan. Kemudian, Anda dapat menerapkan algoritma pengelompokan atau komponen yang saling berhubungan untuk mengidentifikasi batas dan dependensi alami. AWS Partner Alat lain, seperti CAST Imaging
Tahap 2: Menganalisis batas-batas transaksi dan pola akses
Menganalisis pola transaksi untuk menjaga sifat atomisitas, konsistensi, isolasi, daya tahan (ACID) dan memahami bagaimana data diakses dan dimodifikasi. Anda dapat menggunakan analisis database dan alat diagnosis, seperti Oracle Automatic Workload Repository (AWR)
Alat AI, seperti vFunction
Fase 3: Identifikasi tabel mandiri
Cari tabel yang menunjukkan dua karakteristik utama:
-
Kohesi tinggi — Isi tabel sangat terkait satu sama lain
-
Kopling rendah — Mereka memiliki ketergantungan minimal pada tabel lain.
Matriks kohesi kopling berikut dapat membantu Anda mengidentifikasi kesulitan memisahkan setiap tabel. Tabel yang muncul di kuadran kanan atas matriks ini adalah kandidat ideal untuk upaya decoupling awal karena paling mudah dipisahkan. Dalam diagram ER, tabel ini memiliki beberapa hubungan kunci asing atau dependensi lainnya. Setelah Anda memisahkan tabel ini, maju ke tabel dengan hubungan yang lebih kompleks.
catatan
Struktur database sering mencerminkan arsitektur aplikasi. Tabel yang lebih mudah dipisahkan pada tingkat database biasanya sesuai dengan komponen yang lebih mudah dikonversi menjadi layanan mikro di tingkat aplikasi.