Enterprise Distributed Application Service (EDAS) mendukung lingkungan Elastic Compute Service (ECS) dan Kubernetes. Kedua lingkungan tersebut memungkinkan Anda menampung aplikasi, tetapi ECS dan Kubernetes memiliki fitur yang berbeda. Saat membuat keputusan bisnis atau memilih lingkungan untuk migrasi beban kerja, pertimbangan tertentu mungkin diperlukan. Topik ini menjelaskan dan membandingkan lingkungan ECS dan Kubernetes sehingga Anda dapat memilih berdasarkan kebutuhan bisnis Anda.
Informasi latar belakang
EDAS mendukung lingkungan ECS dan Kubernetes, di mana Anda dapat menerapkan aplikasi dalam kluster ECS atau Kubernetes. Baik ECS maupun Kubernetes mendukung framework mikroservis seperti Spring Cloud, Apache Dubbo, dan High-Speed Service Framework (HSF). EDAS memungkinkan Anda menampung, mengatur, dan memantau aplikasi Java yang menggunakan framework-framework tersebut. Namun, ECS dan Kubernetes memiliki persyaratan teknologi yang berbeda serta menyediakan fitur manajemen aplikasi yang unik.
Cara memilih
Kubernetes cocok untuk sebagian besar skenario. EDAS terintegrasi dengan Container Service for Kubernetes (ACK), yang menyediakan berbagai fitur manajemen aplikasi untuk membantu meningkatkan pemanfaatan sumber daya.
Kami merekomendasikan agar Anda memilih lingkungan berdasarkan kebutuhan bisnis aktual Anda.
| Skenario | Lingkungan |
| Kubernetes |
| ECS |
Fitur yang didukung oleh ECS atau Kubernetes
| Fitur | ECS | Kubernetes | Catatan |
| Terapkan aplikasi | Y | Y | Kubernetes menyediakan lebih banyak jenis kebijakan penjadwalan untuk menerapkan instance dan memungkinkan Anda menerapkan beberapa aplikasi pada instance yang sama. |
| Mulai aplikasi | Y | Y | Tidak tersedia |
| Hentikan aplikasi | Y | Y | Tidak tersedia |
| Hapus aplikasi | Y | Y | Tidak tersedia |
| Skalakan aplikasi | Y | Y | Tidak tersedia |
| Reset aplikasi | Y | N | Fitur ini tidak diperlukan di lingkungan Kubernetes. Untuk mereset aplikasi, Anda dapat menghapus pod Kubernetes tempat aplikasi diterapkan. |
| Tingkatkan atau turunkan versi kontainer | Y | Y | Tidak tersedia |
| Roll back aplikasi | Y | Y | Tidak tersedia |
| Penskalaan horizontal | Y | Y | Metode dan aturan ECS dan Kubernetes berbeda. |
| Penskalaan terjadwal | N | Y | Tidak tersedia |
| Penyebaran batch | Y | Y | Tidak tersedia |
| Grup aplikasi | Y | N | Tidak tersedia |
| Konfigurasi grup aplikasi | Y | N | Tidak tersedia |
| Pengiriman log waktu nyata | Y | Y | Tidak tersedia |
| Direktori log | Y | Y | Tidak tersedia |
| Layanan Log | Y | Y | Tidak tersedia |
| Load balancing | Y | Y | Tidak tersedia |
| Pemeriksaan kesehatan | Y | Y | Kubernetes menggunakan probe readiness dan liveness untuk melakukan pemeriksaan kesehatan. Mekanisme pemeriksaan kesehatan ini berbeda dari mekanisme yang digunakan oleh ECS. |
| Parameter Java virtual machine (JVM) | Y | Y | Tidak tersedia |
| Parameter Tomcat | Y | Y | Tidak tersedia |
| Hook siklus hidup | Y | Y | Kubernetes mendukung hook PostStart dan PreStop, yang berbeda dari hook yang disediakan oleh ECS. |
| Variabel lingkungan | Y | Y | Tidak tersedia |
| Rilis Canary | Y | Y | Tidak tersedia |
| Pemantauan trafik | Y | Y | Tidak tersedia |
| Pembatasan trafik | Y | Y | Kubernetes mengimplementasikan pembatasan trafik untuk aplikasi tanpa perlu memodifikasi kode aplikasi. |
| Daftar layanan | Y | Y | Tidak tersedia |
| Push konfigurasi | Y | Y | Tidak tersedia |
| Pusat acara | Y | Y | Tidak tersedia |
| Peringatan | Y | Y | Tidak tersedia |
| Diagnostik aplikasi | Y | Y | Kubernetes menyediakan fitur diagnostik aplikasi canggih yang terintegrasi dengan layanan pemantauan. |
| Pembelian sumber daya | Y | N | Tidak tersedia |
| Service mesh | N | Y | Tidak tersedia |
| Penyebaran dari gambar | N | Y | Tidak tersedia |
| Aplikasi yang ditulis dalam bahasa pemrograman yang berbeda | N | Y | Tidak tersedia |
| Penyimpanan terpasang jaringan (NAS) | N | Y | Tidak tersedia |
FAQ
Apakah lingkungan ECS memungkinkan saya menerapkan beberapa aplikasi pada instance yang sama?
Tidak. ECS tidak memungkinkan Anda menerapkan beberapa aplikasi pada instance yang sama. Jika Anda ingin menerapkan beberapa aplikasi pada instance yang sama, pilih lingkungan Kubernetes.
Apakah lingkungan ECS mendukung aplikasi yang ditulis dalam bahasa pemrograman yang berbeda?
Tidak. ECS tidak mendukung aplikasi yang ditulis dalam bahasa pemrograman yang berbeda. Jika Anda ingin menerapkan aplikasi yang ditulis dalam bahasa pemrograman lain, pilih lingkungan Kubernetes.
Apakah lingkungan ECS dan Kubernetes mendukung alat pengembang?
- Untuk informasi lebih lanjut tentang Alibaba Cloud Toolkit, lihat Ikhtisar Alibaba Cloud Toolkit.
- Untuk informasi lebih lanjut tentang toolkit-maven-plugin, lihat Ikhtisar toolkit-maven-plugin.
- Untuk informasi lebih lanjut tentang Terraform, lihat Ikhtisar Terraform.
- Untuk informasi lebih lanjut tentang Jenkins, lihat Ikhtisar Jenkins.
Dalam lingkungan Kubernetes, bagaimana cara node diskalakan keluar?
Lingkungan Kubernetes secara otomatis menskalakan masuk dan keluar pod. Dalam sebagian besar kasus, kluster Kubernetes tidak membuat node baru (instance ECS) atau melepaskan node yang ada.
Anda dapat menggunakan fitur yang disediakan oleh ACK untuk secara otomatis menskalakan masuk dan keluar node.
Jika saya telah memasang skrip ke aplikasi yang diterapkan pada instance ECS, bagaimana cara memigrasikan aplikasi ini ke kluster Kubernetes?
Dalam lingkungan ECS, skrip yang dipasang ke aplikasi digunakan untuk menjalankan perintah tertentu saat change order memasuki tahap tertentu. ECS memungkinkan Anda memasang skrip ke tahap siklus hidup berikut dari aplikasi: buat instance, mulai aplikasi, hentikan aplikasi, dan lepaskan instance.
- Jika Anda ingin memasang skrip saat membuat instance, Anda dapat mengompilasi skrip ke dalam Dockerfile dan membuat gambar dari Dockerfile.
- Jika Anda ingin memasang skrip sebelum memulai aplikasi, Anda dapat mengompilasi skrip ke dalam Dockerfile dan membuat gambar dari Dockerfile.
Dalam pod Kubernetes, membuat instance dan memulai aplikasi dianggap sebagai proses yang sama.
- Untuk memasang skrip setelah aplikasi dimulai, pasang mereka sebagai hook PostStart.
- Untuk memasang skrip sebelum instance dihentikan, pasang mereka sebagai hook PreStop.
- Kami merekomendasikan agar Anda dengan anggun menutup aplikasi sehingga Anda dapat menghapus skrip yang dipasang setelah instance dihentikan. Misalnya, Anda dapat menambahkan hook Shutdown ke aplikasi Java atau mengirim sinyal SIGTERM ke skrip yang ingin Anda hapus. Atau, Anda dapat memindahkan skrip ke hook PreStop.
- Kami merekomendasikan agar Anda dengan anggun menutup aplikasi sehingga Anda dapat menghapus skrip yang dipasang sebelum instance dilepaskan. Misalnya, Anda dapat menambahkan hook Shutdown ke aplikasi Java atau mengirim sinyal SIGTERM ke skrip yang ingin Anda hapus. Atau, Anda dapat memindahkan skrip ke hook PreStop.
Dalam pod Kubernetes, menghentikan dan melepaskan instance dianggap sebagai proses yang sama.