Konsep dasar - AWS Bimbingan Preskriptif

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

Konsep dasar

Arsitektur mikro-frontend sangat terinspirasi oleh tiga konsep arsitektur sebelumnya:

  • Desain berbasis domain adalah model mental untuk menyusun aplikasi kompleks menjadi domain yang koheren.

  • Sistem terdistribusi adalah pendekatan untuk membangun aplikasi sebagai subsistem yang digabungkan secara longgar yang dikembangkan secara independen dan dijalankan pada infrastruktur khusus mereka sendiri.

  • Cloud computing adalah pendekatan untuk menjalankan infrastruktur TI sebagai layanan dengan pay-as-you-go model.

Desain berbasis domain

Domain-driven design (DDD) adalah paradigma yang dikembangkan oleh Eric Evans. Dalam bukunya tahun 2003 Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans mendalilkan bahwa pengembangan perangkat lunak harus didorong oleh masalah bisnis daripada masalah teknis. Evans mengusulkan agar proyek TI pertama-tama mengembangkan bahasa di mana-mana yang membantu pakar teknis dan domain untuk menemukan pemahaman bersama. Berdasarkan bahasa itu, mereka dapat merumuskan model realitas bisnis yang saling dipahami.

Jelas seperti pendekatan itu, banyak proyek perangkat lunak mengalami pemutusan hubungan antara bisnis dan TI. Pemutusan hubungan tersebut sering menyebabkan kesalahpahaman yang signifikan, yang menyebabkan pembengkakan anggaran, penurunan kualitas, atau kegagalan proyek.

Evans memperkenalkan beberapa istilah penting lainnya, salah satunya adalah konteks terbatas. Konteks terbatas adalah segmen mandiri dari aplikasi TI besar yang berisi solusi atau implementasi untuk satu masalah bisnis. Aplikasi besar akan terdiri dari beberapa konteks terbatas yang digabungkan secara longgar melalui pola integrasi. Konteks terbatas itu bahkan dapat memiliki dialek mereka sendiri dari bahasa yang ada di mana-mana. Misalnya, pengguna dalam konteks pembayaran aplikasi mungkin memiliki aspek yang berbeda dari pengguna dalam konteks pengiriman karena gagasan pengiriman tidak akan relevan selama pembayaran.

Evans tidak mendefinisikan seberapa kecil atau besar konteks terbatas seharusnya. Ukurannya ditentukan oleh proyek perangkat lunak, dan mungkin berkembang seiring waktu. Indikator yang baik dari batas konteks adalah tingkat kohesi antara entitas (objek domain) dan logika bisnis.

Dalam konteks mikro-frontend, desain berbasis domain dapat diilustrasikan dengan contoh halaman web yang kompleks seperti halaman pemesanan penerbangan.

Contoh aplikasi web pencarian penerbangan dengan input untuk keberangkatan dan kedatangan dan daftar hasil.

Pada halaman ini, blok bangunan utama adalah formulir pencarian, panel filter, dan daftar hasil. Untuk mengidentifikasi batas-batas, Anda harus mengidentifikasi konteks fungsional independen. Selain itu, pertimbangkan aspek nonfungsional, seperti penggunaan kembali, kinerja, dan keamanan. Indikator terpenting bahwa “hal-hal yang menjadi milik bersama” adalah pola komunikasi mereka. Jika beberapa elemen dalam arsitektur harus sering berkomunikasi dan bertukar informasi yang kompleks, mereka mungkin berbagi konteks terbatas yang sama.

Elemen UI individual seperti tombol tidak dibatasi konteks, karena mereka tidak independen secara fungsional. Juga, seluruh halaman tidak cocok untuk konteks terbatas, karena dapat dipecah menjadi konteks independen yang lebih kecil. Pendekatan yang masuk akal adalah memperlakukan formulir pencarian sebagai satu konteks terbatas dan memperlakukan daftar hasil sebagai konteks terbatas kedua. Masing-masing dari dua konteks terbatas ini sekarang dapat diimplementasikan sebagai frontend mikro yang terpisah.

Sistem terdistribusi

Untuk memudahkan pemeliharaan dan untuk mendukung kemampuan untuk berkembang, sebagian besar solusi TI nontrivial bersifat modular. Dalam hal ini, modular berarti bahwa sistem TI terdiri dari blok bangunan yang dapat diidentifikasi yang dipisahkan melalui antarmuka untuk mencapai pemisahan masalah.

Selain modular, sistem terdistribusi harus sistem independen dalam hak mereka sendiri. Dalam sistem modular semata, setiap modul idealnya dienkapsulasi dan mengekspos fungsinya melalui antarmuka, tetapi tidak dapat digunakan secara independen atau bahkan berfungsi sendiri. Selain itu, modul umumnya mengikuti siklus hidup yang sama dengan modul lain yang merupakan bagian dari sistem yang sama. Blok bangunan dari sistem terdistribusi, di sisi lain, masing-masing memiliki siklus hidup mereka sendiri. Menerapkan paradigma desain berbasis domain, setiap blok bangunan menangani satu domain bisnis atau subdomain dan hidup dalam konteks terbatasnya sendiri.

Ketika sistem terdistribusi berinteraksi selama waktu pembuatan, pendekatan umum adalah mengembangkan mekanisme untuk mengidentifikasi masalah dengan cepat. Misalnya, Anda mungkin mengadopsi bahasa yang diketik dan berinvestasi besar-besaran dalam pengujian unit. Beberapa tim dapat berkolaborasi dalam pengembangan dan pemeliharaan modul, sering didistribusikan sebagai pustaka untuk digunakan sistem dengan alat seperti npm, Apache Maven, dan pip. NuGet

Selama runtime, sistem terdistribusi yang berinteraksi biasanya dimiliki oleh tim individu. Mengkonsumsi dependensi menyebabkan kompleksitas operasional karena penanganan kesalahan, keseimbangan kinerja, dan keamanan. Investasi dalam pengujian integrasi dan observabilitas sangat penting untuk mengurangi risiko.

Contoh paling populer dari sistem terdistribusi saat ini adalah layanan mikro. Dalam arsitektur microservice, layanan backend digerakkan oleh domain (bukan didorong oleh masalah teknis seperti UI atau otentikasi) dan dimiliki oleh tim otonom. Micro-frontend berbagi prinsip yang sama, memperluas cakupan solusi ke frontend.

Komputasi awan

Cloud computing adalah cara membeli infrastruktur TI sebagai layanan dengan pay-as-you-go model alih-alih membangun pusat data Anda sendiri dan membeli perangkat keras untuk mengoperasikannya di tempat. Cloud computing menawarkan beberapa keuntungan:

  • Organisasi Anda memperoleh kelincahan bisnis yang signifikan dengan dapat bereksperimen dengan teknologi baru tanpa harus membuat komitmen keuangan jangka panjang yang besar di muka.

  • Dengan menggunakan penyedia cloud seperti AWS, organisasi Anda dapat mengakses portofolio luas layanan pemeliharaan rendah dan sangat terintegrasi (seperti gateway API, database, orkestrasi kontainer, dan kemampuan cloud). Akses ke layanan ini membebaskan staf Anda untuk fokus pada pekerjaan yang membedakan organisasi Anda dari pesaing.

  • Ketika organisasi Anda siap untuk meluncurkan solusi secara global, Anda dapat menerapkan solusi untuk infrastruktur cloud di seluruh dunia.

Cloud computing mendukung micro-frontend dengan menyediakan infrastruktur yang sangat terkelola. Ini membuat end-to-end kepemilikan lebih mudah bagi tim lintas fungsi. Sementara tim harus memiliki pengetahuan operasi yang kuat, tugas manual penyediaan infrastruktur, pembaruan sistem operasi, dan jaringan akan menjadi gangguan.

Karena frontend mikro hidup dalam konteks terbatas, tim dapat memilih layanan yang paling cocok untuk menjalankannya. Misalnya, tim dapat memilih antara fungsi cloud dan wadah untuk komputasi, dan mereka dapat memilih antara berbagai ragam database SQL dan NoSQL atau cache dalam memori. Tim bahkan dapat membangun frontend mikro mereka pada toolkit yang sangat terintegrasi seperti AWS Amplify, yang dilengkapi dengan blok bangunan yang telah dikonfigurasi sebelumnya untuk infrastruktur tanpa server.