Bagikan melalui


Pola Lapisan Anti-korupsi

Azure
Azure Logic Apps

Terapkan fasad atau lapisan adaptor di antara subsistem yang berbeda yang tidak berbagi semantik yang sama. Lapisan ini menerjemahkan permintaan yang dilakukan satu subsistem ke subsistem lainnya. Gunakan pola ini untuk memastikan bahwa desain aplikasi tidak dibatasi oleh dependensi pada subsistem luar. Pola ini pertama kali dijelaskan oleh Eric Evans dalam Domain-Driven Design.

Konteks dan masalah

Sebagian besar aplikasi mengandalkan sistem lain untuk beberapa data atau fungsionalitas. Misalnya, ketika aplikasi warisan dimigrasikan ke sistem modern, aplikasi mungkin masih memerlukan sumber daya warisan yang ada. Fitur baru harus dapat memanggil sistem warisan. Ini terutama berlaku untuk migrasi bertahap, di mana fitur yang berbeda dari aplikasi yang lebih besar dipindahkan ke sistem modern dari waktu ke waktu.

Seringkali sistem warisan ini menderita masalah kualitas seperti skema data yang berkonvolusi atau API usang. Fitur dan teknologi yang digunakan dalam sistem warisan dapat sangat bervariasi dari sistem yang lebih modern. Untuk beroperasi dengan sistem warisan, aplikasi baru mungkin perlu mendukung infrastruktur, protokol, model data, API, atau fitur lain yang tidak akan Anda masukkan ke dalam aplikasi modern.

Mempertahankan akses antara sistem baru dan warisan dapat memaksa sistem baru untuk mematuhi setidaknya beberapa API sistem warisan atau semantik lainnya. Ketika fitur warisan ini memiliki masalah kualitas, mendukungnya "rusak" apa yang mungkin merupakan aplikasi modern yang dirancang dengan bersih.

Masalah serupa dapat muncul dengan sistem eksternal apa pun yang tidak dikontrol oleh tim pengembangan Anda, bukan hanya sistem warisan.

Solusi

Isolasi subsistem yang berbeda dengan menempatkan lapisan anti-korupsi di antara mereka. Lapisan ini menerjemahkan komunikasi antara kedua sistem, memungkinkan satu sistem untuk tetap tidak berubah sementara yang lain dapat menghindari penyusupan desain dan pendekatan teknologinya.

Diagram pola Lapisan Anti-Korupsi

Diagram di atas menunjukkan aplikasi dengan dua subsistem. Subsistem A memanggil subsistem B melalui lapisan antikorupsi. Komunikasi antara subsistem A dan lapisan anti-korupsi selalu menggunakan model data dan arsitektur subsistem A. Panggilan dari lapisan anti-korupsi ke subsistem B sesuai dengan model atau metode data subsistem tersebut. Lapisan anti-korupsi berisi semua logika yang diperlukan untuk diterjemahkan antara kedua sistem. Lapisan dapat diimplementasikan sebagai komponen dalam aplikasi atau sebagai layanan independen.

Masalah dan pertimbangan

  • Lapisan anti-korupsi dapat menambahkan latensi ke panggilan yang dilakukan di antara kedua sistem.
  • Lapisan anti-korupsi menambahkan layanan tambahan yang harus dikelola dan dikelola.
  • Pertimbangkan bagaimana lapisan anti-korupsi Anda akan diskalakan.
  • Pertimbangkan apakah Anda membutuhkan lebih dari satu lapisan anti-korupsi. Anda mungkin ingin menguraikan fungsionalitas ke dalam beberapa layanan menggunakan teknologi atau bahasa yang berbeda, atau mungkin ada alasan lain untuk mempartisi lapisan anti-korupsi.
  • Pertimbangkan bagaimana lapisan anti-korupsi akan dikelola sehubungan dengan aplikasi atau layanan Anda yang lain. Bagaimana hal itu akan diintegrasikan ke dalam proses pemantauan, rilis, dan konfigurasi Anda?
  • Pastikan konsistensi transaksi dan data dipertahankan dan dapat dipantau.
  • Pertimbangkan apakah lapisan anti-korupsi perlu menangani semua komunikasi antara subsistem yang berbeda, atau hanya subset fitur.
  • Jika lapisan anti-korupsi adalah bagian dari strategi migrasi aplikasi, pertimbangkan apakah itu akan permanen, atau akan dihentikan setelah semua fungsi warisan dimigrasikan.
  • Pola ini diilustrasikan dengan subsistem yang berbeda di atas, tetapi dapat berlaku untuk arsitektur layanan lain juga, seperti ketika mengintegrasikan kode warisan bersama-sama dalam arsitektur monolitik.

Kapan menggunakan pola ini

Gunakan pola ini ketika:

  • Migrasi direncanakan terjadi selama beberapa tahap, tetapi integrasi antara sistem baru dan warisan perlu dipertahankan.
  • Dua subsistem atau lebih memiliki semantik yang berbeda, tetapi masih perlu berkomunikasi.

Pola ini mungkin tidak cocok jika tidak ada perbedaan semantik yang signifikan antara sistem baru dan warisan.

Desain beban kerja

Arsitek harus mengevaluasi bagaimana pola Lapisan Anti-korupsi dapat digunakan dalam desain beban kerja mereka untuk mengatasi tujuan dan prinsip yang tercakup dalam pilar Azure Well-Architected Framework. Contohnya:

Pilar Bagaimana pola ini mendukung tujuan pilar
Keunggulan Operasional membantu memberikan kualitas beban kerja melalui proses standar dan kohesi tim. Pola ini membantu memastikan bahwa desain komponen baru tetap tidak terinfluensi oleh implementasi warisan yang mungkin memiliki model data atau aturan bisnis yang berbeda ketika Anda berintegrasi dengan sistem warisan ini dan dapat mengurangi utang teknis dalam komponen baru sambil tetap mendukung komponen yang ada.

- Alat dan proses OE:04

Seperti halnya keputusan desain apa pun, pertimbangkan tradeoff terhadap tujuan pilar lain yang mungkin diperkenalkan dengan pola ini.