MODUL 1 INTRODUCTION OF CONTAINER (ADINUSA)
Modul 1 ini membahas dasar-dasar containerization, sebuah teknologi yang merevolusi cara sistem dikelola dan dikembangkan. Dengan menggunakan Docker, kita bisa membangun sistem yang elastis dan scalable.
Isi Modul 1
-
Apa itu Container dan Mengapa Kita Membutuhkannya?
-
Container membantu dalam pengelolaan aplikasi dengan cara yang lebih efisien dibandingkan metode tradisional.
-
-
Peran Docker dalam Dunia Container
-
Docker menjadi platform utama dalam ekosistem container karena kemudahannya dalam deployment dan manajemen aplikasi.
-
-
Berpikir dengan Mindset Container
-
Penggunaan container membutuhkan cara berpikir baru dalam pengembangan aplikasi, terutama dalam hal efisiensi, skalabilitas, dan pengelolaan sumber daya.
1. Apa Itu Container?
Dulu, pengembangan aplikasi cukup sederhana. Developer menulis aplikasi, lalu tim operasi menginstalnya di server produksi. Namun, seiring waktu, muncul tantangan dalam menjalankan berbagai aplikasi yang memiliki dependensi berbeda pada server yang sama.
-
Masalah yang Muncul:
-
Aplikasi memiliki dependensi eksternal seperti framework dan library yang berbeda.
-
Instalasi aplikasi baru menjadi kompleks, memakan waktu, dan sulit dikelola.
-
Perusahaan membutuhkan proses rilis yang lebih cepat, tidak bisa hanya 1-2 kali dalam setahun.
-
-
Solusi Awal: Virtual Machines (VMs)
-
Setiap aplikasi dijalankan dalam satu VM untuk menghindari konflik dependensi.
-
Namun, VM terlalu berat karena harus menjalankan seluruh sistem operasi hanya untuk satu aplikasi, membuat penggunaan sumber daya tidak efisien.
-
-
Solusi yang Lebih Baik: Docker Containers
-
Container lebih ringan dibandingkan VM dan dapat mengemas aplikasi beserta semua dependensinya dalam satu paket standar.
-
Container dapat dijalankan di mana saja tanpa masalah kompatibilitas, membuatnya lebih fleksibel dan efisien.
-
Docker memungkinkan proses "Build, Ship, and Run Anywhere," artinya aplikasi bisa dibuat, dikirim, dan dijalankan di berbagai lingkungan tanpa perubahan besar.
2. Mengapa Container Penting?
Seiring dengan meningkatnya kompleksitas perangkat lunak dan kebutuhan rilis yang lebih cepat, container menjadi solusi penting dalam pengelolaan aplikasi.
Keunggulan Container:
-
Keamanan Lebih Baik
-
Menurut Gartner, aplikasi yang berjalan dalam container lebih aman dibandingkan aplikasi yang tidak.
-
Container menggunakan fitur keamanan Linux seperti namespaces dan control groups (cgroups) untuk membatasi sumber daya yang digunakan aplikasi.
-
Container bersifat immutable, sehingga lebih mudah dipindai untuk menemukan kerentanan keamanan (CVE) dan mencegah serangan man-in-the-middle (MITM).
-
-
Menyederhanakan Pengembangan dan Pengujian
-
Container memudahkan pembuatan lingkungan produksi bahkan di laptop pengembang.
-
Misalnya, database seperti Oracle atau SQL Server dapat dijalankan dalam container tanpa harus menginstalnya langsung di komputer, sehingga proses pengujian lebih cepat dan efisien.
-
-
Efisiensi dan Standarisasi Infrastruktur
-
Karena container lebih ringan dibandingkan VM, banyak aplikasi dapat berjalan bersamaan tanpa membebani perangkat.
-
Operator sistem dapat lebih fokus pada pengelolaan infrastruktur tanpa perlu memahami detail teknis setiap aplikasi, karena container berjalan secara independen seperti peti kemas dalam industri logistik.
3. Perbedaan Host, Virtual Machine, dan Container
-
Dedicated Machines: Setiap aplikasi berjalan di satu mesin dengan sistem operasi sendiri.
-
Virtual Machines (VMs): Satu mesin bisa menjalankan beberapa VM, masing-masing dengan sistem operasinya sendiri menggunakan Hypervisor.
-
Containers: Berbeda dari VM, containers berbagi kernel sistem operasi host, membuatnya lebih ringan dan cepat.
Contoh Teknologi Container
-
Docker
-
Platform untuk membuat, mengemas, dan menjalankan aplikasi dalam container.
-
Mempermudah pengelolaan dan distribusi aplikasi tanpa bergantung pada sistem operasi host tertentu.
-
-
Podman
-
Alternatif Docker yang lebih ringan dan tidak membutuhkan daemon yang berjalan terus-menerus.
-
Menggunakan standar Open Containers Initiative (OCI) sehingga kompatibel dengan Docker.
-
-
LXC (Linux Containers)
-
Teknologi container berbasis kernel Linux yang lebih dekat dengan sistem operasi aslinya.
-
Menyediakan fitur keamanan tambahan seperti AppArmor dan SELinux.
-
-
LXD
-
Versi lebih lanjut dari LXC yang bisa mengelola containers dan virtual machines dengan lebih mudah.
-
Mendukung berbagai distribusi Linux dan memungkinkan manajemen container lewat REST API.
-
Kesimpulan:
Container membuat aplikasi lebih ringan, cepat, dan mudah dipindahkan antar sistem. Teknologi seperti Docker, Podman, LXC, dan LXD menawarkan berbagai solusi untuk menjalankan aplikasi secara efisien, baik di komputer lokal maupun di server cloud.
4. Host, Virtual Machine, dan Container
Container, Virtual Machine (VM), dan Dedicated Machine memiliki perbedaan mendasar dalam cara mereka mengelola aplikasi dan sumber daya.
1. Dedicated Machine (Mesin Fisik)
-
Setiap aplikasi berjalan langsung di atas sistem operasi host tanpa isolasi khusus.
-
Semua aplikasi berbagi library dan dependensi yang sama, yang bisa menyebabkan konflik jika ada perbedaan versi.
2. Virtual Machine (VM)
-
VM menggunakan Hypervisor untuk menjalankan beberapa sistem operasi guest OS secara terpisah di atas sistem operasi host.
-
Setiap VM memiliki salinan penuh dari sistem operasi, membuatnya lebih berat dalam penggunaan memori dan penyimpanan.
3. Container
-
Container berbagi kernel sistem operasi host, tetapi tetap berjalan dalam lingkungan yang terisolasi.
-
Tidak memerlukan sistem operasi lengkap, hanya library dan dependensi yang dibutuhkan aplikasi.
-
Lebih ringan dibandingkan VM, karena mengurangi ukuran image dan mempercepat proses startup.
Keunggulan Docker dibandingkan VM:
-
Hemat sumber daya: Tidak perlu menjalankan OS lengkap dalam setiap instance.
-
Ringan dan cepat: Proses deployment lebih cepat dibandingkan VM.
-
Portabilitas tinggi: Dapat dijalankan di berbagai lingkungan tanpa harus bergantung pada OS tertentu.
Docker memungkinkan kita menjalankan berbagai aplikasi dengan stack yang berbeda tanpa harus menginstal sistem operasi tambahan, membuatnya lebih efisien, fleksibel, dan mudah dikelola.
Komentar
Posting Komentar