Basis Data Integrasi atau integrasi melalui basis data adalah pola yang banyak digemari. NET303 Ini adalah pola di mana beberapa aplikasi atau layanan terintegrasi melalui basis data. Dalam kasus ekstrem, tetapi sayangnya tidak jarang terjadi, beberapa aplikasi berbagi tabel dalam basis data yang sama.

Dalam postingan ini, saya ingin membahas berbagai jenis NET303 kopling yang tercipta ketika beberapa aplikasi terintegrasi melalui database yang sama. Sangat disarankan agar suatu layanan atau aplikasi memiliki datanya sendiri. Ketika suatu layanan memiliki datanya sendiri, ia menciptakan kontrak eksplisit melalui API yang bisnis-jujur berlawanan dengan kontrak implisit melalui tabel basis data yang implementasinya lebih rinci.
Berikut ini adalah berbagai jenis kopling.
- Penggabungan skema. Skema basis data bersama harus mengakomodasi kebutuhan semua aplikasi yang mengakses basis data. Ini berarti mendapatkan persetujuan dari semua pengguna saat mengubah skema basis data. Salah satu hasil khusus dari penggabungan skema adalah ketika Anda berakhir dengan tabel yang jarang, di mana kolom-kolom tertentu hanya digunakan oleh satu aplikasi atau sebagian dari aplikasi tersebut. Hal ini menambah beban kognitif tim yang membangun aplikasi yang tidak menggunakan kolom-kolom tersebut.
- Penggabungan data. Semantik data dalam tabel juga harus selaras di semua aplikasi yang berbeda. Hal ini bisa menjadi rumit seiring waktu karena semantik data sebagian tertanam di dalam basis data dan sebagian lagi di dalam aplikasi. Sering kali, saya melihat status suatu proses yang disimpan di dalam basis data seperti "Dimulai", "Diproses", "Selesai" dan ditafsirkan secara berbeda oleh aplikasi yang berbeda. Mengubah status ini menjadi sangat sulit karena menciptakan efek berantai di semua aplikasi yang menggunakannya. Menambahkan status baru juga bisa sulit.
- Kopling abstraksi. Ketika sistem dari luar domain mengakses tabel basis data suatu aplikasi, hal ini menciptakan penggabungan abstraksi di mana abstraksi yang terhubung dengan sistem eksternal lebih merupakan detail implementasi daripada abstraksi yang jujur dalam bisnis. Misalnya, ketika pelanggan diperlihatkan inventaris "mentah" dari basis data untuk toko tertentu, padahal yang sebenarnya mereka inginkan adalah inventaris "tersedia untuk dijual" untuk toko tersebut. Inventaris yang tersedia untuk dijual memperhitungkan permintaan toko, inventaris yang hilang, inventaris yang rusak, dan sebagainya. Ketika memperlihatkan inventaris mentah, pelanggan kemudian harus mengakses tabel lain atau membangun logika lain untuk mendapatkan inventaris yang tersedia untuk dijual. Dengan demikian, memperlihatkan abstraksi yang jujur dalam bisnis sebagai layanan seperti inventaris yang tersedia untuk dijual menyembunyikan kompleksitas inventaris di dalam layanan dan menyediakan cara bagi layanan untuk mengembangkan implementasinya seiring waktu. Selain itu, memikirkan antarmuka sistem dengan cara yang jujur dalam bisnis membuat sistem lebih dipahami secara luas dan mengurangi beban kognitif bagi pengembang yang menggunakan abstraksi tersebut. Oleh karena itu, yang terbaik adalah memisahkan antarmuka sistem dari implementasi yang mendasarinya.
- Penggandengan penyebaran. Sebagai hasil langsung dari penggabungan skema dan data, perubahan basis data harus dikoordinasikan dengan semua sistem yang mengakses basis data. Basis data merupakan detail implementasi sistem. Perubahan pada basis data seharusnya tidak memerlukan koordinasi rilis dengan konsumennya selama antarmuka sistem belum diubah.
- Penggandengan waktu proses. Ketika beberapa aplikasi mengakses basis data yang sama, sulit untuk melakukan penskalaan atau pengujian kinerja aplikasi-aplikasi tersebut secara terpisah. Untuk mereplikasi "beban produksi" pada suatu aplikasi, Anda harus membuat aktivitas di semua aplikasi yang mengakses basis data tersebut untuk benar-benar memahami kondisi deadlock/race pada aplikasi tersebut. Intinya, akan sangat sulit untuk berkomitmen pada SLA suatu aplikasi karena isolasi antara lalu lintas yang berasal dari berbagai aplikasi sangat minim.
Terima kasih sudah membaca! Komentar/masukan diterima.




