Apa siklus hidup DevOps?

Siklus hidup DevOps, dijelaskan

Siklus hidup DevOps adalah proses berulang yang berkelanjutan untuk pengembangan dan peerapan perangkat lunak, yang terdiri dari delapan fase utama: merencanakan, menulis kode, membangun (build), menguji, merilis, menerapkan, mengoperasikan, dan memantau.

Proses DevOps menjelaskan bagaimana perangkat lunak berpindah dari ide, melalui produksi dan masukan, dan kembali ke ide, dengan tim pengembangan dan operasi bekerja sebagai satu unit kolaboratif. Ini terdiri dari aliran praktik dan alur kerja otomatisasi menyeluruh yang dapat digunakan tim DevOps untuk merencanakan, mengembangkan, menjalankan, dan mengoptimalkan rilis perangkat lunak.

Fase siklus hidup DevOps sering digambarkan sebagai bagian dari “infinity loop” (siklus tak berujung) dengan aktivitas pengembangan di sebelah kiri dan aktivitas operasi di sebelah kanan, terhubung dalam satu jalur berkelanjutan.

Infinity loop DevOps

Di sisi loop “rencana → kode → build → pengujian”, tim menyempurnakan persyaratan perangkat lunak menjadi cerita pengguna ringkas, komit kode ke repositori kode secara bertahap (tetapi sering) dan menggunakan alat integrasi berkelanjutan (CI) untuk secara otomatis membangun dan menguji setiap perubahan kode.

Di sisi “rilis → penerapan → operasi → pengamatan”, alur kerja otomatisasi mendorong perubahan melalui lingkungan TI dan ke pengguna. Sementara itu, alat observabilitas melacak kesehatan sistem, kinerja perangkat lunak, dan perilaku pengguna untuk deteksi masalah dan mengukur dampak keseluruhan.

Infinity loop menekankan bahwa setiap fase siklus hidup DevOps memengaruhi yang lain. Tim berbagi pekerjaan, pengetahuan, dan tanggung jawab, alih-alih saling mengirimkannya bolak-balik antar silo. Loop ini juga menggambarkan bagaimana alur kerja DevOps dapat menyederhanakan proses pengiriman dan pengoptimalan perangkat lunak. Idealnya, setiap siklus akan lebih cepat, lebih aman, dan lebih otomatis daripada siklus sebelumnya.

Dengan demikian, siklus hidup DevOps memungkinkan perusahaan untuk menyelaraskan orang, proses, dan alat untuk menghadirkan aplikasi perangkat lunak berkualitas tinggi dan pengalaman pengguna tanpa gesekan.

Fase siklus hidup DevOps

Setiap fase siklus hidup DevOps menginformasikan dan tumpang tindih dengan fase lainnya, tetapi masing-masing memiliki tujuan yang jelas dan serangkaian aktivitas terkait. Tahapan-tahapan tersebut meliputi:

Merencanakan

Pada fase perencanaan, tim DevOps menerjemahkan kebutuhan bisnis dan masukan pengguna menjadi rencana kerja yang jelas, diprioritaskan, terikat waktu dan alur kerja manajemen proyek yang memandu pengembangan dan operasi pada fase berikutnya. Fase ini menjelaskan visi, ruang lingkup, dan peta jalan untuk rilis perangkat lunak atau build sistem sehingga semua orang memahami apa yang mereka bangun, mengapa itu penting dan bagaimana mereka akan mengukur kesuksesan.

Kegiatan perencanaan yang umum dapat mencakup:

  • Menyempurnakan dan triase backlog produk (seperti fitur baru, perbaikan bug, dan hutang teknis).
  • Menganalisis input pemangku kepentingan untuk menangkap kebutuhan dan kendala pengguna.
  • Memecah pekerjaan menjadi tugas, cerita pengguna (deskripsi fitur perangkat lunak yang ditulis dari perspektif pengguna), dan epik (cerita pengguna yang terlalu luas untuk ditangani dalam satu iterasi perangkat lunak) untuk memperkirakan kebutuhan sumber daya dan mengidentifikasi dependensi.
  • Mendefinisikan indikator kinerja utama (KPI), indikator tingkat layanan (SLI), dan tujuan tingkat layanan, sehingga fase selanjutnya mengetahui seperti apa “sukses” terlihat.

Kode

Selama fase pengodean, pengembang mengubah infrastruktur yang direncanakan dan persyaratan perangkat lunak menjadi kode sumber yang berfungsi dengan memperhatikan jaminan kualitas dan operasi masa depan. Ini bukan hanya tentang menulis kode baru. Ini juga tentang menyiapkan semua komponen yang diperlukan untuk proses build, pengujian, integrasi, dan penerapan otomatis di kemudian hari.

Proses pengodean meliputi:

  • Menulis kode untuk mengimplementasikan fungsionalitas baru, perbaikan cacat, dan mengatasi kebutuhan non-fungsional (keamanan, misalnya).
  • Melakukan perubahan kode inkremental kecil ke repositori bersama dalam sistem kontrol versi (seperti Git dan GitHub) untuk ditinjau.
  • Menguji commit kode agar dapat dibangun dan diintegrasikan dengan lancar ke dalam basis kode.
  • Menambahkan atau memperbarui pengujian unit dan komponen otomatis sehingga proses CI di masa mendatang dapat secara otomatis memvalidasi perilaku kode setelah setiap commit.

Pembangunan

Pada fase pembangunan, perubahan kode sumber secara otomatis dikompilasi, divalidasi, dan dikemas ke dalam artefak build yang dapat diterapkan. Alat DevOps mengambil perubahan kode dari sistem kontrol versi, menjalankan pemeriksaan otomatis dan menghasilkan paket (seperti gambar Docker kontainer dan binari yang dikompilasi) yang diberi versi dan siap untuk penerapan atau pengujian lebih lanjut.

Lebih spesifiknya:

  • Skrip otomatis dan alat pengembangan mengompilasi kode sumber, menyelesaikan dan mengunduh dependensi (termasuk pustaka, kerangka kerja, dan modul), serta menautkan semuanya ke dalam file yang dapat dieksekusi atau image.
  • Pengujian otomatis dasar berjalan sebagai bagian dari pembangunan. Jika build gagal, itu ditandai sebagai rusak dan tetap berada dalam fase pembangunan. Jika build berhasil, itu akan maju ke tahap siklus berikutnya.

Tes

Tahap pengujian, juga disebut validasi, bertujuan untuk membantu memastikan bahwa perubahan kode berperilaku seperti yang diharapkan dalam kondisi dunia nyata. Tim DevOps menggunakan serangkaian alat pengujian lanjutan untuk terus memvalidasi bahwa setiap perubahan berfungsi, aman, dan berkinerja sebelum berlanjut lebih jauh di pipeline atau mencapai produksi.

Biasanya, proses pengujian terintegrasi erat ke dalam pipeline integrasi berkelanjutan/pengiriman berkelanjutan (CI/CD), sehingga pengembang mendapatkan masukan yang cepat dan sering tentang kualitas kode.

Tujuan utama pengujian perangkat lunak adalah untuk mengidentifikasi cacat sedini mungkin (ketika mereka lebih murah dan lebih mudah untuk diperbaiki) dan untuk mencegah build yang salah berlanjut ke fase rilis. Pengujian juga memverifikasi bahwa perubahan baru tidak akan merusak fungsionalitas yang ada, membantu pengembang mempertahankan stabilitas sistem secara keseluruhan saat produk piranti lunak berkembang.

Rilis

Fase rilis menyediakan gateway terkontrol antara “build teruji” dan “penerapan langsung”, di mana perubahan kode disetujui untuk produksi dan ditampilkan ke pengguna target. Tim pengembangan menyiapkan kode yang telah terbukti dan teruji untuk penerapan dengan mengemasnya, memvalidasi bahwa kode tersebut siap untuk produksi, dan mengoordinasikan bagaimana dan kapan kode akan berpindah ke lingkungan staging dan produksi.

Proses rilis umum meliputi:

  • Pemeriksaan kualitas akhir, keamanan, dan kepatuhan terhadap kriteria penerimaan yang telah ditentukan.
  • Melampirkan artefak build ke versi rilis tertentu dan membuat log perubahan dan dokumentasi.
  • Mengidentifikasi kerentanan dalam rilis mendatang dan merencanakan strategi mitigasi (seperti rollback) untuk mengatasi masalah.

Menerapkan

Selama fase penerapan, kode yang diuji dan dikemas secara otomatis dikirim ke lingkungan target (staging atau produksi). Alat manajemen konfigurasi dan infrastruktur sebagai kode (IaC) —yang menggunakan file konfigurasi dan bahasa pengodean deskriptif tingkat tinggi untuk mengotomatiskan penyediaan infrastruktur dan orkestrasi untuk rilis perangkat lunak—membantu tim DevOps memastikan bahwa perangkat lunak dikirimkan dengan cara yang andal dan dapat diulang.

Penerapan biasanya didorong oleh pengiriman berkelanjutan (CD) dan platform kontainer (Kubernetes, misalnya) yang mengatur proses penerapan perangkat lunak (menarik artefak build, memperbarui wadah dan binari, menjalankan pengujian akhir dan mengalihkan lalu lintas ke versi baru).

Tim DevOps sering menggunakan strategi penerapan yang berbeda untuk memastikan bahwa versi baru diperkenalkan secara bertahap dan dapat ditarik kembali dengan cepat, jika perlu.

Dengan penerapan biru-hijau, misalnya, aplikasi diterapkan di dua lingkungan produksi paralel, dan setiap lingkungan menjalankan rilis aplikasi yang berbeda. Lingkungan “biru” menjalankan aplikasi langsung, sementara lingkungan “hijau” menangani pengujian dan validasi untuk versi aplikasi baru. Ketika iterasi baru berhasil, lingkungan hijau menjadi lingkungan live, dan biru tetap siaga, tetapi siap digunakan, untuk menangani rollback.

Dengan penerapan canary, tim menerapkan aplikasi ke sebagian kecil pengguna, atau disebut “canary” untuk pemantauan dan pengujian lingkungan live sebelum meluncurkan aplikasi ke seluruh basis pengguna.

Sama seperti burung kenari yang digunakan untuk memperingatkan penambang batu bara tentang gas beracun, penerapan canary memperingatkan tim pengembang tentang cacat aplikasi tanpa mempertaruhkan masalah kinerja skala besar yang memengaruhi setiap pengguna. Jika aplikasi berkinerja baik dengan grup canary, pengembang secara progresif meluncurkannya ke grup yang lebih besar hingga tersedia untuk semua pengguna.

Operasikan

Fase operasi berfokus pada menjaga sistem berjalan stabil, berkinerja, aman, dan tersedia untuk pengguna nyata di bawah beban kerja nyata. Ini bukan “akhir” dari siklus hidup aplikasi. Sebaliknya, ini membawa data dan insight kembali ke tahap-tahap awal.

Pada fase ini, tim DevOps:

  • Menjalankan dan mengawasi aplikasi di lingkungan produksi, termasuk infrastruktur, layanan, dan dependensi terkait.
  • Mengelola perencanaan kapasitas dan proses penskalaan sehingga arus lalu lintas tidak menurun seiring waktu.
  • Mendeteksi dan melakukan triase masalah, menangani hambatan kinerja, dan menerapkan perbaikan atau rollback sesuai kebutuhan.
  • Menerapkan patch keamanan dan praktik tata kelola (seperti kontrol akses dan audit kepatuhan) untuk mengoptimalkan keamanan sistem.

Monitor

Pada fase pemantauan, tim terus mengamati aplikasi dan infrastruktur dalam produksi untuk deteksi masalah, memahami perilaku pengguna nyata, dan mengirim insight kembali ke pengembangan dan operasi.

Tim DevOps mengumpulkan data observabilitas (metrik, log, dan jejak) dan informasi lain dari aplikasi, server, jaringan, dan database untuk melacak kinerja secara real time. Mereka menetapkan ambang batas dan peringatan sehingga anomali (seperti latensi API yang tinggi atau pola akses yang mencurigakan) memicu pemberitahuan untuk penyelidikan dan remediasi yang cepat.

Jika alat pemantauan menemukan cacat perangkat lunak atau masalah kegunaan, mereka meneruskan informasi ke pelacak masalah dan backlog, sehingga tim dapat menyesuaikan iterasi berikutnya.​

DevSecOps: “Fase kesembilan”

Infinity loop tidak secara eksplisit menyertakan fase “aman”, tetapi pipeline DevOps sering melibatkan praktik dan teknologi yang menggabungkan langkah-langkah keamanan sepanjang siklus hidup.

Di situlah DevSecOps memasuki kerangka kerja.

DevSecops, singkatan dari development (pengembangan), security (keamanan), dan operation (operasi), adalah praktik pengembangan perangkat lunak yang menggeser protokol keamanan dari kanan (akhir) ke kiri (awal) siklus hidup pengembangan. Dengan shift-left (geser ke kiri), pengembang menerapkan protokol keamanan (seperti enkripsi data, validasi input, kontrol akses berbasis peran, dan autentikasi multifaktor) saat mereka menulis kode.

DevSecOps juga menggabungkan aktivitas “shift-right” (geser ke kanan), memperluas praktik keamanan ke lingkungan produksi pasca-penerapan. Praktik shift-right memprioritaskan pemantauan, pengujian, dan perlindungan aplikasi pada waktu proses dalam kondisi dunia nyata. Praktik ini melengkapi keamanan shift-left dengan menciptakan loop masukan berkelanjutan di mana masalah keamanan yang ditemukan dalam produksi menginformasikan fase pengembangan sebelumnya.

Digunakan bersama, keamanan shift-left dan shift-right memungkinkan perusahaan untuk mengintegrasikan kontrol keamanan ke dalam setiap fase siklus hidup DevOps. Strategi keamanan ganda “shift-everywhere” membantu tim DevOps menerapkan pencegahan dini dan deteksi dan respons ancaman pasca-penerapan, meningkatkan postur keamanan secara keseluruhan dan mendorong peningkatan berkelanjutan.

DevOps vs. waterfall vs. agile

Siklus hidup DevOps merupakan evolusi dari pendekatan pengembangan perangkat lunak yang lebih tradisional, seperti waterfall dan agile.

Alur pengembangan model waterfall

Waterfall adalah metode pengembangan yang mengikuti proses linier berurutan di mana setiap fase siklus hidup, pengumpulan persyaratan, desain, implementasi, pengujian, penerapan, dan pemeliharaan, harus sepenuhnya diselesaikan dan disetujui sebelum fase berikutnya dimulai. Ini memprioritaskan perencanaan proaktif, dokumentasi terperinci dan prediktabilitas, membuatnya cocok untuk proyek dengan persyaratan yang stabil dan terdefinisi dengan baik dan sedikit perubahan yang diantisipasi (proyek terkait pemerintah dan layanan kesehatan, misalnya).

Metode waterfall menawarkan kontrol proses yang kuat, tetapi tim pengembangan bekerja dalam silo. Membuat perubahan setelah sebuah fase selesai mahal dan memakan waktu. Singkatnya, metode waterfall memiliki kelemahan dalam hal ketangkasan.

Agile adalah metode pengembangan berulang yang memberikan peningkatan fungsional yang kecil melalui siklus pendek (dikenal sebagai “sprint”). Ini memprioritaskan perencanaan adaptif, pengiriman awal dan peningkatan berkelanjutan berdasarkan masukan pemangku kepentingan, memungkinkan tim pengembangan untuk dengan cepat menanggapi perubahan persyaratan dan kondisi.

Pipeline pengembangan agile

Metodologi agile terbukti efektif untuk lingkungan yang dinamis, seperti startup. Metode ini mengurangi kekakuan linear dari pendekatan waterfall dengan tim lintas fungsi yang memprioritaskan fungsionalitas perangkat lunak di atas dokumentasi yang komprehensif. Namun, pendekatan agile berfokus pada proses pengembangan perangkat lunak , dengan mengabaikan proses operasional.  

DevOps menawarkan praktik budaya dan teknis modern yang mengintegrasikan tim pengembangan dan operasi, memanfaatkan alat CI/CD (seperti GitLab) untuk pengujian, penerapan, dan otomatisasi pemantauan. Tidak seperti agile dan waterfall, praktik DevOps dapat membantu perusahaan mempercepat rilis perangkat lunak dan membangun aplikasi yang tetap berkinerja dan gesit dalam arsitektur layanan mikro dan lingkungan TI berbasis cloud masa kini yang sangat dinamis.

7 C (proses berkelanjutan) dari siklus hidup DevOps

7C memberikan cara lain untuk mengonseptualisasikan siklus hidup DevOps sebagai produk dari tujuh proses berkelanjutan.

1. Pengembangan berkelanjutan (Continuous development)

Pengembangan berkelanjutan (Continues development) melibatkan perangkat lunak perencanaan dan pengodean, dengan pengembang memecah proses menjadi iterasi yang lebih kecil dan lebih mudah dikelola. Pengembang menyimpan perubahan dalam sistem kontrol versi dan terus menyelaraskan kode mereka dengan persyaratan pemangku kepentingan, membantu tim meminimalkan risiko dan cepat beradaptasi dengan perubahan.

2. Integrasi berkelanjutan (Continuous integration)

Integrasi berkelanjutan (Continues integration) menggabungkan perubahan kode dari beberapa pengembang ke dalam repositori bersama, secara otomatis memicu build setelah setiap commit. Ini memungkinkan tim DevOps untuk terus meningkatkan aplikasi mereka, menerima masukan yang konsisten, menangkap dan memperbaiki kesalahan sebelum mempengaruhi kinerja dan menghadirkan aplikasi berkualitas lebih tinggi pada jadwal yang lebih dapat diprediksi.

3. Pengujian berkelanjutan (Continuous testing)

Pengujian berkelanjutan memungkinkan pengembang untuk secara otomatis memulai tinjauan kode dan protokol pengujian (seperti pengujian unit). Ini menggunakan alat pengujian untuk terus memeriksa kode terintegrasi untuk bug, kelemahan kegunaan, dan masalah kinerja. Pengujian berkelanjutan memberi pengembang masukan cepat yang mereka butuhkan untuk meningkatkan perangkat lunak tanpa menunda siklus hidup.

4. Pengiriman dan penerapan berkelanjutan (Continuous delivery and deployment)

Pengiriman berkelanjutan mengotomatiskan pengiriman aplikasi dan perubahan basis kode yang divalidasi (pembaruan, perbaikan bug, dan bahkan fitur baru) ke semua lingkungan infrastruktur yang diperlukan untuk pengujian lebih lanjut. Build kode yang lulus semua pengujian integrasi dan tahap validasi dikemas dan dikirimkan ke repositori kode, yang memusatkan dan menyimpan paket kode dalam status yang dapat diterapkan.

Penerapan berkelanjutan membawa pengiriman selangkah lebih maju dengan secara otomatis menerapkan setiap perubahan yang disetujui ke produksi, tanpa campur tangan manusia. Saat pembaruan kode diuji, divalidasi, dan disetujui, alat penerapan berkelanjutan memindahkan artefak perangkat lunak ke lingkungan staging praproduksi atau ke server publik dan platform distribusi (seperti toko aplikasi) tempat pengguna dapat mengaksesnya.

5. Masukan berkelanjutan (Continuous feedback)

Masukan berkelanjutan mengharuskan tim DevOps untuk mengumpulkan insight dari data pemantauan, data pengalaman pengguna, dan masukan pemangku kepentingan untuk menyempurnakan backlog produk dan menentukan urgensi setiap peningkatan.

6. Pemantauan berkelanjutan (Continuous monitoring)

Pemantauan berkelanjutan melacak kinerja aplikasi dan infrastruktur secara real time, mengidentifikasi masalah secara proaktif untuk menjaga keandalan sistem. Sebagian besar alat pemantauan memvisualisasikan data pipeline CI/CD dengan menggunakan dasbor, yang meningkatkan visibilitas tumpukan teknologi dan memungkinkan pengoptimalan berbasis data.

7. Operasi berkelanjutan (Continuous operations)

Alat otomatisasi menangani penyediaan infrastruktur, penskalaan sumber daya, pencadangan data, perutean lalu lintas, dan pemeliharaan sistem, memungkinkan tim DevOps untuk terus menerapkan masukan ke iterasi aplikasi baru.

Manfaat siklus hidup DevOps

Memanfaatkan praktik terbaik DevOps dapat memberikan banyak manfaat bagi perusahaan, termasuk:

Kualitas perangkat lunak yang lebih baik

Siklus hidup DevOps memprioritaskan pengujian kode dan perangkat lunak berkelanjutan sehingga bug dan kerentanan tertangkap di awal proses pengembangan, dan pengembang dapat menghasilkan kode berkualitas lebih tinggi.

Time-to-market yang lebih cepat

Proses DevOps mempercepat siklus pengembangan perangkat lunak dengan mengurangi waktu tunggu antara integrasi kode dan pengiriman perangkat lunak dari waktu mingguan ke menit.

Risiko dan waktu henti yang lebih rendah

Pembaruan kode yang kecil dan sering membuat bug dan kesalahan lebih mudah diatasi, mencegah waktu henti berskala besar dan mengurangi waktu rata-rata perbaikan (MTTR).

Transparansi yang lebih besar

Dasbor pengamatan dan loop masukan berkelanjutan membantu memastikan bahwa setiap anggota tim DevOps memiliki akses ke semua informasi yang mereka butuhkan setiap saat, meningkatkan transparansi dan akuntabilitas di seluruh perusahaan.

Peningkatan produktivitas

Budaya DevOps mengotomatiskan langkah-langkah manual yang berulang (pemecahan masalah build dan mengelola skrip penerapan, misalnya), sehingga tim dapat fokus pada pengoptimalan aplikasi untuk pengguna akhir.

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Solusi terkait
IBM Instana Observability

Memanfaatkan kekuatan AI dan otomatisasi untuk memecahkan masalah secara proaktif di seluruh tumpukan aplikasi.

Jelajahi IBM Instana Observability
Solusi DevOps

Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.

Jelajahi solusi DevOps
Layanan konsultasi cloud

Percepat ketangkasan dan pertumbuhan bisnis — terus modernisasi aplikasi Anda di platform apa pun menggunakan layanan konsultasi cloud kami.

Jelajahi layanan konsultasi cloud
Ambil langkah selanjutnya

Dari deteksi masalah proaktif dengan IBM Instana® hingga insight real-time di seluruh tumpukan, Anda dapat menjaga aplikasi cloud-native tetap berjalan dengan andal.

  1. Temukan IBM Instana
  2. Jelajahi solusi DevOps