Mengontrol akses dengan pola layanan pembungkus database - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengontrol akses dengan pola layanan pembungkus database

Layanan pembungkus adalah lapisan layanan yang bertindak sebagai fasad untuk database. Pendekatan ini sangat berharga ketika Anda perlu mempertahankan fungsionalitas yang ada sambil mempersiapkan dekomposisi masa depan. Pola ini mengikuti prinsip sederhana—ketika sesuatu terlalu berantakan, mulailah dengan menahan kekacauan. Layanan pembungkus menjadi satu-satunya cara resmi untuk mengakses database, menyediakan antarmuka yang terkontrol sambil menyembunyikan kompleksitas yang mendasarinya.

Gunakan pola ini ketika dekomposisi database langsung tidak layak karena skema yang kompleks atau ketika beberapa layanan memerlukan akses data berkelanjutan. Ini sangat berharga selama periode transisi karena menyediakan waktu untuk refactoring hati-hati sambil menjaga stabilitas sistem. Pola ini berfungsi dengan baik saat mengkonsolidasikan kepemilikan data ke tim tertentu atau saat aplikasi baru membutuhkan tampilan agregat di beberapa tabel.

Misalnya, terapkan pola ini ketika:

  • Kompleksitas skema mencegah pemisahan segera

  • Beberapa tim membutuhkan akses data yang berkelanjutan

  • Modernisasi bertahap lebih disukai

  • Restrukturisasi tim membutuhkan kepemilikan data yang jelas

  • Aplikasi baru membutuhkan tampilan data terkonsolidasi

Manfaat dan keterbatasan pola layanan pembungkus database

Berikut ini adalah manfaat dari pola pembungkus database:

  • Pertumbuhan terkontrol - Layanan pembungkus mencegah penambahan lebih lanjut yang tidak terkontrol ke skema database.

  • Batas yang jelas — Proses implementasi membantu Anda menetapkan batasan kepemilikan dan tanggung jawab yang jelas.

  • Kebebasan refactoring — Layanan pembungkus memungkinkan Anda membuat perubahan internal tanpa memengaruhi konsumen.

  • Peningkatan observabilitas - Layanan pembungkus adalah satu titik untuk pemantauan dan pencatatan.

  • Pengujian yang disederhanakan - Layanan pembungkus memudahkan penggunaan layanan untuk membuat versi tiruan yang disederhanakan untuk pengujian.

Berikut ini adalah keterbatasan pola pembungkus database.

  • Kopling teknologi — Layanan pembungkus bekerja paling baik ketika menggunakan tumpukan teknologi yang sama dengan layanan konsumsi.

  • Overhead awal — Layanan pembungkus memerlukan infrastruktur tambahan yang dapat memengaruhi kinerja.

  • Upaya migrasi — Untuk mengimplementasikan layanan pembungkus, Anda harus berkoordinasi di seluruh tim untuk beralih dari akses langsung.

  • Kinerja - Jika layanan pembungkus mengalami lalu lintas tinggi, penggunaan berat, atau akses yang sering, layanan yang dikonsumsi mungkin mengalami kinerja yang buruk. Di atas database, layanan wrapper harus menangani pagination, kursor, dan koneksi database. Bergantung pada kasus penggunaan Anda, skalanya mungkin tidak baik, dan mungkin kurang cocok untuk beban kerja ekstrak, transformasi, dan beban (ETL).

Menerapkan pola layanan pembungkus database

Ada dua fase untuk mengimplementasikan pola layanan pembungkus database. Pertama, Anda membuat layanan pembungkus database. Kemudian, Anda mengarahkan semua akses melaluinya dan mendokumentasikan pola akses.

Fase 1: Membuat layanan pembungkus database

Buat layer layanan ringan yang bertindak sebagai penjaga gerbang ke database Anda. Awalnya, itu harus mencerminkan semua fungsi yang ada. Layanan pembungkus ini menjadi titik akses wajib untuk semua operasi database, yang mengubah dependensi database langsung menjadi dependensi tingkat layanan. Terapkan pencatatan dan pemantauan terperinci pada lapisan ini untuk melacak pola penggunaan, metrik kinerja, dan frekuensi akses. Pertahankan prosedur tersimpan yang ada, tetapi pastikan bahwa mereka hanya diakses melalui antarmuka layanan baru ini.

Tahap 2: Menerapkan kontrol akses

Secara sistematis mengalihkan semua akses database melalui layanan pembungkus, dan kemudian mencabut izin database langsung dari sistem eksternal yang mengakses database secara langsung. Dokumentasikan setiap pola akses dan ketergantungan saat layanan dimigrasikan. Akses terkontrol ini memungkinkan refactoring internal komponen database tanpa mengganggu konsumen eksternal. Misalnya, mulailah dengan risiko rendah, operasi hanya-baca alih-alih alur kerja transaksional yang kompleks.

Fase 3: Memantau kinerja database

Gunakan layanan pembungkus sebagai titik pemantauan terpusat untuk kinerja database. Lacak metrik kunci, termasuk waktu respons kueri, pola penggunaan, tingkat kesalahan, dan pemanfaatan sumber daya. Siapkan peringatan untuk ambang kinerja dan pola yang tidak biasa. Misalnya, pantau kueri yang berjalan lambat, pemanfaatan kumpulan koneksi, dan throughput transaksi untuk secara proaktif mengidentifikasi potensi masalah.

Gunakan tampilan konsolidasi ini untuk mengoptimalkan kinerja database melalui penyetelan kueri, penyesuaian alokasi sumber daya, dan analisis pola penggunaan. Sifat terpusat dari layanan pembungkus membuatnya lebih mudah untuk menerapkan perbaikan dan memvalidasi dampaknya di semua konsumen, sambil mempertahankan standar kinerja yang konsisten.

Praktik terbaik untuk mengimplementasikan layanan pembungkus database

Praktik terbaik berikut dapat membantu Anda mengimplementasikan layanan pembungkus database:

  • Mulai dari yang kecil - Mulailah dengan pembungkus minimal yang hanya memproksi fungsionalitas yang ada

  • Menjaga stabilitas - Menjaga antarmuka layanan tetap stabil saat melakukan perbaikan internal

  • Memantau penggunaan - Menerapkan pemantauan komprehensif untuk memahami pola akses

  • Kepemilikan yang jelas - Tetapkan tim khusus untuk mempertahankan pembungkus dan skema yang mendasarinya

  • Mendorong penyimpanan lokal — Memotivasi tim untuk menyimpan data mereka di database mereka sendiri

Contoh berbasis skenario

Bagian ini menjelaskan contoh bagaimana perusahaan fiktif, bernama AnyCompany Books, dapat menggunakan pola pembungkus database untuk mengontrol akses ke sistem database monolitik mereka. Di AnyCompany Books, ada tiga layanan penting: Pengiriman, Keuangan, dan Pemrosesan Pesanan. Layanan ini berbagi akses ke database pusat. Setiap layanan dikelola oleh tim yang berbeda. Seiring waktu, mereka secara independen memodifikasi skema database untuk memenuhi kebutuhan spesifik mereka. Hal ini menyebabkan jaringan dependensi yang kusut dan struktur basis data yang semakin kompleks.

Tiga aplikasi berbagi akses ke database pusat dengan beberapa skema yang dimodifikasi.

Aplikasi perusahaan atau arsitek perusahaan mengakui perlunya menguraikan basis data monolitik ini. Tujuan mereka adalah untuk memberikan setiap layanan database khusus untuk meningkatkan pemeliharaan dan mengurangi ketergantungan lintas tim. Namun, mereka menghadapi tantangan yang signifikan—hampir tidak mungkin untuk menguraikan database sementara ketiga tim terus memodifikasinya secara aktif untuk proyek mereka yang sedang berlangsung. Perubahan skema yang konstan dan kurangnya koordinasi antar tim membuatnya sangat berisiko untuk mencoba restrukturisasi yang signifikan.

Arsitek menggunakan pola layanan pembungkus database untuk mulai mengontrol akses ke database monolitik. Pertama, mereka menyiapkan layanan pembungkus database untuk modul tertentu, yang disebut layanan Order. Kemudian, mereka mengarahkan layanan Pemrosesan Pesanan untuk mengakses layanan pembungkus alih-alih mengakses database secara langsung. Gambar berikut menunjukkan infrastruktur yang dimodifikasi.

Akses database setelah menerapkan layanan pembungkus.