Service Aplikasi Linux
Hai hai temen-temen semua, pada blog kali ini saya akan membahas apa aja sih service aplikasi yang ada di linux? Yuk kita bahas.
1. Container
Container adalah sejenis software yang mengemas dan mengisolasi applikasi secara virtual untuk mempermudah software deployment. Berbeda dengan konsep traditional Virtual Machine, Container tidak membutuhkan dedicated operating system (OS Kernel) tetapi Container Kernel dapat di pergunakan secara bersamaan.
Container menampung seluruh komponen yang diperlukan untuk aplikasi dapat di jalankan. Komponen ini termasuk file, environment variable, dependency dan library. Host Operating System akan mengatur dan membatasi akses ke pada computer resources seperti CPU, Storage dan Memory sehingga pengunaan resource tidak di kuasai oleh single user.
- Keuntungan Menggunakan Container
Container memberikan cara untuk mengemas aplikasi secara terstruktur dan logis sehingga aplikasi ini tidak lagi tergantung lagi dengan configurasi komputer operating system tertentu untuk dapat berjalan secara sempurna. Proses Containerization memungkinkan aplikasi untuk dapat di deploy dengan mudah dan konsisten terlepas dari berbagai macam system komputer baik di on-premise, di local atau di cloud bahkan di komputer laptop pribadi atau kumputer server yang besar.
2. Docker
Docker adalah platform perangkat lunak yang memungkinkan kita membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas perangkat lunak ke dalam unit standar yang disebut kontainer yang memiliki semua yang diperlukan perangkat lunak agar dapat berfungsi termasuk pustaka, alat sistem, kode, dan waktu proses. Dengan menggunakan Docker, kita dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode kita akan berjalan.
Docker berfungsi dengan menyediakan cara standar untuk menjalankan kode. Docker adalah sistem operasi untuk kontainer. Mirip dengan cara mesin virtual memvirtualisasi (menghilangkan kebutuhan untuk secara langsung mengelola) perangkat keras server, kontainer memvirtualisasi sistem operasi server. Docker diinstal di setiap server dan memberikan perintah sederhana yang dapat kita gunakan untuk membuat, memulai, atau menghentikan kontainer.
3. Podman
Podman adalah container engine yang lengkap untuk menjalankan, mengelola, dan men-debug container yang mematuhi standar Open Container Initiative (OCI). Dengan Podman, para developer dapat mengelola container tanpa menggunakan daemon (Daemon adalah service yang berjalan sendiri secara periodik/realtime dan berjalan dibelakang layar).
Podman juga memiliki command-line interface (CLI) yang kompatibel dengan docker serta pengintegrasian yang lebih baik dengan systemd. Podman memudahkan para developer untuk mencari, menjalankan, dan membagikan container. Penggagas atau pencipta dari Podman adalah perusahaan open source terkemuka yaitu Red Hat. Mereka sepertinya mengembangkan Podman sebagai pengganti Docker pada layanan cloud mereka yaitu OpenShift.
4. Kubernetes
Apa itu Kubernetes?
Kubernetes adalah platform open source untuk mengelola kumpulan kontainer dalam suatu cluster server. Platform ini pertama kali dikembangkan oleh Google dan kini dikelola oleh Cloud Native Computing Foundation (CNCF) sebagai platform manajemen kontainer yang cukup populer. Kubernetes memiliki kemampuan untuk melakukan penjadwalan aplikasi, load balancing server dan peningkatan kapasitas kontainer secara otomatis.
Lalu, apa saja komponen di dalam Kubernetes?
Komponen Kubernetes :
Cluster adalah suatu kelompok berisi server fisik atau VPS untuk menjalankan Kubernetes. Ada dua jenis server yang dibutuhkan, yaitu master node dan worker node.
Master node adalah server utama yang mengatur semua operasi cluster menggunakan tiga komponen, yaitu kube-apiserver, kube-controller-manager, kube-scheduler dan etcd.
Di bawah ini adalah penjelasan fungsinya:
~ kube-apiserver: validasi dan konfigurasi data untuk objek API, yaitu pod, services, volume, dan lainnya.
~ kube- controller-manager: melakukan monitor cluster agar sesuai dengan konfigurasi data objek di dalam node.
~ kube-scheduler: menambah objek baru ke node. Misalnya, menginstall pod ke node tertentu.
~ Etcd: ruang penyimpanan key value konfigurasi data cluster.
Worker node adalah semua server non master yang berfungsi untuk menjalankan dua komponen, yaitu kubelet dan kube-proxy. Begini penjelasan fungsi komponennya:
~ Kubelet: komponen untuk memastikan kontainer beroperasi di dalam objek Pod.
~ Kube-proxy: memelihara network rules dan meneruskan koneksi ke suatu host.
5. Openshift
OpenShift adalah perangkat lunak kontainerisasi yang dikembangkan oleh Red Hat. Produk lini Red Hat OpenShift dapat membantu pelanggan enterprise dan mitra dalam mengadopsi teknologi Open Source dengan mudah. OpenShit ini berfungsi dan diciptakan untuk para konsumen yang melakukan develop serta menjalakan aplikasi berbasis container agar dapat melakukan penggunaan tersebut diterapkan di infrastruktur manapun. Baik itu cloud, on-premise, atau edge. Sehingga hal ini salah satunya juga dapat membantu para konsumen untuk membuat Hybrid Cloud ataupun Hybrid Infrastructure.
Dengan adanya OpenShift ini, aplikasi yang menggunakan container tersebut dapat di-expand dengan mudah, dari hanya beberapa mesin, bisa menjadi sampai ribuan mesin dan dapat melayani jutaan dari kliennya. Maka dari itu, OpenShift ini juga menggunakan Kubernetes sebagai arsitektur awalnya . Maka mungkin kita bahas juga sekilas terkait dengan Kubernetes ini. Kubernetes merupakan salah satu contaier engine yang berbasis open source, yang digunakan untuk deployment secara otomatis, scaling, dan juga management dari aplikasi yang sudah berbasis container.
6. Elasticsearch
Elasticsearch adalah software mesin pencarian open source dan analisis teks lengkap terdistribusi. Elasticsearch mendukung operasi RESTful dan memungkinkan Anda untuk menyimpan, mencari, dan menganalisis volume data yang besar secara real time.
Elasticsearch adalah salah satu mesin pencari paling populer yang memberdayakan aplikasi yang memiliki persyaratan pencarian kompleks seperti toko e-commerce besar dan aplikasi analitik.
7. Grafana
Grafana adalah sebuah software opensource yang didesain untuk membaca data metrics untuk kemudian mengubah data-data tersebut menjadi sebuah grafik atau sebuah data tertulis. Software ini banyak sekali digunakan untuk melakukan analisis data dan monitoring. Grafana mendukung banyak storage backends yang berbeda untuk data time series (Source Data). Setiap source data memiliki Query Editor tertentu yang disesuaikan untuk fitur dan kemampuan tertentu.
Ada beberapa hal yang dapat dilakukan oleh Grafana:
- Grafana dapat melakukan export data
- Apabila terdapat vendor atau pihak ketiga yang ingin melihat performance server tanpa perlu masuk kedalam cloud monitor.
- Grafana dapat di jadikan salah satu pilihan.
8. Ansible
Ansible adalah sebuah provisioning tool yang dikembangkan oleh RedHat. Dimana kamu dapat mencatat setiap proses deployment ataupun konfigurasi yang biasa dilakukan berulang - ulang terhadap beberapa server.
Ada 2 hal yang sangat penting jika kita ingin menggunakan sebuah Ansible, yaitu Inventory dan Playbook.
- Inventory adalah tempat di mana kita menyimpan alamat dari host/server yang akan menjadi tujuan dijalankannya konfigurasi yang telah ditentukan oleh Ansible.
- Sedangkan Playbook adalah tempat pendefinisian berbagai jenis konfigurasi yang akan dijalankan di target host.
Seperti yang disebutkan di atas, untuk menjalankan Ansible diperlukan inventory dan playbook. Meskipun masih ada file-file lain yang mungkin perlu dibuat, tetapi di sini saya akan membahas file yang paling dasar dan paling dibutuhkan oleh Ansible.
Yang pertama adalah invetory, di dalam sebuah inventory, kita perlu mendefinisikan host yang akan menjadi ansible slave dan juga nama grup.
Task berfungsi sebagai dokumentasi dari tujuan task tersebut dibuat dan mempermudah untuk troubleshooting ketika error terjadi. Sedangkan modul adalah pengganti dari perintah-perintah yang dijalankan secara manual pada terminal (shell).
Seperti yang sudah dijelaskan, kumpulan task tersebut akan membuat sebuah object yang disebut play. Karena seringkali 1 playbook hanya memiliki satu play, seringkali play (kumpulan task) disebut sebagai playbook (sebutan untuk file YAML nya).
Komentar
Posting Komentar