Service Application Famous On Linux
1.Container
Container adalah sejenis software yang mengemas dan mengisolasi applikasi secara virtual untuk mempermudah software deployment. Sistem kerja container ini adalah untuk 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 yaitu 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. Containerization memungkinkan pemisahan yang jelas antara team IT yang bertanggun jawab dengan komputer infrastruktur operasi (Ops Team) dan team programmer (Dev Team). Programming team dapat memfokuskan pada pengembang logika programming dan ketergantungan aplikasi mereka, sementara tim operasi IT dapat fokus pada penerapan dan manajemen tanpa mengganggu detail aplikasi seperti versi perangkat lunak tertentu dan konfigurasi khusus untuk aplikasi tersebut. Di dalam Microservices Architecture, setiap layanan dapat di masukan ke dalam container sehingga secara keseluruhan service yang kecil-kecil ini dapat berfungsi melakukan tugas besar secara keseluruhan.
2.Docker
Docker adalah software open-source yang digunakan untuk meluncurkan (deploy) aplikasi di dalam container virtual. Dengan container virtual ini (containerization), aplikasi bisa dijalankan secara terisolasi di environment yang kompleks sehingga tidak menimbulkan masalah pada environment lainnya. Docker memiliki banyak fungsi untuk berbagai contoh penerapan. Di bagian ini, kami akan membahas fungsi Docker dan tiga contoh umum penggunaannya.
1.Mecoba Software Baru
Dengan Docker, Anda bisa mencoba software baru tanpa harus menginstalnya secara manual. Docker juga berguna kalau Anda memerlukan software yang harus disiapkan cepat. Sebagai contoh, proses setup server MySQL bisa memakan waktu lama. Nah, dengan Docker, Anda hanya memerlukan satu perintah melalui CLI untuk melakukannya.
2.Mempelajari CLI
Meskipun bisa berjalan pada semua jenis perangkat, tadinya Docker dirancang khusus untuk Linux. Jadi, kami menyarankan agar Anda mengonfigurasinya pada sistem yang berbasis Linux. Dengan begitu, Anda pun bisa mempelajari administrasi sistem, command line interface, dan scripting lebih lanjut dengan lebih baik.
3.Mengurangi Risiko Inseden
Apabila terjadi kegagalan hardware, user bisa segera mengembalikan perubahan apa pun yang dibuat kalau tersedia image Docker. User hanya perlu mengimpor backup image ke perangkat baru, lalu Docker akan membereskan sisanya. Backup image Docker juga berguna saat developer ingin melakukan rollback ke versi lama software tertentu karena adanya bug atau masalah kompatibilitas.
Kelebihan Docker
-Portabilitas – daya tarik utama Docker adalah portabilitasnya. Docker memungkinkan user membuat atau menginstal aplikasi kompleks di perangkat, dan aplikasi tersebut dijamin bisa berjalan. Docker container memiliki semua yang dibutuhkan aplikasi, hanya dengan sedikit atau bahkan tanpa input dari user.
-Automasi – dengan bantuan cron job dan Docker container, user bisa mengotomatiskan pekerjaan dengan mudah. Automasi membantu developer menghindari tugas yang membosankan dan repetitif, serta menghemat waktu.
-Komunitas – Docker memiliki channel Slack khusus, forum komunitas, dan ribuan kontributor di website developer seperti StackOverflow. Terlebih lagi, ada lebih dari 9 juta image container yang dihosting di Docker Hub.
Kekurangan Docker
-kecepatan – meskipun akan lebih cepat untuk menjalankan aplikasi melalui Docker container daripada di VM, Docker masih lebih lambat dibandingkan dengan menjalankan aplikasi secara native pada server fisik.
-Kemudahan Penggunaan – Docker tidak dimaksudkan untuk menjalankan aplikasi yang memerlukan Graphical User Interface (GUI). Artinya, user harus familiar dengan baris perintah/command line, dan melakukan semua tindakan di sana. Alur belajar yang rumit, keterbatasan OS tertentu, dan frekuensi update yang lumayan menjadikan Docker sulit untuk dipahami. Bahkan, ketika Anda merasa sudah memahami Docker luar dalam, masih ada orkestrasi yang perlu dipertimbangkan, yang menjadikannya makin kompleks.
-Keamanan – Docker berjalan pada sistem operasi host, yang berarti software berbahaya apa pun yang bersembunyi di balik containernya bisa sampai ke mesin host.
Cara Kerja Docker
Cara kerja Docker adalah dengan menciptakan sebuah ruang isolasi untuk meluncurkan aplikasi atau layanan. Ruang isolasi ini disebut Container, seperti ‘wadah’ yang akan menampung suatu benda agar tidak tumpah ke area lain.
3.Podman
Podman adalah container engine yang lengkap untuk menjalankan, mengelola, dan mendebug container yang mematuhi standar Open Container Initiative (OCI). Dengan Podman, para developer dapat mengelola container tanpa menggunakan daemon. 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.
-Skopeo
Skopeo adalah tool dan library yang komprehensif untuk menginspeksi, menandai (signing), dan mentransfer container images. Dengan Skopeo, para developer dapat menginspeksi, memverifikasi, dan menandai image manifest tanpa mengandalkan docker daemon dan docker command. Selain itu, para developer juga bisa memindahkan container yang tersimpan di registry berbeda, termasuk Docker Registry.
-Buildah
Buildah memungkinkan Anda untuk membangun dan memodifikasi container tanpa menggunakan daemon ataupun docker. Buildah akan tetap memakai workflow dockerfile yang sudah ada, tetapi memberikan para developer kontrol perihal image, layers, konten, dan commits. Buildah juga mengecilkan ukuran container image dengan menggunakan tools dari container host.
4.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 container yang cukup populer. Kontainer sendiri adalah environment dengan sumber daya, CPU, dan sistem file untuk satu aplikasi. Jadi, aplikasi tersebut akan memiliki sumber daya sendiri. Keuntungannya, aplikasi jadi tidak mudah mengalami downtime. Kubernetes memiliki kemampuan untuk melakukan penjadwalan aplikasi, load balancing server dan peningkatan kapasitas kontainer secara otomatis. Tak heran, Kubernetes kini banyak digunakan untuk membangun microservices, yaitu aplikasi kecil yang menjadi pengembangan dari aplikasi besar dan saling terhubung satu sama lain. Dengan menggunakan Kubernetes, proses pengembangan aplikasi jadi lebih cepat karena proses scale up aplikasi tidak dibuat sekaligus seperti pada pendekatan monolith. Beberapa perusahaan yang menggunakan microservices pada produk mereka di antaranya adalah Netflix, Amazon dan Apple. Inilah yang membuat Kubernetes menjadi semakin populer berkat kebutuhan penggunaan pada aplikasi modern.
Komponen - komponen Kubernetes
1.Cluster
Cluster adalah suatu kelompok berisi server fisik atau VPS untuk menjalankan Kubernetes. Ada dua jenis server yang dibutuhkan, yaitu master node dan worker node.
1.Master Node
Master node adalah server utama yang mengatur semua operasi cluster menggunakan tiga komponen, yaitu kube-apiserver, kube-controller-manager, kube-scheduler dan etcd.
-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.
2.Worker Node
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.
2.Object
Di dalam sebuah cluster, terdapat berbagai object, yaitu entitas yang merepresentasikan kondisi dari suatu cluster. Ada berbagai object yang ada pada sebuah cluster Kubernetes, yaitu:
1.POD
Pod merupakan objek terkecil di dalam cluster kubernetes yang terletak di dalam node. Fungsinya untuk menjalankan docker images yang membentuk sebuah kontainer.
2.Service
Service adalah objek yang digunakan untuk mengarahkan request atau traffic ke beberapa Pod menggunakan IP address. Tujuannya agar Pod bisa diakses dari luar.
3.Volume
Volume adalah objek yang berfungsi untuk penyimpanan data suatu kontainer. Letaknya di luar kontainer. Misalnya, awsElasticBlockStore, azureDisk, azureFile, cephfs, cinder, configMap.
4.Namespace
Namespace adalah objek untuk memisahkan resource atau environment cluster. Dengan namespace, Anda dapat memisahkan tiap cluster project supaya tidak saling terganggu satu sama lain.
Cara Kerja Kubernetes
Setelah mengetahui tentang komponen-komponen Kubernetes beserta fungsinya, kami akan menjelaskan cara kerja Kubernetes yang sering disebut sebagai platform untuk container orchestration.
Keunggulan Kubernetes
Kubernetes memiliki fitur - fitur yang memudahkan anda mengembangkan aplikasi, yaitu :
1.Service Discovery Dan Load Balancing
Fitur service discovery memudahkan untuk melacak kontainer dengan otomatis. Hal ini tentu sangat penting di dalam mengembangkan aplikasi microservices. Kubernetes dapat mengenali sebuah service berdasar DNS atau IP address server tersebut. Tak hanya itu, berkat Load Balancing pengelolaan trafik menjadi lebih mudah. Saat terjadi trafik yang cukup besar, Kubernetes mampu membagi beban secara merata sehingga membuat aplikasi menjadi lebih stabil.
2.Storage Orchestration
Kubernetes memungkinkan Anda melakukan mount pada media penyimpanan (storage) pilihan Anda seperti, storage lokal atau yang berbasis cloud seperti AWS dan lainnya.
3.Automated Rollouts And Rollbacks
Fitur automated rollouts dan rollback sangat penting untuk membantu Anda terkait deployment. Pada Kubernetes, deployment bisa menggunakan file YAML yang di dalamnya nanti akan berisi ReplicaSet. Apabila terjadi kendala pada deployment, dan Anda masih memiliki ReplicaSet dari versi sebelumnya, Anda dapat menggunakannya untuk melakukan rollback. Hal tersebut juga bisa Anda gunakan ketika Anda akan melakukan deployment lainnya.
4.Automatic Bin Packing
Menggunakan fitur Automatic Bin Packing, Anda bisa mengatur kapasitas CPU dan sumber daya tiap kontainer secara spesifik. Jadi saat limit kapasitas sudah ditentukan, aplikasi terhindar dari berebut sumber daya. Selain itu, sumber daya jadi lebih hemat.
5.Self Healing
Fitur self-healing sangat penting bagi Anda yang ingin terus menjalankan aplikasi selama 24 jam. Nah, Kubernetes memiliki kemampuan untuk memeriksa kontainer yang ada, apakah dalam keadaan running (berjalan) atau mengalami error. Jika terjadi kendala pada kontainer, Kubernetes akan menghentikan proses yang berjalan dan memberikan opsi untuk merestart atau mengganti secara otomatis kontainer yang error tersebut. Menariknya, trafik tidak akan diarahkan ke kontainer yang rusak sebelum siap untuk menerima request kembali.
6.Secret And Configuration Management
Kubernetes memungkinkan Anda menyimpan data-data sensitif seperti password, auth token hingga SSH keys ke dalam Kubernetes Secret. Hal ini tentu jauh lebih aman dibanding menyimpannya di dalam container image. Secret bisa dibuat oleh sistem atau oleh user, yaitu Anda sendiri. Nah, karena secret sendiri secara default disimpan tanpa terenkripsi, Anda bisa melakukan konfigurasi lebih lanjut sesuai dengan kebutuhan,antara lain opaque (secret umum/default), docker registry (untuk otentikasi docker registry), dan TLS (untuk penggunaan dengan public/private keys).
5.Openshift
Red Hat Openshift Container Platform adalah software container yang dikembangkan oleh Red Hat yang dapat memudahkan konsumen enterprise dan mitra kerja dalam memperoleh teknologi Open Source. 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.
Jenis Openshift
Red Hat OpenShift Container juga merupakan platform Kubernetes perusahaan terkemuka, dengan operasi otomatis untuk mengelola penerapan hybrid dan multi-cloud, dioptimalkan untuk produktivitas pengembang dan inovasi tanpa hambatan. Produk ini sendiri terdiri dari 5 produk berbeda, yaitu :
1.Red Hat Openshift Container Platform
Platform ini menyediakan platform bagi pengembang dan operator TI untuk membangun, mengembangkan, dan mengelola aplikasi baik untuk infrastruktur multi cloud maupun pada hybrid cloud. Maka dari itu, hal ini dapat membuat pengembangan aplikasi dapat menghemat biaya dan pengerjaannya lebih cepat.
2.OKD
OKD merupakan pembagian Kubernetes yang telah teroptimalisasi bagi pengembangan aplikasi secara multi-tenant deployment dan secara berkepanjangan. Tools DevOps untuk mempercepat perkembangan aplikasi, mempermudah penggunaan, skalabilitas dan siklus pemeliharaan jangka panjang dengan segala ukuran tim juga mereka tambah pada OKD.
3.Red Hat Openshift Dedicated
Red Hat OpenShift Dedicated ini berguna untuk mempercepat pengembangan aplikasi cloud native dan aplikasi traditional bagi para tim developer. Produk ini mendapat dukungan teknologi Docker dan Google Kubernetes yang Red Hat Enterprise Linux rancang dan bangun. Maka dari itu, produk ini terkoneksi langsung ke data center dengan aman agar menghemat biaya serta infrastruktur pada pengimplementasian pada strategy TI hybrid cloud. Produk ini merupakan platform aplikasi kontainer yang Red Hat kelola berada pada hosting Google Cloud Platform dan Amazon Web Service.
4.Openshift Online
OpenShift Online merupakan sebuah Platform as a Service (PaaS) yang berfungsi untuk pengembangan dan organisasi TI agar dapat build aplikasi cloud baru secara skalabilitas dan aman dengan konfigurasi dan manajemen overhead yang minim. Dan juga, produk ini mendukung banyak bahasa programming dan framework seperti Java, Ruby, dan PHP.
5.Openshift.io
OpenShift.io adalah Layanan Software as a Service (SaaS) yang menawarkan pengembangan toolchain yang telah terkonfigurasi untuk pengembang agar dapat langsung membangun aplikasi yang terkontainerisasi tanpa perlu lagi menginstal dan mengkonfigurasi software.
Fitur - Fitur Yang Terdapat Pada Redhat Openshift Platform
-Self Service Platform
pengembang dapat membuat aplikasi secara langsung dari tool yang sering mereka gunakan. Dan operator dapat mengoperasikan aplikasi dengan mandiri dengan efektif dan efisien.
-Container Based
OpenShift merupakan penyedia platform berbasis kontainer dan berbasis Docker untuk menjalankan dan menyebarkan aplikasi microservices.
-Polygot, Multi Language Support
Pengembang memiliki kemampuan untuk menjalankan berbagai aplikasi dengan banyak bahasa pemrograman, database dan framework pada satu platform. Sehingga memungkinkan penguna untuk lebih mudah memanfaatkan ekosistem berbasis docker.
-Automation
Pembuatan aplikasi, penyebaran, membuat pengskalaan, health management dan lebih banyak memanfaatkan komponen terintegrasi dari Kubernetes yang akan di otomatiskan oleh Openshift.
-Multiple Interaction Model
pengembang dapat membuat dan mengelola aplikasi dengan utility yang sangat bermacam-macam, seperti command line tools, multi device web console, atau Eclipse yang dapat menyatu dengan JBoss Developer Studio.
6.Elasticsearch
Elasticsearch merupakan mesin pencarian dan analitik terdistribusi yang dibangun di Apache Lucene. Sejak diluncurkan pada tahun 2010, Elasticsearch telah dengan cepat menjadi mesin pencari paling populer dan biasa digunakan untuk analisis log, pencarian teks lengkap, inteligensi keamanan, analisis bisnis, dan kasus penggunaan inteligensi operasional. Pada 21 Januari 2021, Elastic NV mengumumkan bahwa mereka akan mengubah strategi lisensi perangkat lunak mereka dan tidak merilis versi baru Elasticsearch dan Kibana di bawah lisensi Apache License, Versi 2.0 (ALv2) yang permisif. Sebagai gantinya, versi baru perangkat lunak akan ditawarkan pada lisensi Elastic, dengan kode sumber tersedia pada Elastic License atau SSPL. Lisensi ini bukan sumber terbuka dan tidak menawarkan kebebasan yang sama kepada pengguna. Untuk memastikan bahwa komunitas sumber terbuka dan pelanggan kami terus memiliki suite pencarian dan analitik yang sepenuhnya sumber terbuka, aman, berkualitas tinggi, kami memperkenalkan proyek OpenSearch, cabang sumber terbuka Elasticsearch dan Kibana yang berbasis komunitas dan berlisensi ALv2.
Cara Kerja Elasticsearch
Anda dapat mengirimkan data dalam bentuk dokumen JSON ke Elasticsearch menggunakan API atau alat penyerapan, seperti Logstash dan Amazon Kinesis Firehose. Elasticsearch secara otomatis menyimpan dokumen asli dan menambahkan referensi yang mudah dicari pada dokumen dalam indeks klaster. Anda kemudian dapat mencari dan mengambil dokumen menggunakan API Elasticsearch. Anda juga dapat menggunakan Kibana, alat visualisasi, dengan Elasticsearch untuk memvisualisasikan data Anda dan membangun dasbor interaktif. Anda dapat menjalankan versi Elasticsearch berlisensi Apache 2.0 (hingga versi 7.10.2 & Kibana 7.10.2) secara on-premise, di Amazon EC2, atau di Amazon OpenSearch Service. Dengan deployment on-premise atau Amazon EC2, Anda bertanggung jawab untuk menginstal Elasticsearch dan perangkat lunak lainnya yang diperlukan, menyediakan infrastruktur, serta mengelola klaster. Di sisi lain, Amazon OpenSearch Service adalah layanan yang terkelola penuh, sehingga Anda tidak perlu khawatir dengan tugas pengelolaan klaster yang memakan waktu, seperti penyediaan perangkat keras, patching perangkat lunak, pemulihan kegagalan, pencadangan, dan pemantauan.
7.Grafana
Grafana adalah perangkat lunak open-source yang digunakan untuk visualisasi dan analisis data. Ini menyediakan antarmuka berbasis web yang intuitif yang memungkinkan pengguna untuk membuat panel yang menampilkan data dari berbagai sumber seperti Prometheus, InfluxDB, Graphite, Elasticsearch, dan lainnya. Grafana juga menyediakan berbagai alat analisis dan visualisasi seperti grafik, tabel, dan alerting, yang memungkinkan pengguna untuk secara efektif mengevaluasi dan mengeksplorasi data mereka. Grafana sangat populer digunakan dalam dunia monitoring sistem dan aplikasi, observability, dan analisis performans.
8.Ansible
Ansible adalah perangkat lunak open-source yang digunakan untuk otomatisasi konfigurasi dan deployment. Ini menyediakan mekanisme untuk mengelola perangkat dan aplikasi di jaringan yang terdistribusi dengan cara yang mudah digunakan dan dapat dikonfigurasi. Ansible menggunakan konsep "playbook" yang merupakan skrip yang menentukan tindakan yang harus dilakukan pada perangkat jaringan. Playbook ditulis dalam bahasa yang disebut Ansible Playbook Language (APL) yang menggunakan sintaks yang sangat mirip dengan YAML. Ansible menggunakan mekanisme "push" untuk mengirim perintah ke perangkat jaringan. Ini berarti bahwa Ansible akan mengirim perintah langsung ke perangkat yang ditentukan tanpa harus melalui server tengah. Ini membuat Ansible sangat cocok untuk digunakan dalam lingkungan jaringan yang terdistribusi dan skala besar. Ansible juga dapat digunakan untuk mengelola perangkat cloud, seperti AWS, Azure, atau Google Cloud, menggunakan "module" yang disediakan oleh Ansible. Ansible juga dapat digunakan untuk mengelola aplikasi container seperti Docker dan Kubernetes. Ansible sangat populer digunakan dalam dunia IT Automation, Configuration Management, dan Deployment.
Komentar
Posting Komentar