Apa Itu DevOps Tools – Bagian 2

  • IntialBoard
  • Jan 20, 2023
devops tools

Kita sudah memahami cara mempraktikkan DevOps melalui DevOps Pipeline. Namun, pembahasan tersebut belumlah sepenuhnya genap. Mengapa begitu ? Ketahuilah bahwa praktik DevOps sejatinya membutuhkan tools agar penerapannya menjadi lebih mudah, konsisten, dan terprediksi. Oleh karena itu, kali ini kita akan ulas mengenai DevOps tools secara lengkap.

Tools yang akan kita bahas di sini bervariasi, mulai dari yang disediakan oleh cloud provider ternama seperti AWS hingga yang umum sekalipun. Kali ini, Anda hanya perlu mengetahui nama dan fungsi tools yang akan disebutkan terlebih dahulu, tak usah pening memikirkan cara menggunakannya. Kelak, di kelas-kelas berikutnya barulah Anda akan praktikkan.

AWS adalah salah satu cloud provider yang menyediakan layanan dan tools untuk membantu kita dalam mempraktikkan DevOps di perusahaan. AWS memiliki rentetan DevOps tools yang bisa kita gunakan kapan saja dan di mana saja sesuai kebutuhan dengan hanya membayar melalui mekanisme pay-as-you-go (bayar sesuai pemakaian).

Oke, cukup soal pengenalan AWS-nya, mari kita kembali ke topik DevOps. Dalam mendukung kesuksesan praktik DevOps di suatu perusahaan, ada beberapa kategori best practice yang perlu kita perhatikan beserta tools yang sesuai untuk menerapkannya (akan dibagi antara tools yang bersifat umum dan AWS).

Komunikasi dan Kolaborasi

Dalam mempraktikkan DevOps, tim Developer dan IT Operations perlu menetapkan kultur yang kuat seputar transparansi informasi dan komunikasi supaya keduanya punya rasa saling memiliki satu sama lain. Dengan begitu, alih-alih hanya peduli dengan pekerjaan masing-masing tim, mereka justru akan melihat kebutuhan proyek secara kolektif.

Selain itu, penting pula bagi tim Developer dan IT Operations untuk membangun rasa empati dan kepercayaan di antara mereka agar mampu berkolaborasi menuju tujuan bersama. Maka dari itu, diperlukan DevOps tools untuk mendukung proses dan alur kerja yang terkonsolidasi.

Berikut beberapa tools yang bisa mengimplementasikan komunikasi dan kolaborasi antartim di perusahaan.

 

Platform komunikasi dan kolaborasi terpadu

Perusahaan bisa memfasilitasi hal ini dengan menyediakan platform atau aplikasi agar setiap tim bisa saling berkomunikasi dan berkolaborasi satu sama lain. Hal ini pun dapat mempercepat komunikasi ke seluruh tim Developer, IT Operations, dan bahkan tim-tim lain di perusahaan seperti Marketing atau Sales. Dengan begitu, semua orang bisa lebih dekat dan selaras dengan tujuan dan proyek yang sedang digarap.

Berikut beberapa contoh platform komunikasi dan kolaborasi terpadu (dibagi berdasarkan tools umum dan tools AWS).

TABEL 1 - Komparasi AWS dengan Platform Lainya
TABEL 1 – Komparasi AWS dengan Platform Lainya

Sekilas tentang Amazon Chime, ia adalah layanan komunikasi yang memungkinkan kita untuk mengadakan rapat, mengobrol, dan melakukan panggilan bisnis di dalam dan di luar perusahaan, semuanya hanya dengan satu aplikasi.

Sekilas tentang Amazon Chime

 

Cloud

Selanjutnya adalah Cloud. Tim Developer dan IT Operations tentu perlu berinovasi dengan cepat demi menghadirkan aplikasi yang andal dan aman. Untuk itu, perusahaan bisa mengandalkan cloud computing untuk berbagai teknologi guna mendukung upaya pengembangan aplikasi.

 

Alih-alih harus membeli dan memelihara perangkat-perangkat server secara fisik, Anda bisa dengan mudah membuat suatu environment (yang berisi server, jaringan, penyimpanan, dll) secara on-demand (sesuai permintaan) menggunakan cloud provider seperti AWS.

ilustrasi aws

Selain itu, AWS pun menyediakan layanan atau tools terkait DevOps yang sudah siap pakai sehingga memungkinkan kolaborasi dengan lebih mudah dan pada akhirnya dapat meraih tujuan bersama dengan lebih cepat.

 

IDE

IDE alias integrated development environment dapat membantu para Developer untuk menulis, menjalankan, dan men-debug kode aplikasi dengan mudah.

Percayalah, penggunaan IDE sesungguhnya dapat meningkatkan produktivitas Developer berkat hadirnya fitur-fitur seperti syntax highlighting, autocomplete, dan banyak lagi.

Selain itu, tim Developer dan IT Operations pun perlu terus berkolaborasi. Maka dari itu, akan semakin ciamik lagi bila Anda menggunakan collaboration tool. Dengan begitu, setiap orang bisa menulis kode secara bersamaan secara real-time pada suatu project.

Memanfaatkan collaboration tool memungkinkan terjadinya proses komunikasi dan kolaborasi yang baik, entah itu sesama Developer atau bahkan dengan IT Operations sehingga mereka bisa berkontribusi untuk memperbaiki kode agar kestabilan infrastruktur dapat terjaga saat proses deployment.

Berikut beberapa contoh IDE yang mendukung collaboration tool (dibagi berdasarkan tools umum dan tools AWS).

TABEL 2 - Komprasi AWS Cloud 9 Dengan Platform Lainya
TABEL 2 – Komprasi AWS Cloud 9 Dengan Platform Lainya

Sekilas mengenai AWS Cloud9, ia merupakan IDE berbasis cloud dari AWS yang dapat kita gunakan untuk menulis, menjalankan, dan men-debug kode hanya dengan web browser. Keren, kan? Nggak perlu unduh atau instal aplikasi sama sekali.

Sekilas mengenai AWS Cloud9

Selain itu, kita juga bisa menggunakan AWS Cloud9 untuk mem-push (mengunggah) perubahan atau penambahan kode ke dalam AWS CodeCommit repository (nanti kita bahas).

Oke, itu poin pembahasan mengenai komunikasi dan kolaborasi beserta tools yang dipakai. Bila Anda simak baik-baik, poin pembahasan mengenai Komunikasi dan Kolaborasi ini relevan dengan CALMS Framework yang kita bahas pada modul sebelumnya, yakni tentang Culture dan Sharing. Selanjutnya, mari kita bahas tentang CI/CD.

CI/CD

Ingatan Anda mungkin masih segar soal ini karena kita baru saja membahas CI/CD di submodul sebelumnya.

Ketahuilah bahwa praktik semacam continuous integration (CI) dan continuous delivery/deployment (CD) akan sangat efektif dan berjalan dengan baik apabila didukung oleh tools yang tepat. Dengan begitu, CI/CD akan menghadirkan kontinuitas tanpa batas di setiap fase pada proses pengembangan aplikasi.

Tools terkait CI/CD ini nantinya mampu untuk mengotomatiskan pengintegrasian kode aplikasi yang dikembangkan setiap orang, memeriksa compliance (kepatuhan) terhadap standar tertentu, menjalankan berbagai pengujian, mengoper kode ke lingkungan testing, dan men-deploy aplikasi ke lingkungan production. Proses ini dilakukan berulang kali dan secara andal setiap kali ada perubahan atau penambahan kode baru.

Dalam poin CI/CD ini, tools yang digunakan dibagi menjadi beberapa kategori berdasarkan siklus DevOps pipeline.

 

Code

Tahapan ini terjadi setelah Developer selesai menulis kode di IDE dan memasukkannya ke sebuah repository atau version control system.

Version control system merupakan tools untuk mengelola berkas-berkas proyek yang kita garap. Dengan tools tersebut, setiap orang yang berhak bisa mengakses dokumen pendukung proyek dan kode aplikasi, melihat riwayat perevisian, membandingkan perubahan kode dari waktu ke waktu, atau mengembalikan kode ke versi sebelumnya. Dengan begitu, akan memudahkan bagi Developer ataupun IT Operations untuk berkolaborasi dalam menggarap proyek bersama.

Berikut beberapa contoh version control system yang bisa Anda pakai (dibagi berdasarkan tools umum dan tools AWS).

ABEL 3 - Perbandingan AWS CodeCommit dengan platform lainya
TABEL 3 – Perbandingan AWS CodeCommit dengan platform lainya

 

Sekilas tentang AWS CodeCommit, ia adalah layanan version control system milik AWS yang menyediakan repositori berbasis Git yang aman. Cara kerjanya mirip seperti GitHub, hanya saja ini dikelola oleh AWS. Layaknya version control system pada umumnya, AWS CodeCommit memungkinkan kita menyimpan berkas-berkas dan kode aplikasi yang kita punya secara aman di sebuah tempat terpusat yang dinamakan repository.

Dari AWS CodeCommit, Anda bisa mengonfigurasi agar setiap perubahan atau penambahan kode yang terjadi bisa langsung dilakukan proses build.

 

Build

Seperti yang sudah kita pelajari sebelumnya, proses build ini berguna untuk mengubah file dan aset lainnya menjadi produk perangkat lunak dalam bentuk final atau siap di-deploy.

Perbandingan build tools aws codebuild dengan platform lainya
Perbandingan build tools aws codebuild dengan platform lainya

AWS CodeBuild adalah layanan build yang dikelola oleh AWS yang dapat secara otomatis meng-compile kode aplikasi, menjalankan pengujian, dan memproduksi software packages atau artifact yang siap untuk di-deploy.

 

Test

Tahapan ini sebenarnya tergantung pada jenis pengujian yang dilakukan. Apabila sekadar unit test, pengujian bisa dilakukan saat proses build berlangsung. Namun, jika ingin melakukan load testing, kita perlu men-deploy-nya terlebih dahulu ke lingkungan testing dengan bantuan AWS CodeDeploy. Opsi lain, jika Anda menginginkan suatu pengujian yang spesifik, bisa juga memanfaatkan third-party tools yang tersedia di AWS Marketplace, seperti Gremlin, Testable, LoadRunner, UFT One, dll.

 

Release

Fase ini sebenarnya sederhana. Kode aplikasi yang telah lolos pengujian kemudian disimpan ke repository, registry, atau storage dalam bentuk software packages, container image, dsb., dengan diberi nomor versi tertentu yang menandakan bahwa aplikasi sudah final dan siap di-deploy.

Apabila artifact yang dimaksud berbentuk compressed file, kita bisa menaruhnya di object storage seperti Amazon S3. Akan tetapi, jika berbentuk container image, berikut adalah contoh tools yang bisa digunakan (dibagi berdasarkan tools umum dan tools AWS).

TABEL 5 - perbandingan Amazon ECR dengan platform lainya
TABEL 5 – perbandingan Amazon ECR dengan platform lainya

 

Sedikit pembahasan mengenai Amazon ECR (Elastic Container Registry) dan AWS CodeArtifact.

Amazon ECR merupakan layanan penyimpanan (registry) untuk container image di AWS. Jadi, kita bisa dengan mudah push (simpan) container image secara aman ke Amazon ECR. Saat ingin menjalankannya di server, kita tinggal pull (ambil) dari registry tersebut sesuai dengan tag yang Anda tetapkan pada container image tersebut.

AWS CodeArtifact adalah layanan artifact repository dari AWS untuk menyimpan, memublikasikan, dan membagikan software packages yang digunakan pada proses pengembangan aplikasi. Layanan ini dapat bekerja dengan package manager dan build tools yang umum seperti Maven, Gradle, npm, yarn, twine, dan pip.

Dua layanan AWS ini bisa Anda pilih sesuai dengan tipe aplikasi yang Anda miliki.

 

Deploy

Aplikasi akan masuk tahap ini apabila kode sudah dipastikan benar-benar aman dan siap untuk di-deploy ke lingkungan production. Setelah di-deploy, perubahan atau penambahan kode yang dilakukan akan bisa langsung dirasakan oleh pengguna.

Berikut adalah beberapa contoh tools yang bisa digunakan untuk deploy aplikasi (dibagi berdasarkan tools umum dan tools AWS).

TABEL 6A - perbandingan AWS CodeDeploy dengan platform lainya
TABEL 6A – perbandingan AWS CodeDeploy dengan platform lainya

 

Mari kita bahas selintas tentang AWS CodeDeploy dan AWS Elastic Beanstalk.

AWS CodeDeploy adalah layanan yang mengotomatiskan deployment aplikasi sehingga memungkinkan Anda untuk men-deploy dengan andal dan cepat. Layanan ini akan mengotomatiskan proses deployment kode ke berbagai layanan komputasi yang tersedia di AWS, termasuk Amazon EC2 (server virtual), AWS Fargate (komputasi serverless untuk container), AWS Lambda (platform serverless untuk menjalankan kode), atau server on-premise (lokal).

AWS Elastic Beanstalk merupakan layanan platform-as-a-service yang memungkinkan kita untuk men-deploy dan mengelola aplikasi di AWS dengan cepat tanpa harus mengurusi persoalan infrastruktur. Kita hanya perlu mengunggah kode aplikasi dan Elastic Beanstalk secara otomatis akan mengurusi setiap detail yang diperlukan untuk menjalankan aplikasi.

Anda bisa memilih opsi target deployment yang diinginkan, apakah ke server, container, serverless, dsb. Itu semua tentunya kembali ke kebutuhan masing-masing perusahaan.

 

Monitor

Selepas aplikasi di-deploy ke production dan dapat dinikmati pengguna, langkah penting selanjutnya adalah memonitor/memantau berjalannya aplikasi tersebut. Pemantauan ini menjadi penting karena kita perlu mengetahui bagaimana aplikasi bekerja di dunia nyata.

Apakah sesuai dengan yang diharapkan? Apakah server akan kewalahan menghadapi lonjakan pengguna? Apakah semua fitur berjalan dengan semestinya saat diakses pengguna? Nah, pertanyaan-pertanyaan semacam ini akan bisa kita temukan jawabannya jika melakukan pemantauan dengan baik dan benar.

Berikut adalah beberapa contoh tools yang bisa digunakan untuk memantau aplikasi (dibagi berdasarkan tools umum dan tools AWS).

TABEL 7A - perbandingan AWS X-Ray dan Amazon CloudWatch dengan platform lainya
TABEL 7A – perbandingan AWS X-Ray dan Amazon CloudWatch dengan platform lainya

Kita akan bahas soal AWS X-Ray dan Amazon CloudWatch nanti di poin Monitoring dan Logging.

Nah, itu dia penjelasan dari setiap tahapan beserta tools yang dapat digunakan pada CI/CD pipeline. Mungkin sebagian dari Anda bingung dengan tools yang terpisah sehingga memunculkan pertanyaan, “Apakah ada layanan yang bisa memadukan semua tools di atas sehingga membuat proses CI/CD menjadi lebih mudah?” Ah, tentu saja ada. Anda harus berkenalan dengan layanan bernama AWS CodePipeline.

AWS CodePipeline adalah layanan continuous delivery yang memungkinkan kita untuk membuat model, memvisualisasikan, dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perangkat lunak. Dengan layanan ini, kita bisa mengonfigurasi tahapan-tahapan pada CI/CD pipeline sehingga memudahkan proses pengembangan aplikasi.

Berikut gambaran DevOps pipeline atau CI/CD pipeline bila kita memanfaatkan tools dari AWS.

DevOps pipeline atau CI CD yang ada di AWSBisa Anda lihat bahwa AWS CodePipeline mengintegrasikan beberapa layanan seperti AWS CodeCommit, AWS CodeBuild, dan AWS CodeDeploy (masih banyak layanan lain yang bisa diintegrasikan).

Supaya lebih jelas, berikut diagram yang menunjukkan contoh proses perilisan perangkat lunak menggunakan AWS CodePipeline.

diagram proses perilisan perangkat lunak menggunakan AWS CodePipeline

Dalam contoh ini, ketika Developer melakukan perubahan, pembaruan, atau perbaikan kode dan mengunggahnya ke version control system, AWS CodePipeline secara otomatis akan mendeteksi perubahan tersebut dan kemudian dilakukan proses build. Jika ada pengujian seperti unit test, pengujian tersebut akan dijalankan selama proses build.

Setelah unit test dan proses build selesai, kode segera dikirim ke lingkungan testing untuk dilakukan pengujian seperti load testing, dan lain-lain. Apabila pengujian tersebut berhasil dan secara manual disetujui oleh pihak terkait untuk lanjut ke production, CodePipeline segera men-deploy kode ke lingkungan production (berisi server supaya aplikasi bisa live ke publik).

Setelah aplikasi bisa digunakan oleh pengguna, mereka akan senantiasa mengirimkan feedback berupa ide untuk versi aplikasi berikutnya, permintaan fitur tertentu, atau pelaporan bug. Feedback ini kemudian diterima oleh Developer dan akan diimplementasikan ke aplikasi. Siklus ini akan berulang terus-menerus selama aplikasi tersedia di pasaran.

Nah, itulah beberapa DevOps tools yang perlu kita ketahui dalam proses CI/CD. Intinya, dengan menggunakan DevOps tools yang tadi disampaikan, niscaya akan membantu kita untuk mengasah ketangkasan pada proses pengembangan (development) dan penggelaran (deployment) aplikasi, seraya senantiasa memberikan feedback yang konstruktif dan memperingatkan kepada tim terkait tentang segala isu yang muncul.

Perlu Anda ingat kembali bahwa tahapan-tahapan pada DevOps pipeline atau CI/CD pipeline tidaklah mutlak. Itu artinya, setiap perusahaan bisa jadi memiliki urutan atau tahapan yang berbeda tergantung keputusan bisnis dan tentu jenis aplikasi yang digunakan.

Bila Anda simak baik-baik, poin pembahasan CI/CD ini relevan dengan CALMS Framework yang kita bahas pada modul sebelumnya, yakni tentang Automation dan Lean.

 

Infrastructure as Code

Kita sedari tadi kerap menyebutkan soal lingkungan development, testing, dan production. Mereka sejatinya sama-sama terdiri dari sekumpulan perangkat keras dan perangkat lunak, yang membedakan adalah peruntukannya.

Lingkungan development biasanya menggunakan komputer pribadi milik Developer agar bebas diotak-atik. Lingkungan testing umumnya adalah server yang dibuat mirip dengan production dengan tujuan menyimulasikan dunia nyata. Sementara itu, lingkungan production terdiri dari server yang sudah dikonfigurasi sedemikian rupa agar mampu menghadapi pengguna sesungguhnya.

Masalahnya, apabila kita membuat dan mengonfigurasi environment (lingkungan) tersebut secara manual, tentu akan rawan kesalahan dan menjadi tidak fleksibel. Namanya juga manusia, bisa jadi sewaktu-waktu salah mengonfigurasi server dan ujung-ujungnya aplikasi tidak berjalan sesuai dengan apa yang kita harapkan.

Oleh sebab itu, hadirlah prakarsa mengenai Infrastructure as Code alias IaC, yang merupakan praktik di mana infrastruktur (seperti server, jaringan, dll) dibuat dan dikelola menggunakan kode serta teknik pengembangan perangkat lunak, seperti version control system dan continuous integration.

Dalam pembahasan Infrastructure as Code ini, umumnya terdapat 2 kategori yang perlu kita bedah, yakni infrastructure automation dan configuration management.

 

Infrastructure automation

Infrastructure automation dalam hal ini adalah pembuatan infrastruktur dan sumber daya sejenis secara otomatis hanya dengan menggunakan kode. Dengan cara ini, baik Developer maupun IT Operations dapat berinteraksi dengan infrastruktur secara terprogram dalam skala besar tanpa harus mengonfigurasinya secara manual.

Selain itu, musabab didefinisikan oleh kode, kita bisa memperlakukan infrastruktur dengan cara yang serupa dengan kode aplikasi. Kita bisa men-deploy infrastruktur dan server dalam waktu singkat, memperbaruinya dengan patch dan versi terbaru, mengembalikan versi sebelumnya, atau menduplikasinya dengan cara yang berulang.

Bahkan, Anda juga dapat melacak perubahan yang terjadi, mengoptimalkan resource (sumber daya), dan meningkatkan system uptime (waktu kerja sistem).

Berikut adalah contoh tools yang bisa digunakan untuk kategori infrastructure automation (dibagi berdasarkan tools umum dan tools AWS).

TABEL 8 - perbandingan AWS CloudFormation dengan platform lainya

Sekilas tentang AWS CloudFormation, ia merupakan layanan Infrastructure as Code (IaC) yang dapat membantu menyiapkan AWS resource (sumber daya AWS) sehingga kita bisa menghabiskan lebih sedikit waktu untuk mengelola infrastruktur dan lebih banyak waktu untuk berfokus pada aplikasi yang berjalan di AWS.

Kita tinggal buat template (berisi kode untuk membuat infrastruktur) yang mendefinisikan semua AWS resource yang dibutuhkan (seperti server, jaringan, database, dll), AWS CloudFormation pun akan menangani pembuatan dan pengonfigurasian resource tersebut. Dengan begitu, kita tidak perlu lagi membuat atau mengonfigurasi resource satu per satu.

 

Configuration management

Dengan configuration management (manajemen konfigurasi), tim Developer dan IT Operations bisa menggunakan kode untuk mengautomasi pengonfigurasian sistem operasi dan server, tugas operasional, serta banyak lagi. Penggunaan kode semacam ini membuat perubahan konfigurasi menjadi repeatable (dapat diulang) dan standardized (distandardisasi) sehingga membebaskan Developer dan IT Operations dari konfigurasi sistem operasi, aplikasi sistem, atau perangkat lunak server yang manual.

Berikut adalah beberapa contoh tools yang bisa digunakan pada kategori configuration management (dibagi berdasarkan tools umum dan tools AWS).

TABEL 9 - perbandingan AWS OpsWorks dengan platform lainya

Selintas mengenai AWS OpsWorks, ia adalah layanan configuration management (manajemen konfigurasi) yang menyediakan server terkelola untuk Chef dan Puppet. Chef dan Puppet adalah platform automasi yang memungkinkan kita menggunakan kode untuk mengotomatiskan konfigurasi server.

Dengan Chef dan Puppet, AWS OpsWorks dapat membantu kita dalam mengotomatiskan proses konfigurasi, deploy, dan pengelolaan server di seluruh Amazon EC2 instance atau lingkungan on-premise.

Itu dia beberapa DevOps tools terkait Infrastructure as Code yang perlu diketahui. Bila Anda simak baik-baik, poin pembahasan ini relevan dengan CALMS Framework yang kita bahas pada modul sebelumnya, yakni tentang Automation

 

Arsitektur Microservices

Arsitektur microservice merupakan sebuah pendekatan desain untuk membangun aplikasi sebagai kumpulan service (layanan) yang loosely coupled (setiap service tidak bergantung satu sama lain, tetapi tetap satu kesatuan).

Masingmasing service dirancang hanya memiliki kemampuan tertentu dan berfokus pada pemecahan suatu masalah atau tujuan bisnis. Setiap service tidak perlu saling berbagi kode atau implementasi dengan service yang lain karena komunikasi yang terjadi di antara service dilakukan melalui API (application programming interface).

Berbeda dengan aplikasi dengan arsitektur monolitik (sudah kita bahas di modul pertama), aplikasi yang menggunakan pendekatan microservice, setiap service atau komponennya di-develop (dikembangkan), di-test (diuji), dan di-deploy (digelar) secara independen dari service yang yang lain. Dengan mengimplementasikan microservice, pengembangan, pembaruan, dan deployment aplikasi bisa menjadi lebih cepat.

Ketika berbicara tentang microservice, ada dua topik hangat yang perlu kita bahas, yakni container dan serverless.

 

Container

Container merupakan suatu cara standar untuk mengemas atau membungkus kode, konfigurasi, beserta dependencies yang diperlukan untuk menjalankan aplikasi. Dengan cara ini, aplikasi bisa menjadi portabel dan dapat berjalan di server mana pun.

Container dapat menyederhanakan cara kita dalam mengembangkan, menguji, dan men-deploy aplikasi ke berbagai environment (lingkungan). Namun, supaya lebih mudah untuk membuat dan mengelola container, kita memerlukan container orchestration tools.

Berikut beberapa contoh tools yang bisa digunakan terkait container orchestration tools (dibagi berdasarkan tools umum dan tools AWS).

perbandingan Amazon ECS dan Amazon EKS dengan platform lainya

Mari kita bahas sediki tentang Amazon ECS dan Amazon EKS.

Amazon ECS (Elastic Container Service) adalah layanan manajemen container yang bisa kita pakai untuk menjalankan dan mengelola container pada cluster yang dikelola oleh AWS dengan mudah.

Amazon EKS (Elastic Kubernetes Service) merupakan layanan yang dapat kita gunakan untuk menjalankan Kubernetes di AWS tanpa perlu menginstal, mengoperasikan, dan memelihara Kubernetes control plane atau node sendiri. Bila belum familier, Kubernetes adalah sistem yang open source untuk mengotomatiskan management (pengelolaan), scaling (penyesuaian kapasitas), dan deployment (penggelaran) aplikasi yang menggunakan container.

Kedua opsi layanan di atas bisa Anda pilih sesuai kebutuhan perusahaan.

 

Serverless

Serverless merupakan pendekatan komputasi di mana kita bisa membangun dan menjalankan kode tanpa perlu memikirkan infrastruktur dan server yang mendasarinya. Kita hanya perlu fokus terhadap kode dan serahkan segala urusan infrastruktur ke cloud provider seperti AWS.

Dalam konteks ini, serverless yang akan kita bahas berkaitan dengan Function as a Service (FaaS). Dengan kata lain, cloud provider menyediakan platform agar pelanggan bisa mengeksekusi kode sebagai response (reaksi) terhadap event (suatu peristiwa) yang terjadi, tentu saja tanpa perlu memelihara infrastruktur.

Berikut beberapa contoh tools yang bisa digunakan terkait serverless function as a service (dibagi berdasarkan tools umum dan tools AWS).

perbandingan AWS Lambda dengan platform lainya

Sekilas mengenai AWS Lambda, ia merupakan layanan komputasi serverless yang memungkinkan kita untuk menulis kode dan menjalankannya tanpa perlu membuat dan mengelola server. Uniknya, kode yang kita tulis hanya akan berjalan saat dirinya terpanggil (invoked).

Dalam hal CI/CD pipeline, kita bisa menggunakan Lambda function untuk berbagai hal, misalnya menyetujui aksi deployment pada continuous delivery, menghentikan alur rilis, dan lain sebagainya.

Selain terkait Function as a Service, ada juga layanan komputasi serverless untuk container seperti AWS Fargate. Ia merupakan mesin komputasi serverless yang kompatibel dengan Amazon ECS atau Amazon EKS sehingga kita bisa menjalankan container tanpa perlu mengelola server atau cluster.

Itu dia pembahasan mengenai Arsitektur Microservice. Bila Anda simak baik-baik, poin pembahasan ini relevan dengan CALMS Framework yang kita bahas pada modul sebelumnya, yakni tentang Automation.

 

Monitoring dan Logging

Monitoring (pemantauan) dan logging (pencatatan setiap peristiwa yang terjadi pada sistem) esensial digunakan untuk menilai seberapa efektif perubahan pada aplikasi dan infrastruktur, serta mengevaluasi bagaimana perubahan tersebut memengaruhi kinerja dan pengalaman pengguna secara keseluruhan.

cara Monitoring dan logging di amazon aws

Monitoring dan logging juga merupakan aspek penting dari DevOps yang akan membantu kita agar proaktif dalam mencegah suatu masalah sebelum terjadi. Monitoring dan logging juga dapat membantu tim (baik Developer maupun IT Operations) dalam bereaksi terhadap suatu masalah, menjadikannya sebuah pelajaran, merencanakan dan merancang agar masalah tersebut tidak terulang kembali, dan pada akhirnya meningkatkan kualitas aplikasi dan pengalaman pengguna.

Ada banyak hal yang bisa kita pantau terhadap sistem kita, terutama yang berurusan dengan CI/CD, seperti mengetahui frekuensi deployment, mengidentifikasi keberhasilan atau kesuksesan deployment, traffic (lalu lintas) pengguna pada aplikasi, dan masih banyak lainnya.

Oleh karena itu, agar dapat diobservasi, sistem haruslah menghasilkan data yang cukup dari semua resource (sumber daya), aplikasi, dan service (layanan) dalam bentuk logs, metrics, dan traces untuk mendapatkan visibilitas operasional di seluruh sistem.

Sebagai informasi, logs akan melaporkan peristiwa pada sistem, seperti peringatan; metrics akan menangkap informasi seputar kesehatan dan kinerja sistem, seperti request rate (seberapa banyak tingkat permintaan pengguna) atau response time (waktu yang dibutuhkan sistem untuk respons permintaan pengguna); sedangkan traces akan melaporkan transaksi dan aliran data di seluruh sistem terdistribusi, seperti sistem yang menggunakan pendekatan microservice.

Dengan mengobservasi atau mengamati suatu sistem, kita dapat menarik kesimpulan singkat tentang mengapa suatu peristiwa (misal, server down)  terjadi. Monitoring akan memberi tahu kita tentang apa yang terjadi dengan sistem. Jika dipadukan dengan logging, kemudian kita visualisasikan setiap data yang dikumpulkan oleh sistem dari waktu ke waktu, kita bisa memperoleh wawasan mengenai kinerja, mengidentifikasi tren, mengambil keputusan untuk mengatur alarm, serta membuat prediksi tentang hasil yang diharapkan.

Berikut adalah beberapa contoh tools yang bisa digunakan terkait serverless function as a service (dibagi berdasarkan tools umum dan tools AWS).

TABEL 12 - perbandingan AWS X-Ray dan Amazon CloudWatch dengan platform lainya

Mari kita bahas sebentar soal AWS X-Ray dan Amazon CloudWatch.

 

AWS X-Ray

AWS X-Ray merupakan sistem pelacakan terdistribusi. Layanan ini membantu kita untuk menganalisis dan men-debug aplikasi terdistribusi, seperti yang dibangun menggunakan pendekatan microservice.

AWS X-Ray akan mengumpulkan segala data mengenai request (permintaan) yang dilayani oleh aplikasi dan menyediakan tools yang dapat kita gunakan untuk melihat, memfilter, dan mendapatkan wawasan tentang data tersebut. Dengan begitu, kita bisa mengidentifikasi masalah dengan cepat dan langsung melakukan pengoptimalan sistem.

Bukan hanya akan mendapatkan informasi mendetail soal request dan response, tetapi juga mengenai komunikasi yang dilakukan oleh aplikasi Anda ke AWS resource, microservice, database, dan web API.

 

Amazon CloudWatch

Amazon CloudWatch adalah layanan yang bisa digunakan untuk memantau resource dan aplikasi yang berjalan di AWS secara real time. Kita bisa manfaatkan Amazon CloudWatch untuk memonitor dan mengamati kinerja server dan aplikasi, mengumpulkan dan mengobservasi file log, memecahkan masalah yang berulang kali terjadi, dan mengatur pemberitahuan bila terjadi suatu peristiwa yang tak diharapkan.

Oke, itulah tadi pembahasan kita mengenai DevOps tools pada Monitoring dan Logging yang sekaligus menjadi penutup pada modul Praktik DevOps. Bila Anda simak baik-baik, poin pembahasan ini relevan dengan CALMS Framework yang kita bahas pada modul sebelumnya, yakni tentang Measurement. Ke depannya, masih ada modul yang tak kalah menariknya. Jadi, stay tuned, ya!

Lanjutkan Ke :  The Second Way : Prinsip Terkait Umpan Balik

Related Post :

Leave a Reply

Your email address will not be published. Required fields are marked *