Bagikan melalui


Pola Gambar Strangler

Pola ini secara bertahap memigrasikan sistem warisan dengan secara bertahap mengganti potongan fungsionalitas tertentu dengan aplikasi dan layanan baru. Saat Anda mengganti fitur dari sistem warisan, sistem baru akhirnya terdiri dari semua fitur sistem lama. Pendekatan ini menekan sistem lama sehingga Anda dapat menonaktifkannya.

Konteks dan masalah

Seiring bertambahnya usia sistem, alat pengembangan, teknologi hosting, dan arsitektur sistem yang mereka bangun dapat menjadi usang. Saat fitur dan fungsionalitas baru ditambahkan, aplikasi ini menjadi lebih kompleks, yang dapat membuatnya lebih sulit untuk dipertahankan atau diperluas.

Mengganti seluruh sistem yang kompleks adalah usaha besar. Sebaliknya, banyak tim lebih suka bermigrasi ke sistem baru secara bertahap dan menjaga sistem lama untuk menangani fitur yang tidak dimigrasikan. Namun, menjalankan dua versi terpisah dari aplikasi memaksa klien untuk melacak versi mana yang memiliki fitur individual. Setiap kali tim memigrasikan fitur atau layanan, mereka harus mengarahkan klien ke lokasi baru. Untuk mengatasi tantangan ini, Anda dapat mengadopsi pendekatan yang mendukung migrasi bertahap dan meminimalkan gangguan pada klien.

Solusi

Gunakan proses bertahap untuk mengganti potongan fungsionalitas tertentu dengan aplikasi dan layanan baru. Pelanggan dapat terus menggunakan antarmuka yang sama, tidak menyadari bahwa migrasi ini sedang berlangsung.

Diagram pola Beringin Perambat.

Pola Strangler Fig menyediakan pendekatan terkontrol dan bertahap untuk modernisasi. Ini memungkinkan aplikasi yang ada untuk terus berfungsi selama upaya modernisasi. Fasad (proksi) mencegat permintaan yang masuk ke sistem lama back-end. Fasad mengalihkan permintaan ini ke aplikasi lama atau ke layanan baru.

Pola ini mengurangi risiko dalam migrasi dengan memungkinkan tim Anda untuk bergerak maju dengan kecepatan yang sesuai dengan kompleksitas proyek. Saat Anda memigrasikan fungsionalitas ke sistem baru, sistem warisan menjadi usang, dan Anda menonaktifkan sistem warisan.

  1. Pola Strangler Fig dimulai dengan memperkenalkan fasad (proksi) antara aplikasi klien, sistem warisan, dan sistem baru. Fasad bertindak sebagai perantara. Ini memungkinkan aplikasi klien untuk berinteraksi dengan sistem warisan dan sistem baru. Awalnya, antarmuka merutekan sebagian besar permintaan ke sistem lama.

  2. Saat migrasi berlangsung, fasad secara bertahap mengalihkan permintaan dari sistem warisan ke sistem baru. Dengan setiap iterasi, Anda menerapkan lebih banyak fungsionalitas dalam sistem baru.

    Pendekatan inkremental ini secara bertahap mengurangi tanggung jawab sistem warisan dan memperluas cakupan sistem baru. Prosesnya berulang. Ini memungkinkan tim untuk mengatasi kompleksitas dan dependensi dalam tahap yang dapat dikelola. Tahapan ini membantu sistem tetap stabil dan berfungsi.

  3. Setelah Anda memigrasikan semua fungsionalitas dan tidak ada dependensi pada sistem warisan, Anda dapat menonaktifkan sistem warisan. Fasad merutekan semua permintaan secara eksklusif ke sistem baru.

  4. Anda menghapus fasad dan mengonfigurasi ulang aplikasi klien untuk berkomunikasi langsung dengan sistem baru. Langkah ini menandai penyelesaian migrasi.

Masalah dan pertimbangan

Pertimbangkan poin-poin berikut saat Anda memutuskan cara menerapkan pola ini:

  • Pertimbangkan cara menangani layanan dan penyimpanan data yang mungkin digunakan oleh sistem baru dan sistem warisan. Pastikan kedua sistem dapat mengakses sumber daya ini secara bersamaan.

  • Rancang aplikasi dan layanan baru sehingga Anda dapat dengan mudah mencegat dan menggantinya pada saat migrasi strangler fig di masa mendatang. Misalnya, berusaha untuk memiliki demarkasi yang jelas antara bagian solusi Anda sehingga Anda dapat memigrasikan setiap bagian satu per satu.

  • Setelah migrasi selesai, Anda biasanya menghapus fasad ara pencekik. Atau, Anda dapat mempertahankan fasad sebagai adaptor untuk digunakan klien warisan saat Anda memperbarui sistem inti untuk klien yang lebih baru.

  • Pastikan bahwa fasad menyesuaikan diri dengan migrasi.

  • Pastikan bahwa fasad tidak menjadi satu titik kegagalan atau hambatan performa.

Kapan menggunakan pola ini

Gunakan pola ini ketika:

  • Anda secara bertahap memigrasikan aplikasi back-end ke arsitektur baru, terutama saat mengganti sistem besar, komponen utama, atau fitur kompleks menimbulkan risiko.

  • Sistem asli dapat terus ada untuk jangka waktu yang lama selama upaya migrasi.

Pola ini mungkin tidak cocok ketika:

  • Permintaan ke sistem back-end tidak dapat dicegat.

  • Anda memigrasikan sistem kecil dan mengganti seluruh sistem itu sederhana.

  • Anda perlu sepenuhnya menonaktifkan solusi asli dengan cepat.

Desain beban kerja

Evaluasi cara menggunakan pola Strangler Fig dalam rancangan beban kerja agar memenuhi tujuan dan prinsip pilar Azure Well-Architected Framework. Tabel berikut memberikan panduan tentang bagaimana pola ini mendukung tujuan setiap pilar.

Pilar Bagaimana pola ini mendukung tujuan pilar
Keputusan desain keandalan membantu agar beban kerja Anda menjadi tangguh terhadap kerusakan dan memastikan bahwa ia pulih ke status berfungsi penuh setelah kegagalan terjadi. Pendekatan inkremental pola ini dapat membantu mengurangi risiko selama transisi komponen dibandingkan dengan membuat perubahan sistemik besar sekaligus.

- Pengujian RE:08
Pengoptimalan Biaya berfokus pada mempertahankan dan meningkatkanpengembalian investasi (ROI) beban kerja Anda. Tujuan dari pendekatan ini adalah untuk memaksimalkan penggunaan investasi yang ada dalam sistem yang sedang berjalan sambil memodernisasi secara bertahap. Ini memungkinkan Anda untuk melakukan penggantian ROI tinggi sebelum penggantian ROI rendah.

- Biaya komponen CO:07
- Biaya Lingkungan CO:08
Keunggulan Operasional membantu memberikan kualitas beban kerja melalui proses yang distandarisasi dan kohesi tim. Pola ini memberikan pendekatan peningkatan berkelanjutan. Penggantian bertambah bertahap yang membuat perubahan kecil dari waktu ke waktu lebih disukai daripada perubahan sistemik besar yang lebih berisiko diterapkan.

- Rantai pasokan OE:06 untuk pengembangan beban kerja
- OE:11 Praktik penyebaran aman

Pertimbangkan pertukaran terhadap tujuan pilar lain yang mungkin diperkenalkan oleh pola ini.

Contoh

Sistem warisan biasanya bergantung pada database terpusat. Seiring waktu, database terpusat dapat menjadi sulit dikelola dan berkembang karena banyak dependensinya. Untuk mengatasi tantangan ini, berbagai pola database dapat memfasilitasi transisi dari sistem warisan tersebut. Pola Strangler Fig adalah salah satu pola ini. Terapkan pola Strangler Fig sebagai pendekatan bertahap untuk transisi secara bertahap dari sistem warisan ke sistem baru dan meminimalkan gangguan.

Diagram pola Strangler Fig yang diterapkan ke database.

  1. Anda memperkenalkan sistem baru, dan sistem baru mulai menangani beberapa permintaan dari aplikasi klien. Namun, sistem baru masih tergantung pada database warisan untuk semua operasi baca dan tulis. Sistem warisan tetap beroperasi, yang memfasilitasi transisi yang lancar tanpa perubahan struktural segera.

  2. Pada fase berikutnya, Anda memperkenalkan database baru. Anda memigrasikan riwayat beban data ke database baru dengan menggunakan proses ekstrak, transformasi, dan pemuatan (ETL). Proses ETL menyinkronkan database baru dengan database warisan. Selama fase ini, sistem baru melakukan penulisan bayangan. Sistem baru memperbarui kedua database secara paralel. Sistem baru terus membaca dari database warisan untuk memvalidasi konsistensi.

  3. Akhirnya, database baru menjadi sistem pencatatan. Database baru mengambil alih semua operasi baca dan tulis. Anda dapat mulai menghentikan penggunaan database lama dan sistem lama. Setelah memvalidasi database baru, Anda bisa menghentikan database warisan. Penghentian ini menyelesaikan proses migrasi dengan gangguan minimal.

Langkah selanjutnya

Baca posting blog Martin Fowler tentang aplikasi pola Strangler Fig.

Pola Jembatan Pesan