Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat portal untuk frontend mikro dengan menggunakan AWS Amplify, Angular, dan Federasi Modul
Milena Godau dan Pedro Garcia, Amazon Web Services
Ringkasan
Arsitektur micro-frontend memungkinkan beberapa tim untuk bekerja pada bagian yang berbeda dari aplikasi frontend secara independen. Setiap tim dapat mengembangkan, membangun, dan menyebarkan fragmen frontend tanpa mengganggu bagian lain dari aplikasi. Dari perspektif pengguna akhir, tampaknya menjadi aplikasi tunggal yang kohesif. Namun, mereka berinteraksi dengan beberapa aplikasi independen yang diterbitkan oleh tim yang berbeda.
Dokumen ini menjelaskan cara membuat arsitektur micro-frontend dengan menggunakan AWS Amplify
Portal dibagi secara vertikal. Ini berarti bahwa frontend mikro adalah keseluruhan tampilan atau kelompok tampilan, bukan bagian dari tampilan yang sama. Oleh karena itu aplikasi shell hanya memuat satu micro-frontend pada satu waktu.
Micro-frontend diimplementasikan sebagai modul jarak jauh. Aplikasi shell dengan malas memuat modul jarak jauh ini, yang menunda inisialisasi mikro-frontend hingga diperlukan. Pendekatan ini mengoptimalkan kinerja aplikasi dengan hanya memuat modul yang diperlukan. Ini mengurangi waktu muat awal dan meningkatkan pengalaman pengguna secara keseluruhan. Selain itu, Anda berbagi dependensi umum di seluruh modul melalui file konfigurasi webpack (webpack.config.js). Praktik ini mempromosikan penggunaan kembali kode, mengurangi duplikasi, dan merampingkan proses bundling.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
Izin untuk digunakan AWS Amplify
Keakraban dengan Angular
Versi produk
Angular CLI versi 13.1.2 atau yang lebih baru
@angular -architects/module-federation versi 14.0.1 atau yang lebih baru
webpack versi 5.4.0 atau yang lebih baru
AWS Amplify Gen 1
Batasan
Arsitektur micro-frontend adalah pendekatan yang ampuh untuk membangun aplikasi web yang terukur dan tangguh. Namun, penting untuk memahami tantangan potensial berikut sebelum mengadopsi pendekatan ini:
Integrasi — Salah satu tantangan utama adalah potensi peningkatan kompleksitas dibandingkan dengan frontend monolitik. Mengatur beberapa frontend mikro, menangani komunikasi di antara mereka, dan mengelola dependensi bersama bisa lebih rumit. Selain itu, mungkin ada overhead kinerja yang terkait dengan komunikasi antara frontend mikro. Komunikasi ini dapat meningkatkan latensi dan mengurangi kinerja. Ini perlu ditangani melalui mekanisme pesan yang efisien dan strategi berbagi data.
Duplikasi kode — Karena setiap micro-frontend dikembangkan secara independen, ada risiko duplikasi kode untuk fungsionalitas umum atau pustaka bersama. Ini dapat meningkatkan ukuran aplikasi secara keseluruhan dan memperkenalkan tantangan pemeliharaan.
Koordinasi dan manajemen - Mengkoordinasikan proses pengembangan dan penyebaran di beberapa frontend mikro dapat menjadi tantangan. Memastikan pembuatan versi yang konsisten, mengelola dependensi, dan menjaga kompatibilitas antar komponen menjadi lebih penting dalam arsitektur terdistribusi. Menetapkan tata kelola yang jelas, pedoman, dan jalur pipa pengujian dan penyebaran otomatis sangat penting untuk kolaborasi dan pengiriman yang mulus.
Pengujian - Menguji arsitektur mikro-frontend bisa lebih kompleks daripada menguji frontend monolitik. Ini membutuhkan upaya tambahan dan strategi pengujian khusus untuk melakukan pengujian dan pengujian integrasi lintas komponen, dan end-to-end untuk memvalidasi pengalaman pengguna yang konsisten di beberapa frontend mikro.
Sebelum berkomitmen pada pendekatan micro-frontend, kami sarankan Anda meninjau Memahami dan menerapkan micro-frontend pada. AWS
Arsitektur
Dalam arsitektur micro-frontend, setiap tim mengembangkan dan menyebarkan fitur secara independen. Gambar berikut menunjukkan bagaimana beberapa DevOps tim bekerja sama. Tim portal mengembangkan aplikasi shell. Aplikasi shell bertindak sebagai wadah. Ini mengambil, menampilkan, dan mengintegrasikan aplikasi mikro-frontend yang diterbitkan oleh tim lain. DevOps Anda gunakan AWS Amplify untuk mempublikasikan aplikasi shell dan aplikasi micro-frontend.

Diagram arsitektur menunjukkan alur kerja berikut:
Tim portal mengembangkan dan memelihara aplikasi shell. Aplikasi shell mengatur integrasi dan rendering mikro-frontend untuk menyusun portal secara keseluruhan.
Tim A dan B mengembangkan dan memelihara satu atau lebih mikro-frontend atau fitur yang terintegrasi ke dalam portal. Setiap tim dapat bekerja secara independen pada frontend mikro masing-masing.
Pengguna akhir mengautentikasi dengan menggunakan Amazon Cognito.
Pengguna akhir mengakses portal, dan aplikasi shell dimuat. Saat pengguna menavigasi, aplikasi shell menangani perutean dan mengambil micro-frontend yang diminta, memuat bundelnya.
Alat
Layanan AWS
AWS Amplify
adalah seperangkat alat dan fitur yang dibuat khusus yang membantu pengembang web dan seluler frontend dengan cepat membangun aplikasi full-stack. AWS Dalam pola ini, Anda menggunakan Amplify CLI untuk menerapkan aplikasi micro-frontend Amplify. AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
Alat-alat lainnya
@angular -architects/module-federation adalah plugin yang mengintegrasikan Angular dengan Federasi
Modul. Angular
adalah kerangka kerja aplikasi web open source untuk membangun aplikasi satu halaman yang modern, terukur, dan dapat diuji. Ini mengikuti arsitektur modular dan berbasis komponen yang mempromosikan penggunaan kembali dan pemeliharaan kode. Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. npm
adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi. Federasi Modul Webpack
membantu Anda memuat kode yang dikompilasi dan digunakan secara independen, seperti mikro-frontend atau plugin, ke dalam aplikasi.
Repositori kode
Kode untuk pola ini tersedia di portal Micro-frontend menggunakan repositori Angular dan Module Federation
shell-appberisi kode untuk aplikasi shell.feature1-appberisi sampel micro-frontend. Aplikasi shell mengambil micro-frontend ini dan menampilkannya sebagai halaman dalam aplikasi portal.
Praktik terbaik
Arsitektur mikro-frontend menawarkan banyak keuntungan, tetapi mereka juga memperkenalkan kompleksitas. Berikut ini adalah beberapa praktik terbaik untuk pengembangan yang lancar, kode berkualitas tinggi, dan pengalaman pengguna yang hebat:
Perencanaan dan komunikasi — Untuk merampingkan kolaborasi, berinvestasi dalam perencanaan awal, desain, dan saluran komunikasi yang jelas.
Konsistensi desain - Menerapkan gaya visual yang konsisten di seluruh frontend mikro dengan menggunakan sistem desain, panduan gaya, dan pustaka komponen. Ini memberikan pengalaman pengguna yang kohesif dan mempercepat pengembangan.
Manajemen ketergantungan — Karena frontend mikro berkembang secara independen, mengadopsi kontrak standar dan strategi pembuatan versi untuk mengelola dependensi secara efektif dan mencegah masalah kompatibilitas.
Arsitektur micro-frontend — Untuk mengaktifkan pengembangan dan penyebaran independen, setiap micro-frontend harus memiliki tanggung jawab yang jelas dan terdefinisi dengan baik untuk fungsionalitas yang dienkapsulasi.
Integrasi dan komunikasi — Untuk memfasilitasi kelancaran integrasi dan meminimalkan konflik, tentukan kontrak yang jelas dan protokol komunikasi antara frontend mikro, termasuk, peristiwa APIs, dan model data bersama.
Pengujian dan jaminan kualitas - Menerapkan otomatisasi pengujian dan jaringan pipa integrasi berkelanjutan untuk frontend mikro. Ini meningkatkan kualitas keseluruhan, mengurangi upaya pengujian manual, dan memvalidasi fungsionalitas antara interaksi mikro-frontend.
Optimalisasi kinerja — Terus memantau metrik kinerja dan melacak dependensi antara frontend mikro. Ini membantu Anda mengidentifikasi kemacetan dan mempertahankan kinerja aplikasi yang optimal. Gunakan alat pemantauan kinerja dan analisis ketergantungan untuk tujuan ini.
Pengalaman pengembang - Fokus pada pengalaman pengembang dengan memberikan dokumentasi, perkakas, dan contoh yang jelas. Ini membantu Anda merampingkan pengembangan dan memasukkan anggota tim baru.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat aplikasi shell. |
| Pengembang aplikasi |
Instal plugin. | Di CLI Angular, masukkan perintah berikut untuk menginstal plugin @angular -architects/module-federation
| Pengembang aplikasi |
Tambahkan URL micro-frontend sebagai variabel lingkungan. |
| Pengembang aplikasi |
Tentukan routing. |
| Pengembang aplikasi |
Deklarasikan modul. |
| Pengembang aplikasi |
Siapkan preloading untuk micro-frontend. | Memuat pramuat micro-frontend membantu webpack menegosiasikan pustaka dan paket bersama dengan benar.
| Pengembang aplikasi |
Sesuaikan konten HTML. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat micro-frontend. |
| Pengembang aplikasi |
Instal plugin. | Masukkan perintah berikut untuk menginstal plugin @angular -architects/module-federation:
| Pengembang aplikasi |
Buat modul dan komponen. | Masukkan perintah berikut untuk membuat modul dan komponen dan mengekspornya sebagai modul entri jarak jauh:
| Pengembang aplikasi |
Mengatur jalur routing default. |
| Pengembang aplikasi |
Tambahkan |
| Pengembang aplikasi |
Edit file webpack.config.js. |
| Pengembang aplikasi |
Sesuaikan konten HTML. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan |
| Pengembang aplikasi |
Jalankan aplikasi shell. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat modul dan komponen. | Di folder root aplikasi shell, masukkan perintah berikut untuk membuat modul dan komponen untuk halaman kesalahan:
| Pengembang aplikasi |
Sesuaikan konten HTML. |
| Pengembang aplikasi |
Mengatur jalur routing default. |
| Pengembang aplikasi |
Buat fungsi untuk memuat mikro-frontend. |
| Pengembang aplikasi |
Uji penanganan kesalahan. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan micro-frontend. |
| Pengembang aplikasi, AWS DevOps |
Menyebarkan aplikasi shell. |
| Pengembang aplikasi, Pemilik aplikasi |
Aktifkan CORS. | Karena aplikasi shell dan micro-frontend di-host secara independen pada domain yang berbeda, Anda harus mengaktifkan cross-origin resource sharing (CORS) di micro-frontend. Hal ini memungkinkan aplikasi shell untuk memuat konten dari asal yang berbeda. Untuk mengaktifkan CORS, Anda menambahkan header khusus.
| Pengembang aplikasi, AWS DevOps |
Buat aturan penulisan ulang pada aplikasi shell. | Aplikasi shell Angular dikonfigurasi untuk menggunakan HTML5 routing. Jika pengguna melakukan penyegaran keras, Amplify mencoba memuat halaman dari URL saat ini. Ini menghasilkan kesalahan 403. Untuk menghindari hal ini, Anda menambahkan aturan penulisan ulang di konsol Amplify. Untuk membuat aturan penulisan ulang, ikuti langkah-langkah ini:
| Pengembang aplikasi, AWS DevOps |
Uji portal web. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus aplikasi. | Jika Anda tidak lagi membutuhkan aplikasi shell dan micro-frontend, hapuslah. Ini membantu mencegah biaya untuk sumber daya yang tidak Anda gunakan.
| AWS Umum |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Tidak ada AWS profil yang tersedia saat menjalankan | Jika Anda tidak memiliki AWS profil yang dikonfigurasi, Anda masih dapat melanjutkan dengan Atau, Anda dapat mengonfigurasi profil bernama untuk file AWS CLI. Untuk petunjuknya, lihat Pengaturan konfigurasi dan file kredensi dalam AWS CLI dokumentasi. |
Kesalahan saat memuat entri jarak jauh | Jika Anda mengalami kesalahan saat memuat entri jarak jauh di file main.ts dari aplikasi shell, pastikan |
Kesalahan 404 saat mengakses micro-frontend | Jika Anda mendapatkan kesalahan 404 saat mencoba mengakses micro-frontend lokal, seperti at
|
Informasi tambahan
AWS dokumentasi
Memahami dan menerapkan frontend mikro pada AWS(Panduan Preskriptif)AWS
Amplify CLI (Amplify
dokumentasi) Amplify Hosting (Amplify dokumentasi)
Referensi lainnya