Apa itu ECS
Amazon Elastic Container Service (ECS) adalah service orkestrasi kontainer yang sepenuhnya dikelola yang disediakan oleh AWS. Di tengah popularitas yang terus berkembang dari arsitektur mikro service, ECS berfungsi sebagai alat bagi para pengembang dan profesional IT untuk mengelola dan mendeploy beberapa kontainer secara efektif.
Teknologi kontainer memungkinkan pengemasan aplikasi beserta runtime, perpustakaan yang dibutuhkan, dan alat sistem ke dalam satu unit tunggal. Hal ini memberikan lingkungan yang konsisten mulai dari pengembangan hingga penyebaran dan peningkatan kapasitas. Namun, untuk mengelola kontainer-kontainer ini dengan efektif, alat-orkestrasi yang sesuai sangat penting, dan di sinilah peran krusial ECS berada.
Komponen-komponen ECS
Arsitektur ECS terdiri dari berbagai komponen yang menangani penyebaran dan pengelolaan runtime dari aplikasi-aplikasi terkontainerisasi.
Task
Dalam ECS, unit eksekusi dari sebuah aplikasi dikenal sebagai "Task". Sebuah Task merupakan unit eksekusi yang terdiri dari satu atau lebih kontainer, berfungsi sebagai unit mendasar untuk meluncurkan aplikasi di ECS.
Task Definition
Task Definition berfungsi sebagai template untuk membuat dan mengkonfigurasi Task. Template ini dijelaskan dalam format JSON dan dapat mencakup rincian seperti gambar kontainer yang akan dideploy, alokasi sumber daya, peran IAM yang ditugaskan untuk setiap task atau kontainer, tujuan keluaran untuk CloudWatch Logs, dan banyak konfigurasi lainnya.
Satu Task Definition tunggal dapat mengandung beberapa definisi kontainer, memungkinkan pengelolaan yang efektif dari beberapa kontainer terkait dalam satu Task.
Contoh JSON
{
"family": "my-task-def",
"networkMode": "awsvpc",
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512",
"containerDefinitions": [
{
"name": "backend",
"image": "xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/backend:latest",
"essential": true,
"portMappings": [
{
"hostPort": 8080,
"protocol": "tcp",
"containerPort": 8080
}
]
},
{
"name": "frontend",
"image": "xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/frontend:latest",
"essential": true,
"environment": [],
"portMappings": [
{
"hostPort": 8000,
"protocol": "tcp",
"containerPort": 8000
}
],
"command": [
"run",
]
}
]
}
Service (Service)
Sebuah Service adalah penjadwal yang menjaga jumlah Task yang ditentukan, berfungsi sebagai komponen inti dari orkestrator. Saat membuat Service, Anda menentukan jumlah Task yang akan diluncurkan, mengaitkan penyeimbang beban, dan mendefinisikan jaringan untuk menjalankan Task-task tersebut. Jika sebuah Task berakhir karena alasan apa pun, Task baru dihasilkan berdasarkan Task Definition untuk menjaga jumlah Task yang ditentukan.
Service memiliki peran penting sebagai fungsi inti dari orkestrasi. Jika sebuah Task berakhir karena alasan apa pun, Task baru dihasilkan berdasarkan Task Definition untuk menjaga jumlah Task yang ditentukan. Sebuah Service mencakup pengaturan untuk penyeimbang beban terkait, konfigurasi jaringan, dan jumlah Task yang akan dieksekusi.
Klaster
Klaster adalah unit pengelompokan logis dalam ECS, dirancang untuk mengelola beberapa Service dan Task. Dalam sebuah Klaster, Anda dapat memantau sumber daya yang tersedia, status Task, dan status Service secara sentral.
Lapisan Data
Lapisan Data dari ECS berkolaborasi dengan komponennya untuk menyediakan lingkungan dan sumber daya di mana kontainer-kontainer benar-benar beroperasi. AWS menawarkan dua pilihan Lapisan Data:
- Amazon Elastic Compute Cloud (EC2)
- AWS Fargate
Amazon Elastic Compute Cloud (EC2)
Amazon EC2 adalah penawaran server pribadi virtual dari AWS. Sebagai bagian dari Lapisan Data ECS, EC2 berfungsi sebagai lingkungan eksekusi untuk kontainer-kontainer. Pengguna dapat memilih jenis instance dan alokasi sumber daya sesuai kebutuhan, dan meluncurkan serta mengelola kontainer secara langsung di EC2. Selain itu, EC2 mudah terintegrasi dengan berbagai service AWS, menawarkan skalabilitas dan fleksibilitas tinggi dalam hal keamanan, jaringan, dan penyimpanan.
AWS Fargate
AWS Fargate adalah lingkungan eksekusi kontainer tanpa server, menghilangkan kebutuhan untuk memilih atau mengelola instansi seperti EC2. Pengguna hanya perlu menentukan kontainer-kontainer, dan Fargate secara otomatis mengalokasikan sumber daya yang diperlukan dan mengukur sesuai kebutuhan. Ini membebaskan para pengembang dari pengelolaan infrastruktur, memungkinkan mereka berfokus pada kode aplikasi dan logika bisnis.
Referensi