Seiring dengan perkembangan teknologi, banyak perusahaan-perusahaan besar seperti Amazon, Walmart, ataupun Google yang memilih menggunakan sistem DevOps agar proses delivery produk dapat dilakukan secara efektif dan efisien. Selain itu, DevOps juga terbukti dapat memberikan berbagai macam keuntungan seperti mampu menghasilkan kolaborasi tim yang lebih baik, mempertahankan kualitas produk, dan masih banyak lagi.
Meskipun sekarang solusi DevOps sudah semakin banyak diadopsi oleh perusahaan-perusahaan besar, tetapi pada kenyataannya sampai saat ini masih banyak orang yang mengalami kebingungan dan belum memahami apa itu DevOps. Beberapa orang beranggapan bahwa DevOps adalah sebuah budaya, pendekatan, atau filosofi. Sedangkan sebagian orang yang lain beranggapan bahwa DevOps adalah sebuah metodologi. Jadi sebenarnya apa itu DevOps? Segala hal tentang DevOps akan dibahas dalam artikel dibawah ini.
Apa itu DevOps?
DevOps merupakan gabungan dari dua kata yaitu Development (Dev) yang artinya pengembangan dan Operation (Ops) yang artinya Operasional. Dari kedua kata tersebut, dapat disimpulkan bahwa DevOps adalah sebuah proses dalam mengembangkan software ataupun aplikasi yang melibatkan tim developer dengan tim IT operasional. Dari penjelasan di atas, disimpulkan bahwa DevOps adalah kombinasi prinsip, sistem, budaya, dan praktik kerja sebuah perusahaan IT dalam menghasilkan aplikasi atau software dengan cepat dan efektif.
DevOps adalah sebuah hal yang sangat penting dalam industri IT, hal ini dikarenakan tujuan dari DevOps untuk melakukan update produk yang kecil dan cepat atau biasa disebut dengan minor/patch update. Praktik DevOps dilakukan oleh para DevOps engineer yang memahami Software Development Life Cycle. Seorang DevOps engineer akan bekerja sama dengan developer untuk membentuk kode-kode untuk dirilis, dicoba, dan juga diperbaiki jika ada kesalahan. Praktik DevOps bisa efektif apabila menggunakan prinsip dan juga tools yang canggih serta mumpuni, sehingga kolaborasi bisa menjadi efisien.
Kehadiran DevOps akan memudahkan perusahaan dalam memahami keinginan pelanggan dengan lebih optimal, mencapai tujuan bisnis dengan lebih cepat, dan bisa meningkatkan kualitas aplikasi yang dibuat. DevOps adalah cara untuk membangun komunikasi di dalam sebuah divisi.
Sejarah singkat DevOps
DevOps dibentuk melalui forum diskusi antara Patrick Debois dan Andrew Shafer ketika bertemu di suatu konferensi pada tahun 2008. Pada saat itu Patrick Debois sedang kesusahan mengurus data testing, karena tim Developer dan IT Operations di tempat ia bekerja masih menggunakan cara yang konvensional. Akhirnya banyak waktu yang terbuang saat proses testing.
Di konferensi tempat mereka bertemu, Andrew Shafer sedang membahas Agile Infrastructure. Dari situlah Patrick Debois menemukan jawaban atas kegelisahannya dan forum diskusi tersebut berlanjut hingga dibuatlah DevOps Day pada tahun 2009. Adapun penjelasan sejarah lainnya yaitu dimulai pada tahun 2009, dimana konferensi pertama yang diberi nama “Devopsdays” diadakan di Ghent, Belgia. Konferensi ini didirikan oleh seorang konsultan Belgia, yang merupakan manajer proyek dan praktisi yang gesit Patrick Debois. Konferensi ini sekarang telah menyebar ke negara lain.
Kemudian pada tahun 2012, laporan State of DevOps disusun dan diluncurkan oleh Alanna Brown di Puppet. Dan pada tahun 2014, laporan tahunan State of DevOps diterbitkan oleh Nicole Forsgren, Gene Kim, Jez Humble dan lainnya. Pada tahun 2014 tersebut juga mereka menemukan bahwa adopsi DevOps terbilang semakin cepat. Selain itu juga pada tahun 2014, Lisa Crispin dan Janet Gregory menulis buku yang berjudul More Agile Testing, yang berisi bab tentang testing (pengujian) dan DevOps.
Dan akhirnya pada tahun 2015, Nicole Forsgren, Jez Humble dan Gene Kim menemukan DORA (DevOps Research and Assessment). Istilah ini terus berkembang dan digunakan ketika mencakup pengembangan teknologi hingga sekarang ini di tahun 2023.
Tujuan DevOps
Tujuan DevOps adalah membangun komunikasi, integrasi, otomatisasi, dan kerja sama yang erat di antara semua orang. Dev Ops memiliki tujuan tersebut agar dapat menghasilkan:
- Adaptasi terhadap pasar dan persaingan dengan cepat
- Menjaga stabilitas dan keandalan sistem
- Menurunkan kendala misskomunikasi antar tim
- Mempersingkat waktu perbaikan dan pemulihan aplikasi
- Mempercepat waktu delivery product
- Memangkas biaya infrastruktur
- Menghasilkan budaya kerja yang baik
menurut niagahoster.co.id yang dikutip dari atlassian.com, DevOps Trends Survey 2020 menyatakan hampir semua (99%) responden berbicara mengenai Dev Ops yang dapat membuat dampak positif pada organisasi mereka. Tim yang mempraktikkan DevOps mengirimkan hasil pekerjaan yang lebih baik dan lebih cepat, meminimalisir respon insiden, dan meningkatkan kolaborasi dan komunikasi antar tim.
Cara Kerja DevOps
Pada proses yang memungkinkan tim pengembang dan tim operasional IT dapat bekerja sama untuk dapat membangun dan menerapkan kode ke production environment. Meskipun setiap perusahaan yang menjalankan model DevOps, tetapi perusahaan bekerja dengan proses yang berbeda-beda. Berikut adalah cara kerja DevOps :
1. 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.
2. 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.
3. 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.
4. 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.
5. 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.
6. 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.
7. 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.
Tugas – Tugas DevOps
DevOps memiliki banyak tugas yang harus dilakukan, mengingat prinsip DevOps adalah menciptakan dan mengembangkan software atau aplikasi berkualitas baik dengan cepat dan efisien. Jika dijabarkan, maka tugas DevOps secara umum adalah sebagai berikut :
- 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
Setelah mengetahui tugas DevOps secara umum. Untuk tugas DevOps yang lebih rinci akan dijelaskan dibawah ini :
- 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.
- Continuous Development : Setelah kedua tahap sebelumnya selesai dilakukan, selanjutnya tim developer bisa melakukan pengujian dengan berfokus pada aspek fungsional dari sistem terkait. Pengujian ini disebut sebagai User Acceptance Testing (UAT) stage.
- 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 (IAAC) : IAAC 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.
Tools DevOps
Setelah mengetahui uraian tugas – tugas DevOps diatas, Kali ini saya akan membagikan informasi tentang beberapa aplikasi/tools yang sesuai dengan kebutuhan atau tugas – tugas DevOps.
- Continous Integeration : Travis CI, Codeship, Bitbucket Pipeline, Gitlab CI, CircleCI
- Continuous Delivery : Gitlab CI/CD, Jenkins, Azure DevOps, CircleCI
- Continuous Development :Jenkins, Gitlab CI/CD, Bitbucket Pipeline, Semaphore CI, Travis CI, Circle CI, AWS Code Build, AWS Code Pipeline
- Configuration Management : Ansible, Chef, Puppet, Capistrano, Fabric, SaltStack
- Infrastructure as a Code (IAAC) : Terraform, Ansible Tower, Chef, Puppet, SaltStack, AWS CloudFormation
- Logging : ElasticSearch + Logstash + Kibana, Splunk, Graylog, AWS Cloudwatch, AWS Kinesis Data Firehose
- Monitoring : Nagios, Zabbix, Sensu, Cacti, OpenNMS, Icinga, Prometheus, Grafana, AWS CloudWatch
Setidaknya ada 10 alat terbaik yang sering diandalkan oleh DevOps, yaitu :
- Slack – Dengan Slack, tim pengembang dapat berkolaborasi menggunakan toolchain di lingkungan yang sama saat berkomunikasi dengan tim operation dan tim lainnya.
- Jenkins – Alat ini dapat mengotomatiskan siklus pembangunan perangkat lunak. Di sini pengembang secara otomatis dapat memasukkan kode ke dalam repositori, menjalankan kasus pengujian, serta mengambil laporan yang diperoleh setelah pengujian.
- Docker – Alat ini mampu melakukan pengemasan, penerapan, dan pengoperasian aplikasi secara aman. Biasa juga diandalkan untuk menaruh infrasturktur source code, file pendukung, waktu proses, file konfigurasi sistem, dan lain-lain.
- Phantom – Tool ini digunakan ketika ingin membangun infrastruktur yang dapat dipertahankan sejak awal SDLC. Phantom juga memberi opsi dalam mengurangi risiko kesalahan konfigurasi, dengan menggunakan teknik seperti file detonation, device quarantine, dan lain sebagainya.
- Nagios – Alat ini memiliki peran untuk pemantauan yang cenderung mengawasi aplikasi, server, serta infrastruktur bisnis secara keseluruhan.
- Vagrant – Ini adalah alat untuk bekerja dengan mesin virtual dalam satu alur kerja. Saat menggunakan Vagrant, anggota tim dapat berbagi lingkungan perangkat lunak yang berjalan dan bisa menguji aplikasi lebih cepat tanpa membuang waktu.
- Ansible – Ansible adalah salah satu alat manajemen konfigurasi dan orkestrasi IT yang paling sederhana tapi efektif.
- GitHub – Alat ini menjadi salah satu alat DevOps teratas untuk membantu kolaborasi tim dengan mudah. Di Github, para pengembang dapat membuat iterasi cepat pada kode, yang pemberitahuannya dikirim secara instan ke anggota tim lainnya.
- Sentry – Alat ini biasa diandalkan untuk deteksi kesalahan atau bug dengan baik. Tool gratis ini mendukung bahasa seperti Ruby, IOS, JavaScript, dan lainnya.
- BitBucket – Alat yang membantu mengelola kode proyek sepanjang siklus pengembangan perangkat lunak. BitBucket memiliki fitur repositori pribadi.
Itulah alat-alat yang biasa diandalkan oleh para Dev Ops. Para pembaca mungkin bisa mencoba salah satunya untuk mulai belajar dan mendalami tentang DevOps lalu mengimplementasikan kolaborasi dengan timnya.
Kelebihan dan Kekurangan DevOps
Penerapan metode DevOps memiliki banyak sekali kelebihan, akan tetapi terdapat juga kekurangan dari penerapan metode ini. Berikut adalah kelebihan dan kekurangan dari penerapan metode DevOps :
Keuntungan
- Pengembangan dan penerapan aplikasi yang lebih cepat.
- Respon yang lebih cepat terhadap perubahan pasar untuk meningkatkan pertumbuhan bisnis.
- Keuntungan bisnis meningkat karena ada penurunan waktu pengiriman perangkat lunak dan biaya transportasi.
- Meningkatkan pengalaman dan kepuasan pelanggan.
- Menyederhanakan kolaborasi karena semua alat ditempatkan di cloud untuk diakses pelanggan.
- Menghasilkan keterlibatan dan produktivitas tim yang lebih baik karena tanggung jawab bersama.
Kekurangan
- Ketersediaan lebih sedikit profesional DevOps.
- Biaya infrastruktur tinggi untuk pengaturan oleh lingkungan DevOps.
- Kurangnya pengetahuan DevOps dapat menyebabkan masalah dalam integrasi proyek otomasi yang berkelanjutan.
Menjadi Seorang DevOps Engineer
DevOps adalah pekerjaan yang membutuhkan skill managerial dan juga depth knowledge mengenai OS Linux, memahami scripting Python, menguasai cloud computing dan lain sebagainya. Dalam industri IT, bidang ini menjadi salah satu pekerjaan dengan tipe high-demand karena kehadiran DevOps adalah untuk membantu perilisan sebuah aplikasi / website dengan cepat dan jauh dari risiko kesalahan.
Memiliki posisi DevOps dalam perusahaan IT, startup, dan sejenisnya tentu akan memberikan banyak keuntungan yang lebih besar bagi perusahaan. Jenis pekerjaan ini masuk ke kategori pekerjaan dengan gaji tertinggi, yaitu berkisar antara Rp. 10-40 juta per bulan hanya untuk satu DevOps Engineer. Hal ini disebabkan oleh sumber daya yang terbatas karena masih sedikit yang memperdalam DevOps akan tetapi kebutuhannya yang lumayan tinggi.
Menurut badr.co.id yang mengutip dari Intellipaat untuk bisa mencapai karir sebagai DevOps, Anda bisa melalui beberapa jalur karir seperti berikut ini :
karena DevOps berperan sebagai jembatan antara tim development dan operation, maka seorang DevOps engineer harus memiliki pemahaman yang cukup luas terkait kedua itu. berikut adalah beberapa skill yang harus diketahui, dipelajari dan diperdalam jika ingin menjadi DevOps Engineer :
1. Memahami Konsep Utama dari DevOps
Meski DevOps menyatu dengan konsep yang serba otomatis dan canggih, tetapi DevOps bukan sebuah teknologi atau alat. DevOps adalah sebuah metodologi yang tidak memiliki kerangka kerja yang ketat. Target utama metodologi DevOps yaitu menyatukan tim developer dan operation dengan tujuan untuk mengurangi kesenjangan di antara kedua tim tersebut sehingga pekerjaan dapat dilakukan lebih cepat. Dengan menggunakan metodologi DevOps, perusahaan akan bisa memberikan perangkat lunak berkualitas lebih cepat. Tapi perlu diingat, untuk memahami konsep utama Dev Ops, seseorang perlu memahami tugas-tugas DevOps terutama tentang pemahaman teknis.
2. Menguasai Tools Development dan Operations
Seorang DevOps membutuhkan pengetahuan yang mendalam tentang alat-alat development dan operations. Bukan tanpa alasan, sebab dalam praktik DevOps akan berhubungan erat dengan otomatisasi. Dengan demikian, setiap orang harus mampu mengintegrasikan alat dan sistem yang berbeda. Dalam Dev Ops, tim akan menggabungkan, membangun, menguji, mengemas, dan menyebarkan kode secara bersama. Semua orang ikut berperan dalam proses rilis perangkat lunak.
3. Memahami Tentang Cloud
Skill DevOps yang harus dikuasai juga meliputi pemahaman tentang cloud computing. Komputasi cloud biasa digunakan oleh perusahaan dan organisasi untuk kebutuhan internal. Misalnya, untuk menyimpan dan mengolah data perusahaan yang biasanya mengandalkan sebuah data center. Jadi, keahlian cloud computing ini meliputi pemahaman merancang dan membangun sistem cloud, mengatasi kompleksitas sistem cloud, dan memaksimalkan berbagai fitur lainnya dari layanan cloud.
4. Linux Fundamental and Scripting
Saat ini, sebagian besar perusahaan lebih suka meng-hosting aplikasi menggunakan OS Linux. Karena tools manajemen konfigurasi seperti Puppet, Chef, dan Ansible memiliki master node yang berjalan di Linux, maka memiliki keterampilan dalam menangani sistem operasi Linux akan sangat penting bagi seorang DevOps Engineer. Seorang DevOps juga harus dapat menangani bahasa scripting yang cukup banyak, dan harus berpengalaman setidaknya dengan satu bahasa scripting. Umumnya, saat ini scripting bahasa Python lebih diutamakan.
5. Problem Solving
Bagi seorang DevOps, merespons masalah secara efektif dan menyelesaikannya dengan cepat adalah tanggung jawab utama. DevOps harus memiliki pengalaman memecahkan masalah-masalah selama proses pengembangan aplikasi. Seperti mengatasi bug, menemukan anomali pada sistem, menyesuaikan cara kerja sistem dengan feedback user, dan lain sebagainya.
Untuk mendukung problem solving itu, DevOps engineer juga harus memiliki keterampilan interpersonal. Kecakapan ini berguna untuk membantu menjembatani kesenjangan antara tim yang terpisah, di mana nantinya tim akan dapat menganalisis kode dan mengkomunikasikan review secara detail dengan lebih efektif untuk perkembangan perangkat lunak.
6. Update Pengetahuan DevOps dengan Buku-Buku
Apabila masih dirasa kurang untuk pengetahuan DevOps, kita bisa mempelajari lebih dalam tentang DevOps sebelum mempraktikkannya. Berikut adalah beberapa rekomendasi buku yang mempelajari tentang DevOps yang ditulis dari orang yang sudah terjun lama dalam dunia DevOps. Di antaranya, seperti:
- The Phoenix Project, karya Kevin Behr, Gene Kim, dan George Spafford – Ditulis oleh beberapa nama paling berpengaruh di dunia DevOps, di mana buku ini menceritakan kisah akrab tim IT yang bekerja lintas tim bisnis;
- The Unicorn Project, karya Gene Kim – Buku ini sekuel dari “The Phoenix Project”, yang menceritakan kisah menyelesaikan pekerjaan dari perspektif pengembang perangkat lunak;
- The DevOps Handbook, karya Gene Kim, Patrick Debois, John Willis, dan Jez Humble – Buku ini bisa dibilang sebagai tindak lanjut dari buku “The Phoenix Project” dan “The Unicorn Project”. Buku ini menawarkan saran yang lebih praktis untuk mencapai kelincahan, keandalan, dan keamanan kelas dunia dalam organisasi teknologi;
- Accelerate, karya Nicole Forsgren, Jez Humble, dan Gene Kim – Para penulis dalam buku ini akan menyajikan temuan penelitian dengan analisis yang ketat tentang membangun dan men-skalakan organisasi teknologi berkinerja tinggi.
Cukup banyak skill yang harus dikuasai jika ingin menjadi DevOps Engineer, menjadi penyebab rata-rata lowongan pekerjaan untuk posisi DevOps memiliki persyaratan berpengalaman minimal 3-5 tahun. Skills DevOps juga bisa terbentuk jika Anda sudah lama terjun dalam pekerjaan IT. Demikian Artikel Segala Hal Tentang DevOps semoga dapat bermanfaat untuk kita semua.
Bagaimana menurut Kamu mengenai DevOps?
Dalam Kehidupan apa namanya sejenis DevOps ini?
sumber : mygreatlearning.com, dicoding.com, medium.com, logique.co.id, niagahoster.co.id, badr.co.id, intellipaat.com, sekawanmedia.co.id, blog.rumahweb.com, hashmicro.com, rifqimulyawan.com, binaracademy.com