Menganalisis kohesi dan kopling untuk dekomposisi basis data - AWS Bimbingan Preskriptif

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.

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.

Komponen memiliki kopling longgar dan kohesi tinggi.

Gambar berikut menunjukkan kopling tinggi dengan kohesi rendah. Komponen database terputus, dan perubahan sangat mungkin berdampak pada komponen lain.

Komponen memiliki kopling tinggi dan kohesi rendah.

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, untuk memvisualisasikan database dengan menampilkan tabel dalam diagram entity-relationship (ER). Ini memberikan analisis statis database dan menunjukkan beberapa batas dan dependensi yang jelas dalam database.

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, dapat membantu memahami dependensi database Anda.

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)atau PostgreSQL pg_stat_statements. Analisis ini membantu Anda memahami siapa yang mengakses database dan apa batas transaksi. Ini juga dapat membantu Anda memahami kohesi dan kopling antar tabel saat runtime. Anda juga dapat menggunakan alat pemantauan dan pembuatan profil yang dapat menautkan kode dan profil eksekusi database, seperti Dynatrace AppEngine.

Alat AI, seperti vFunction, dapat membantu Anda mengidentifikasi batas domain dengan menganalisis batas fungsional dan domain aplikasi. Meskipun vFunction terutama menganalisis lapisan aplikasi, wawasannya dapat memandu dekomposisi aplikasi dan database, mendukung penyelarasan dengan domain bisnis.

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.

Kuadran kanan atas mudah, dan kuadran kiri bawah sulit.
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.