Mengelola dependensi untuk masalah lintas sektoral - AWS Bimbingan Preskriptif

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

Mengelola dependensi untuk masalah lintas sektoral

Manajemen ketergantungan sadar sangat penting untuk keberhasilan arsitektur terdistribusi seperti mikro-frontend. Manajemen ketergantungan adalah salah satu bagian yang paling menantang dari pengembangan mikro-frontend.

Dalam arsitektur mikro-frontend, dua aspek penting dari manajemen ketergantungan adalah penalti kinerja dari mentransfer artefak kode besar ke klien, dan overhead dalam sumber daya komputasi. Idealnya, organisasi Anda perlu mengamanatkan bagaimana dependensi dalam arsitektur frontend terdistribusi dipertahankan.

Tiga strategi yang layak untuk mengamanatkan pemeliharaan ketergantungan tidak berbagi apa-apa, menggunakan standar web seperti peta impor, dan federasi modul. Pendekatan lain adalah anti-pola karena melanggar prinsip-prinsip dasar arsitektur terdistribusi.

Bagikan apa pun, jika memungkinkan

Pendekatan share-nothing mendalilkan bahwa tidak ada dependensi antara artefak perangkat lunak independen yang harus dibagikan sama sekali, atau setidaknya tidak pada integrasi atau runtime. Ini berarti bahwa jika dua frontend mikro bergantung pada perpustakaan yang sama, masing-masing harus memanggang di perpustakaan pada waktu pembuatan dan mengirimkannya secara terpisah. Selain itu, setiap micro-frontend harus memvalidasi bahwa pustaka tidak mencemari ruang nama global dan sumber daya bersama.

Ini mengarah pada redundansi, tetapi ini adalah pertukaran sadar dengan kelincahan maksimum. Tanpa dependensi runtime yang dibagikan, tim memiliki fleksibilitas maksimum untuk mengembangkan perangkat lunak dengan cara apa pun yang mereka anggap berguna selama mereka melakukannya dalam lingkup solusi mereka dan tidak melanggar kontrak antarmuka apa pun.

Pada platform di mana frontend mikro mengikuti prinsip share-nothing, penting untuk menjaga frontend mikro seringan mungkin. Ini membutuhkan pengembang yang terampil dan rajin dalam mengoptimalkan frontend mikro mereka untuk kinerja dan yang tidak mengorbankan pengalaman pengguna untuk pengalaman pengembang.

Saat Anda membagikan kode

Saat Anda membuat keputusan untuk membagikan beberapa kode, Anda dapat membagikannya sebagai pustaka atau modul runtime. Misalnya, tim inti frontend mengirimkan pustaka untuk konsumsi mikro-frontend melalui. CDNs Tim nilai bisnis dapat memuat pustaka saat runtime, atau mereka dapat menggunakan repositori paket untuk mempublikasikan pustaka mereka. Tim micro-frontend dapat mengembangkan terhadap versi tertentu dari pustaka paket pada waktu pembuatan, mirip dengan aplikasi seluler yang menggunakan kerangka kerja hybrid.

Opsi ketiga adalah menggunakan registri paket pribadi untuk mendukung integrasi waktu pembuatan pustaka umum. Ini mengurangi risiko bahwa perubahan yang melanggar dalam kontrak pustaka memulai kesalahan saat runtime. Namun, pendekatan yang lebih konservatif ini membutuhkan lebih banyak tata kelola untuk menyinkronkan semua frontend mikro dengan versi perpustakaan yang lebih baru.

Untuk meningkatkan waktu pemuatan halaman, micro-frontend dapat mengeksternalisasi dependensi pustaka yang akan dimuat dari potongan cache dari CDN seperti Amazon. CloudFront

Untuk mengelola dependensi runtime, micro-frontend dapat menggunakan import-maps (atau pustaka sepertiSystem.js) untuk menentukan dari mana setiap modul dimuat saat runtime. webpack Module Federation adalah pendekatan lain untuk menunjuk ke versi modul jarak jauh yang dihosting dan menyelesaikan dependensi umum di seluruh frontend mikro independen.

Pendekatan lain adalah memfasilitasi pemuatan dinamis peta impor dengan permintaan awal ke titik akhir penemuan.

Status bersama

Untuk mengurangi kopling mikro-frontend, penting untuk menghindari manajemen negara global yang dapat diakses dari semua frontend mikro dalam tampilan yang sama, mirip dengan arsitektur monolitik. Misalnya, memiliki toko Redux global yang dapat diakses dari semua frontend mikro meningkatkan kopling.

Pola untuk menghilangkan status bersama adalah merangkum dalam frontend mikro, dan berkomunikasi dengan pesan asinkron seperti yang dibahas sebelumnya.

Jika benar-benar diperlukan, perkenalkan antarmuka yang terdefinisi dengan baik untuk status global, dan pilih untuk berbagi hanya-baca untuk menghindari perilaku yang tidak terduga:

  • Ketika ada pemisahan vertikal, Anda dapat menggunakan komponen URL dan penyimpanan browser untuk mengakses informasi dari lingkungan host.

  • Bila Anda memiliki split campuran, Anda juga dapat menggunakan event atau JavaScript pustaka kustom standar DOM, seperti pemancar peristiwa atau aliran dua arah, untuk meneruskan informasi ke frontend mikro.

Jika Anda perlu berbagi beberapa informasi di seluruh frontend mikro, kami sarankan untuk meninjau kembali batas mikro-frontend. Kebutuhan untuk berbagi mungkin disebabkan oleh evolusi bisnis atau desain awal di bawah standar.

Dimungkinkan juga untuk menggunakan sesi sisi server, di mana setiap mikro-frontend mengambil data yang diperlukan dengan menggunakan pengenal sesi. Untuk mengurangi kopling, penting untuk menghilangkan status bersama dan memisahkan data sesi spesifik mikro-frontend.