Apa itu DevOps?
DevOps adalah gabungan dari dua kata, di mana kepanjangan DevOps adalah development (Dev) dan operations (Ops) atau lebih jelasnya DevOps adalah penyatuan divisi, proses, dan teknologi pada fase pembuatan perangkat lunak atau aplikasi.
Di dalam proyek, tim development bertanggung jawab untuk terus membuat aplikasi baru dan memodifikasi yang sudah ada untuk membuatnya lebih baik dan efektif.
Sementara, tim operations harus mampu memastikan semuanya beroperasi secara optimal. Tim operations ini juga memastikan bahwa sumber daya jaringan tersedia dan berfungsi dengan kinerja yang baik.
Lalu apa tujuan DevOps?
Dev Ops memiliki tugas yang terbilang cukup banyak, lho. Lantas, apa saja tugas-tugasnya?
- Membuat ide, mendefinisikan, dan menjelaskan fitur dan kemampuan aplikasi atau sistem yang akan dibangun
- Melakukan otomatisasi dengan alat-alat selama proses pengembangan aplikasi, agar pengembang aplikasi dapat berjalan dengan cepat dan maksimal
- Membuat prototype dari hasil diskusi dengan pelanggan/user agar pengembangan aplikasi sesuai dengan yang diharapkan
- Mendokumentasi progres selama SDLC (siklus pengembangan aplikasi)
- Melacak bug, memonitoring sistem, dan mengelola pengembangan perangkat lunak dengan cepat
- Saling berkomunikasi terkait masalah yang terjadi pada setiap proses development
- Berinovasi dengan cepat tanpa mengorbankan kualitas, stabilitas, dan produktivitas
- Mengidentifikasi masalah sebelum mempengaruhi pengalaman pelanggan/user experience
Itulah tugas-tugas umum dari DevOps engineer. Meski terlihat banyak, tugas-tugas tersebut dapat dilakukan dengan efektif berkat adanya kolaborasi dan komunikasi yang baik antar tim.
Nah, jika dijelaskan secara lebih rinci, tugas DevOps meliputi:
- Continuous Integration – DevOps engineer akan melakukan testing secara berulang untuk menemukan error dan memperbaiki kode. Jika pada proses ini terdapat error, maka error tersebut akan bisa cepat diketahui dan tertangani oleh tim Developer dan QA.
- Continuous Delivery – Dalam proses ini, tim akan melakukan beberapa pengujian manual untuk menemukan error. Setelah proses pengujian dijalankan, tim akan melakukan lebih banyak pembaharuan dan perbaikan pada aplikasi. Anda bisa mengetahui lebih lanjut untuk Continuous Integration dan Delivery di artikel CI/CD.
- Configuration Management – Proses ini berkaitan dengan pemeliharaan konfigurasi pada aplikasi. Di mana, tim akan memastikan otomatisasi pada aplikasi dapat berjalan dengan baik dan maksimal;
- Infrastructure as a Code (IAC) – IAC adalah manajemen infrastruktur sebuah aplikasi melalui kode yang dapat diprogram, distandarisasi, dan diduplikasi. Nah, IAC ini berguna agar ketika data aplikasi hilang, tim tidak perlu kesulitan membangun aplikasi dari awal karena IAC akan bisa menyediakan sumber daya, mengembalikan konfigurasi, dan memulihkan data-data lainnya dari cadangan;
- Logging – Tim akan meninjau setiap kejadian dalam sistem, termasuk keberhasilan update dan error. Dari situ, tim akan membuat catatan penting tentang aplikasi secara real-time. Nantinya, data log ini menjadi acuan dan dapat membantu tim Dev Ops memecahkan masalah dengan mengidentifikasi perubahan yang ada.
- Monitoring – Sementara dalam monitoring, tim akan bertugas untuk mendeteksi seluruh hal yang berkaitan pada sistem, termasuk aplikasi dan layanan cloud. Jika ada penyimpangan / anomali, tim akan mencatat dan sesegera mungkin dan memperbaikinya. Proses monitoring juga berguna untuk melihat perubahan kode aplikasi. Apakah kode ini memberikan dampak baik atau tidak. Nah, proses monitoring ini membutuhkan hasil dari logging. Karena jika tidak ada data log, proses monitoring tidak akan berjalan baik karena kekurangan sumber data penting.
Bagaimana Cara Kerja DevOps?
Plan
Fase ini dapat melibatkan perencanaan untuk seluruh alur kerja yang mana dapat membutuhkan pada tim pengembang mulai dari menulis kode. Dalam tahap ini, manajer produk dan manajer proyek akan memainkan peran penting. Mereka akan bekerja sama untuk dapat mengumpulkan kebutuhan dan umpan balik dari klien maupun stakeholders. Informasi tersebut nantinya akan dikumpulkan untuk bisa membangun roadmap produk untuk bisa memandu proses pengembangan yang akan dilakukan.
Code
Tim pengembang memulai kerja dengan menulis kode yang dibutuhkan untuk bisa mengembangkan produk. Tim pengembang biasanya akan menggunakan seperangkat plugin standar yang bisa dipasang di lingkungan pengembangan mereka untuk dapat membantu proses pengembangan, membantu menerapkan gaya kode yang konsisten, serta menghindari kelemahan keamanan umum dan anti-pattern.
Build
Tim pengembang juga dapat memasukkan kode yang dibutuhkan, mereka akan memasukan kode ke dalam shared code repository. Selanjutnya, developerr akan mengirimkan pull request, setelah developer yang lain akan juga meninjau perubahan yang telah perusahaan lakukan. Jika kode tidak memiliki masalah, maka developer tersebut akan menyetujui pull request yang telah dikirim sebelumnya.
Test
Langkah pada selanjutnya adalah melakukan pengujian. Jika pada masalah ini dapat ditemukan masalah yang nantinya akan dikirim kembali ke tim developer untuk bisa diselesaikan.
Release
Fase release bisa juga menjadi tonggak penting pada DevOps. Pada tahap ini, setiap perubahan kode telah melewati serangkaian pengujian dari tim IT yang mana bagian operasional telah memastikan bahwa masalah yang merusak dan regresi sudah teratasi dengan sebaik mungkin.
Deploy
Pada tahap selanjutnya adalah deployment. Setelah adanya production environment yang perusahaan buat dan konfigurasi, maka terdapat versi terakhir dari pengembangan yang telah dilakukan akan juga bisa perusahaan terapkan.
Monitor
Pada tahap terakhir ini, tim operasional IT juga akan terus bekerja keras dengan memantau infrastruktur, sistem, serta aplikasi. Hal ini perusahaan lakukan untuk memastikan bahwa produk atau aplikasi berjalan dengan lancar. Mereka juga dapat mengumpulkan data-data penting dari log, analitik, sistem monitoring, serta melihat umpan balik dari pengguna untuk mengetahui jika nantinya terdapat masalah pada kinerja aplikasi.
Apa saja Tools atau Skill dan kualifikasi yang dibutuhkan untuk menjadi DevOps Engineer?
- Git dan GitHub
- Jenkins
- Selenium
- Kubernetes
- Puppet
- Docker
- Nagios
- Chef
- AWS
- Memiliki skill komunikasi yang baik secara lisan maupun tulisan karena akan bekerja bersama berbagai tim
- Memiliki pengetahuan berbagai macam bahasa pemrograman dan familiar dengan konsep dasar dari Linux.
- Memiliki kemampuan dasar untuk mengelola source codes
- Menjadi sysadmin yang baik dalam perusahaan
- Memiliki pengetahuan dalam operasional IT dan peran sysadmin untuk membentuk strategi dalam seluruh integrasi dan proses penyebarannya
- Memiliki pengalaman dalam percobaan software code dan penyebarannya bertanggung jawab untuk menyebarkan berbagai tools otomatis dalam penyempurnaan sistem DevOps
- Memiliki pengalaman dan pengetahuan akan metodologi Agile
- Mengikuti dan memahami baik kebutuhan maupun regulasi perusahaan