Bangun arsitektur yang digabungkan secara longgar dengan layanan mikro menggunakan DevOps praktik dan AWS Cloud9 - AWS Prescriptive Guidance

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

Bangun arsitektur yang digabungkan secara longgar dengan layanan mikro menggunakan DevOps praktik dan AWS Cloud9

Alexandre Nardi, Amazon Web Services

Ringkasan

Pemberitahuan: AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

Pola ini menunjukkan cara mengembangkan aplikasi web khas dalam arsitektur tanpa server, untuk pengembang dan pemimpin pengembangan yang mulai menguji DevOps praktik di Amazon Web Services (AWS). Ini membangun aplikasi sampel yang menciptakan etalase dan backend untuk browsing dan membeli buku, dan menyediakan layanan mikro yang dapat dikembangkan secara independen. Pola ini menggunakan AWS Cloud9 sebagai lingkungan pengembangan, database Amazon DynamoDB sebagai penyimpanan data, dan layanan AWS seperti AWS dan AWS untuk integrasi berkelanjutan CodePipeline dan fungsionalitas penerapan berkelanjutan ( CodeBuild CI/CD).

Pola memandu Anda melalui kegiatan pengembangan berikut: 

  • Membuat lingkungan pengembangan AWS Cloud9 standar

  • Menggunakan CloudFormation templat AWS untuk membuat aplikasi web dan layanan mikro untuk buku

  • Menggunakan AWS Cloud9 untuk memodifikasi perubahan front-end, melakukan perubahan, dan menguji

  • Membuat dan menguji CI/CD pipa ke layanan mikro

  • Mengotomatiskan pengujian unit

Kode untuk pola ini disediakan di GitHub, di repositori AWS DevOps End-to-End Workshop.

Prasyarat dan batasan

Prasyarat

penting

Membangun aplikasi demo ini di akun AWS Anda membuat dan menggunakan sumber daya AWS. Anda bertanggung jawab atas biaya layanan AWS dan sumber daya yang digunakan untuk membuat dan menjalankan aplikasi. Setelah Anda menyelesaikan pekerjaan Anda, pastikan untuk menghapus semua sumber daya untuk menghindari biaya yang sedang berlangsung. Untuk petunjuk pembersihan, lihat bagian Epik. 

Batasan

Panduan ini dimaksudkan untuk tujuan demonstrasi dan pengembangan saja. Untuk menggunakannya di lingkungan produksi, lihat Praktik terbaik keamanan dalam dokumentasi AWS Identity and Access Management (IAM), dan buat perubahan yang diperlukan pada peran IAM, Amazon DynamoDB, dan layanan lain yang digunakan. Aplikasi web berasal dari AWS Bookstore Demo App; untuk pertimbangan tambahan, lihat bagian Batasan yang diketahui pada file README.

Arsitektur

Arsitektur aplikasi toko buku diilustrasikan di bagian Arsitektur file README untuk AWS Bookstore Demo App. 

Dari perspektif penerapan, Aplikasi Demo Toko Buku menggunakan satu CloudFormation templat untuk menyebarkan semua layanan dan objek dalam satu tumpukan. Pola ini membuat beberapa perubahan untuk menunjukkan bagaimana pengembang atau tim tertentu dapat bekerja dalam produk tertentu (Buku), dan memperbaruinya secara independen dari aplikasi lainnya. Untuk alasan ini, kode untuk pola ini memisahkan fungsi AWS Lambda dan objek terkait untuk layanan mikro Buku menjadi templat CloudFormation kedua, yang membuat tumpukan Buku. Itu memungkinkan untuk melihat layanan mikro diperbarui dengan menggunakan CI/CD praktik. Dalam diagram berikut, batas putus-putus mengidentifikasi layanan mikro Buku.

Sebuah buku microservice dalam arsitektur longgar digabungkan yang menggunakan praktek. DevOps

Alat

Alat

  • Kerangka Jest untuk pengujian JavaScript

  • Python 3.9

Kode

Kode sumber dan templat untuk pola ini tersedia di GitHub, di repositori AWS DevOps End-to-End Workshop. Sebelum Anda mengikuti langkah-langkah di bagian Epics, unduh semua file dari repositori ke komputer Anda.

catatan

Bagian Epik menyediakan langkah-langkah tingkat tinggi untuk panduan ini, untuk memberi Anda informasi umum tentang prosesnya. Untuk menyelesaikan setiap langkah, lihat file README di repositori AWS DevOps End-to-End Workshop untuk petunjuk terperinci.

Repositori AWS DevOps End-to-End Workshop memperluas repositori AWS Bookstore Demo App dan menggunakan versi modifikasi dari kode AWS Cloud9 Bootstrapping untuk membuat AWS Cloud9 IDE.

Praktik terbaik

Menggunakan aplikasi Toko Buku sangat mudah. Berikut adalah beberapa praktik terbaik yang direkomendasikan:

  • Saat Anda menginstal aplikasi, Anda dapat menggunakan nama proyek pilihan Anda atau menggunakan nama default (demobookstore) untuk kenyamanan.

  • Setelah aplikasi Anda aktif dan berjalan, itu adalah praktik yang baik untuk mematikan database Amazon Neptunus jika Anda ingin terus menguji untuk hari lain, karena instance database dapat mengakibatkan biaya tambahan. Namun, ketahuilah bahwa database akan dimulai secara otomatis setelah tujuh hari.

  • Untuk detail kode, lihat dokumentasi untuk repositori Aplikasi Demo AWS Bookstore. Ini menggambarkan setiap layanan mikro dan tabel.

  • Untuk praktik terbaik tambahan, lihat Beberapa tantangan jika Anda punya waktu... bagian dari file README di repositori AWS DevOps End-to-End Workshop. Kami menyarankan Anda meninjau informasi untuk menyelami fitur-fitur tambahan untuk keamanan dan untuk mempraktikkan layanan decoupling.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Unduh kode sumber dari GitHub.

Kode sumber dan templat untuk pola ini tersedia di GitHub, di repositori AWS DevOps End-to-End Workshop. Sebelum Anda mengikuti langkah selanjutnya di bagian Epics, unduh semua file dari repositori ke komputer Anda.

catatan

Bagian Epik menyediakan langkah-langkah tingkat tinggi untuk panduan ini, untuk memberi Anda informasi umum tentang prosesnya. Untuk menyelesaikan setiap langkah, lihat file README di repositori AWS DevOps End-to-End Workshop untuk petunjuk terperinci.

Repositori AWS DevOps End-to-End Workshop memperluas repositori AWS Bookstore Demo App dan menggunakan versi modifikasi dari kode AWS Cloud9 Bootstrapping untuk membuat AWS Cloud9 IDE.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Buat fungsi front-end dan Lambda untuk aplikasi Toko Buku.

  1. Masuk ke CloudFormation konsol, dan gunakan DemoBookstoreMainTemplate.yml template untuk membuat DemoBookStoreStack tumpukan. Ini menciptakan fungsi front-end dan Lambda yang berada di luar layanan mikro Buku.

  2. Di tab Output tumpukan, catat URL situs web di bawah WebApplicationlabel.

Developer

Buat layanan mikro Buku.

Di CloudFormation konsol, gunakan DemoBookstoreBooksServiceTemplate.yml template untuk membuat DemoBooksServiceStack tumpukan.

Developer

Uji aplikasi Anda.

Gunakan URL situs web dari DemoBookStoreStack tumpukan untuk mengakses aplikasi Toko Buku.

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Buat AWS Cloud9 IDE.

Di CloudFormation konsol, terapkan C9EnvironmentTemplate.yml template untuk membuat lingkungan AWS Cloud9.

Pengembang, Pemimpin pengembang

Buat CodeCommit repositori.

  1. Masuk ke CodeCommit konsol AWS, dan verifikasi bahwa Anda memiliki demobookstore-WebAssets repositori, yang berisi kode untuk aplikasi front-end.

  2. Buat repositori untuk layanan mikro Buku yang disebut. demobookstore-BooksService

  3. Kloning dua repositori di AWS Cloud9 (demobookstore-WebAssetsdan) dengan menggunakan perintah. demobookstore-BooksService git clone

Developer

Ubah kode di frontend dan periksa pipeline.

  1. Gunakan AWS Cloud9 untuk membuat beberapa perubahan kode pada halaman web. Ini akan memperbarui demobookstore-WebAssets repositori.

  2. Di CodePipeline konsol AWS, verifikasi bahwa DemoBookStore-Assets-Pipeline sedang berjalan. 

  3. Uji aplikasi web Anda dengan menyegarkan dari browser (Ctrl+F5 di Firefox).

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Tambahkan file YAMAL untuk pembaruan build dan layanan.

  1. Di AWS Cloud9, unggah buildspec.yml file dan file. DemoBookstoreBooksServiceUpdateTemplate.yml 

    • buildspec.ymlmemiliki instruksi bangunan, dan juga termasuk instruksi pengujian untuk pengujian otomatis. Mereka dikomentari pada titik ini, dan akan digunakan nanti.

    • DemoBookstoreBooksServiceUpdateTemplate.ymladalah versi terbaru dariDemoBookstoreBooksServiceTemplate.yml, untuk digunakan dalam tahap penyebaran pipa.

  2. Komit dan dorong file.

Developer

Buat bucket S3 untuk pipeline build.

Untuk membuat bucket S3, ikuti petunjuk di dokumentasi Amazon S3.

  • Nama bucket harus unik secara global; misalnya,demobookstore-books-service-pipeline-bucket-<YYYYMMDDHHMM>

  • Kosongkan kotak centang Blokir semua akses publik, dan pilih kotak centang Saya mengakui....

Developer

Gunakan IAM untuk membuat peran untuk CloudFormation penerapan.

Buat demobookstore-CloudFormation-role peran dan lampirkan AdministratorAccess kebijakan. Dalam epik berikutnya, Anda dapat mengkonfigurasi ulang peran ini untuk izin minimum.

Developer

Buat pipeline baru untuk mengotomatiskan pembangunan dan penerapan layanan mikro Buku.

Buat pipeline (misalnya, demobookstore- BooksService -Pipeline) dengan tahapan Commit, Build, dan Deploy, seperti yang dijelaskan dalam file README.

Developer

Uji layanan mikro Anda di AWS Cloud9.

Buat perubahan ListBooksfungsi dan lihat pipa berfungsi.

Developer

Otomatiskan pengujian unit untuk fungsi ListBooks Lambda.

Di AWS Cloud9 IDE, aktifkan build untuk menjalankan pengujian unit, dan periksa hasil pengujian. Untuk instruksi, lihat file README.

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Jadikan solusi Anda aman.

Konfigurasikan demobookstore-CloudFormation-role untuk memiliki izin minimum, dan periksa peran lain yang digunakan juga.

Developer

Hilangkan dependensi dalam template. CloudFormation

Metode untuk bertukar informasi antara DemoBookstoreMainTemplate.yml template dan DemoBookstoreBooksServiceTemplate.yml template didasarkan pada output dan impor. Melewati nilai antara dua template ini menambahkan dependensi. Untuk menghilangkan dependensi, pertimbangkan untuk menggunakan AWS Systems Manager Parameter Store.

Developer

Buat microservice Cart.

Gunakan layanan mikro Buku sebagai contoh untuk mengeluarkan fungsi yang berhubungan dengan keranjang belanja dari DemoBookstoreMainTemplate.yml templat dan membuat layanan mikro Cart.

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus ember S3.

Di konsol Amazon S3, hapus bucket berikut yang terkait dengan contoh aplikasi web:

  • Dua bucket dibuat untuk AWS Bookstore Demo App. Nama bucket dimulai dengan nama tumpukan yang Anda berikan untuk AWS CloudFormation saat Anda membuat frontend; misalnya,. DemoBookStoreStack

  • <YYYYMMDDHHMM>Satu ember untuk pipa build; misalnya, demobookstore-books-service-pipeline-bucket-.

Developer

Hapus tumpukan.

Di CloudFormation konsol, hapus tumpukan yang terkait dengan aplikasi web sampel:

  • DemoBooksServiceStack

  • DemoBookStoreStack

Penghapusan bisa memakan waktu lebih dari 90 menit. Jika penghapusan gagal, hapus lagi, dan hapus juga sumber daya manual (misalnya, VPC atau antarmuka jaringan) berdasarkan pemberitahuan.

Developer

Hapus peran IAM.

Di konsol IAM, hapus peran berikut:

  • demobookstore-Cloudformation-role

  • demobookstore-BooksService-BuildProject-service-role

Untuk step-by-step petunjuk, lihat dokumentasi IAM

Developer

Sumber daya terkait

Informasi tambahan

Untuk detail, step-by-step instruksi, lihat file README di GitHub repositori AWS DevOps End-to-End Workshop.

Tentang pembaruan Mei 2023: Pola ini diperbarui untuk menggunakan versi Node dan Python yang lebih baru. Kami memperbarui banyak paket dalam kode sumber dan menghapus Glyphicon karena tidak lagi gratis. Kami juga menghapus semua dependensi pada repositori Aplikasi Demo AWS Bookstore, sehingga kedua repositori sekarang dapat berkembang secara independen.