Pecah Aplikasi Monolitik menjadi Layanan Mikro dengan AWS Copilot, Amazon ECS, Docker, dan AWS Fargate
TUTORIAL
Pengantar
Gambaran Umum
Dalam tutorial ini, Anda akan melakukan delpoyment aplikasi Node.js monolitik ke kontainer Docker, lalu memisahkan aplikasi tersebut menjadi layanan mikro tanpa waktu henti. Aplikasi Node.js melakukan hosting papan pesan sederhana yang dilengkapi dengan alur dan pesan antara pengguna.
Mengapa ini penting
Arsitektur monolitik tradisional sulit diskalakan. Seiring tumbuhnya basis kode aplikasi, pembaruan dan pemeliharaannya pun menjadi rumit. Memperkenalkan beragam fitur, bahasa, kerangka kerja, dan teknologi baru menjadi sangat sulit sehingga membatasi inovasi dan ide-ide baru.
Dalam arsitektur layanan mikro, setiap komponen aplikasi berjalan sebagai layanannya sendiri dan berkomunikasi dengan layanan lain melalui API yang didefinisikan dengan baik. Layanan Mikro dibangun sesuai kemampuan bisnis, dan setiap layanan ditujukan untuk satu tujuan. Layanan mikro dapat ditulis dengan kerangka kerja dan bahasa pemrograman berbeda, dan Anda dapat melakukan deployment secara independen, baik sebagai satu layanan maupun sebagai kelompok layanan.
Hal-hal yang akan Anda capai
Selama tutorial ini, kami akan tunjukkan kepada Anda cara menjalankan aplikasi monolitik sederhana dalam kontainer Docker, melakukan deployment aplikasi yang sama dengan layanan mikro, kemudian mengalihkan lalu lintas ke layanan mikro tanpa waktu henti. Setelah selesai, Anda dapat menggunakan tutorial ini dan kode di dalamnya sebagai templat untuk membangun dan melakukan deployment layanan mikro yang Anda kontainerisasi sendiri di AWS.
Arsitektur monolitik
Seluruh aplikasi Node.js dijalankan di kontainer sebagai layanan tunggal dan tiap kontainer memiliki fitur yang sama dengan semua kontainer lainnya. Jika satu fitur aplikasi mengalami lonjakan permintaan, skala seluruh arsitektur harus diskalakan.
Arsitektur layanan mikro
Setiap fitur aplikasi Node.js berjalan sebagai layanan terpisah di kontainernya sendiri. Layanan dapat melakukan penskalaan dan diperbarui secara terpisah dari yang lain.
Prasyarat
- Akun AWS: Jika Anda belum memiliki akun, ikuti tutorial Menyiapkan Lingkungan AWS Anda untuk memperoleh gambaran singkat.
- Instal dan konfigurasikan AWS CLI
- Instal dan konfigurasikan AWS Copilot
- Instal dan konfigurasikan Docker
- Editor teks. Untuk tutorial ini, kami akan menggunakan VS Code, tetapi Anda dapat menggunakan IDE pilihan Anda.
Pengalaman AWS
Menengah
Waktu penyelesaian minimum
110 Menit
Biaya penyelesaian
Memenuhi syarat Tingkat Gratis
Memerlukan
- Akun AWS: Jika Anda belum memiliki akun, ikuti tutorial Menyiapkan Lingkungan AWS Anda untuk memperoleh gambaran singkat.
- Instal dan konfigurasikan AWS CLI.
- Instal dan konfigurasikan AWS Copilot.
- Instal dan konfigurasikan Docker.
- Editor teks. Untuk tutorial ini, kami akan menggunakan VS Code, tetapi Anda dapat menggunakan IDE pilihan Anda.
Layanan yang digunakan
Kode
Terakhir diperbarui
Modul
Tutorial ini dibagi menjadi beberapa modul berikut. Anda harus menyelesaikan setiap modul sebelum melanjutkan ke modul berikutnya.
- Pengaturan (20 menit): Dalam modul ini, Anda akan menginstal dan mengonfigurasi AWS CLI, menginstal AWS Copilot, dan menginstal Docker.
- Melakukan kontainerisasi dan deployment monolit (30 menit): Dalam modul ini, Anda akan mengontainerisasi aplikasi, menggunakan AWS Copilot untuk membuat instans klaster terkelola dari instans komputasi EC2, dan melakukan deploymnet citra Anda sebagai kontainer yang berjalan di klaster.
- Memecah monolit (20 menit): Pada modul ini, Anda akan memecah aplikasi Node.js ke dalam beberapa layanan yang saling terkoneksi dan mendorong setiap citra layanan ke repositori Amazon Elastic Container Registry (Amazon ECR).
- Melakukan deployment layanan mikro (30 menit): Dalam modul ini, Anda akan melakukan deployment aplikasi Node.js Anda sebagai satu set layanan yang saling terhubung di balik Penyeimbang Beban Aplikasi (ALB). Kemudian, Anda akan menggunakan ALB untuk mengalihkan lalu lintas dengan mulus dari monolit menjadi layanan mikro.
- Pembersihan (10 menit): Dalam modul ini, Anda akan menghentikan sumber daya yang Anda buat selama tutorial ini. Anda akan menghentikan layanan yang berjalan di Amazon ECS, menghapus ALB, dan menghapus tumpukan AWS CloudFormation untuk menghentikan klaster ECS, termasuk seluruh instans EC2 yang mendasarinya.