Terkadang, percakapan mengenai fitur dan konsep teknis yang sangat mendalam dapat memberikan wawasan berharga yang dapat ditindaklanjuti. Namun, seringkali orang melewatkan fakta bahwa ada banyak tools dan teknologi yang dapat dimanfaatkan untuk memecahkan tantangan bisnis. Ketika berbicara tentang fitur dan teknologi, sangat mudah untuk melihat kemungkinan adanya keuntungan secara finansial ketika mengganti tools yang berbeda dengan platform terpadu. Akan tetapi, kerap kali kita melewatkan kesempatan untuk meningkatkan kinerja yang dapat memberikan nilai lebih bagi semua pihak di perusahaan, mulai dari developer hingga eksekutif.
Ketika kita bekerja dalam sistem yang sangat kompleks, terkadang sulit untuk melihat segala sesuatunya secara garis besar. Contohnya, seringkali IT engineer hanya fokus untuk memecahkan masalah secara terus menerus tanpa meluangkan waktu untuk mengevaluasi kembali sistem itu sendiri. Sedangkan untuk para eksekutif, sulit untuk menyeimbangkan upaya yang diperlukan untuk mengatasi tantangan teknis dengan tekanan yang datang dari perubahan bisnis yang begitu cepat.
Tujuan dari artikel ini adalah untuk menyediakan gambaran secara garis besar mengenai prinsip-prinsip DevOps yang paling penting dan juga tips dan trik untuk jalan pintas. Walaupun ada banyak literatur mengenai topik ini, namun artikel ini akan membahas dari sudut pandang yang berbeda.
Pertama, kita akan membahas tiga prinsip dasar DevOps seperti yang disempurnakan dari Lean, Sistem Produksi Toyota, Theory of Constraints, Six Sigma, dan System Thinking Principles. Kedua, kita akan membahas GitLab sebagai tools pilihan karena kami percaya tools yang baik akan sangat membantu Anda untuk fokus pada pekerjaan yang ada, dan GitLab adalah pilihan yang tepat.
Berikut adalah deskripsi singkat mengenai tiga prinsip dasar DevOps:
Prinsip Pertama: Maksimalkan Aliran
Prinsip pertama adalah tentang membuat pekerjaan/nilai mengalir lebih baik melalui seluruh value stream (kiri ke kanan), dan untuk melakukan itu, kita perlu memiliki pendekatan pemikiran sistemik dan selalu melihat secara menyeluruh dari awal hingga akhir. Dalam kasus TI, ini berarti kita meningkatkan kecepatan dari saat kita membuat ide hingga menghasilkan nilai dengan perangkat lunak yang berjalan dalam sistem.
Memiliki pemahaman yang baik mengenai sistem sangatlah penting untuk mengidentifikasi hambatan dan juga area yang perlu diperbaiki. Perbaikan yang dimaksud harus selalu mengarah pada kinerja keseluruhan yang lebih baik dan menghindari hal-hal yang dapat menurunkan efektivitas sistem secara keseluruhan.
Dalam proses ini, sangat penting tidak menurunkan masalah dari satu tahap alur kerja ke tahap lainnya. Mengapa? Karena masalah yang diturunkan akan menyebabkan pemborosan (baik waktu maupun sumber daya).
Prinsip Kedua: Feedback Loop (Lingkaran Umpan Balik)
Prinsip kedua berkaitan dengan feedback loop. Dengan memperkuat dan memperpendek feedback loop, kita dapat menemukan wawasan yang berharga mengenai pekerjaan yang kita lakukan. Feedback atau umpan balik dapat terkait dengan kode yang ditulis ataupun inisiatif peningkatan. Sedangkan feedback loop memaksimalkan value stream dari kanan (hilir/downstream) ke kiri (hulu/upstream).
Feedback loop yang cepat dan tangguh membantu membangun produk yang berkualitas dan memastikan kita tidak mewariskan cacat (defect) ke hilir. Semakin cepat prosesnya, maka semakin cepat dan terjangkau untuk menyelesaikannya–hal tersebut membantu untuk menjaga software Anda dalam keadaan layak guna atau deployable. Dan juga, akan lebih mudah bagi developer untuk memperbaiki bug ketika mereka yang mengerjakan perubahan tersebut karena kode serta proses pemikirannya masih melekat dalam pikiran mereka. Akan menjadi lebih sulit ketika berhari-hari atau bahkan berminggu-minggu telah berlalu antara saat kita melakukan commit hingga akhirnya kita menyadari bahwa ada masalah dengan perubahan itu. Apalagi ketika kita baru menyadari ada yang tidak beres saat sedang mencoba merilis perangkat lunak tersebut dan mendapati bahwa kita memiliki sebuah layanan yang tidak berfungsi. Di sisi lain, feedback loop memungkinkan Anda untuk belajar dan bereksperimen, hal yang juga akan kami bahas di artikel ini.
Biasanya, developer akan mengarah pada lebih banyak produktivitas tetapi, menurut The State of DevOps Report, teori ini hanya berlaku bagi pekerja dengan kinerja tinggi. Mengapa? Contohnya, jika kami memiliki tim yang terdiri dari 50 developer dan masalah tidak segera terdeteksi, maka utang teknis (technical debt) akan semakin menumpuk. Keadaan hanya akan menjadi lebih buruk ketika kita memiliki 100 developer karena mereka akan menghasilkan lebih banyak utang teknis dengan setiap siklus pengembangan. Seringkali orang memutuskan untuk menambahkan developer dengan harapan kecepatan akan menjadi lebih baik, tetapi kenyataannya hal tersebut hanya menyebabkan penurunan dan menyebabkan frekuensi deployment menurun karena dibutuhkan banyak waktu untuk memperbaiki semua masalah yang datang untuk sampai ke keadaan yang dapat diterapkan.
Prinsip Ketiga: Eksperimen dan Pembelajaran Jangka Panjang
Prinsip ketiga adalah tentang menciptakan budaya kepercayaan di mana eksperimen dan pembelajaran jangka panjang dapat berkembang. Prinsip ini mempergunakan kedua prinsip di atas agar menjadi sukses
Membuat workflow dengan mudah melalui value stream memungkinkan kita untuk bereksperimen dan bahkan mengambil beberapa risiko, dengan prinsip gagal secara cepat (fail fast) dan dengan dampak yang ringan. Dalam kasus ini, feedback loop bertindak sebagai pembatas yang bukan hanya membantu kita menjaga risiko tetap terkendali tetapi juga memfasilitasi pembelajaran karena hal tersebut hanya akan terjadi ketika umpan balik yang cepat dan baik tersedia. Kita dapat memiliki pendekatan ilmiah, bereksperimen dengan berbagai hal, dan mengambil pembelajaran dan peningkatan yang dihasilkan oleh eksperimen ini beserta umpan baliknya.
Ini adalah proses berulang yang akan mengarah pada penguasaan (melalui peningkatan repetisi). Hal ini harus beriringan dengan lingkungan dimana pembelajaran dalam skala lokal ini dapat diterapkan secara umum dan diintegrasikan ke dalam pekerjaan sehari-hari semua tim. Agar pendekatan ini dapat berhasil dan membuahkan hasil, 20% dari waktu kita harus disediakan untuk kegiatan peningkatan ini. Hal tersebut mungkin terdengar sulit terutama bagi Anda yang menghabiskan sebagian besar dari waktu Anda untuk menyelesaikan masalah yang mendesak, namun melindungi waktu peningkatan ini membantu Anda untuk membayar hutang teknis dan memastikan bahwa segala sesuatunya dapat terkendali.
GitLab dan Tiga Prinsip DevOps
Setelah memahami Tiga Prinsip DevOps -memaksimalkan aliran (kiri ke kanan), feedback loop (memaksimalkan aliran kanan ke kiri) dan memiliki proses pembelajaran jangka panjang, menerapkan hal-hal tersebut membutuhkan upaya dari segi tools yang digunakan dan juga prosesnya.
Kini, saatnya untuk memperkenalkan GitLab, satu-satunya platform DevOps yang mencakup seluruh Software Development Life Cycle (SDLC). Mengapa ini berguna bagi Anda? Karena ada sinergi yang terjadi ketika semua kemampuan yang Anda butuhkan disediakan dalam platform yang sama, hasilnya pun akan lebih maksimal. Selain itu, tools yang baik memungkinkan Anda untuk fokus pada pekerjaan Anda, bukan pada tools itu sendiri, sehingga Anda dapat menghabiskan lebih banyak waktu dan upaya untuk melakukan transformasi bagi sistem DevOps Anda. Fakta bahwa Anda akan menghabiskan lebih sedikit uang dan waktu untuk mengintegrasikan berbagai tools adalah pengembalian langsung pertama dari investasi Anda.
GitLab menyediakan beragam mekanisme kontrol agar ketika cacat atau defect teridentifikasi, hal tersebut dapat terisolasi dan tidak diwariskan ke alur berikutnya. Bekerja dengan feature branch dengan jangka waktu yang pendek, beragam kontrol antara merging dan aturan persetujuan merging dapat bertindak sebagai pintu gerbang Anda.
Memiliki semuanya di platform yang sama membuat Anda lebih mudah untuk memahami seluruh alur kerja, terlebih ketika menggabungkan Value Stream Metrics Gitlab yang memungkinkan semua orang yang bersangkutan untuk mendapatkan pemahaman yang lebih baik mengenai sistem secara keseluruhan, menemukan potensi hambatan sekaligus peluang untuk peningkatan.
Aliran yang Lebih Baik
Seperti disebutkan, aliran dalam satu arah – kiri ke kanan – tidak cukup untuk membuat software menjadi lebih baik dan cepat. Feedback loop yang cepat dan memberikan feedback yang kuat menjadi hal yang sangat penting untuk memberikan hasil yang maksimal. Dari perspektif developer, hasil dari CI pipeline memberikan feedback langsung mengenai perubahan yang ada. Bahkan akan jauh lebih baik lagi jika pipeline tersebut dapat mencakup pemindaian keamanan. Memberikan feedback dari sudut pandang keamanan memastikan bahwa kita tidak me-deploy kode yang buruk dan memberi kesempatan bagi developer untuk meninjau kembali dan segera memperbaikinya. Ini adalah feedback yang sangat praktikal dan memberikan pembelajaran dengan adanya laporan keamanan yang datang dengan informasi tentang kerentanan, dan juga jika mungkin, solusi potensial untuk kerentanan. Semua ini dapat tersedia dengan mudah untuk Anda tanpa harus repot-repot untuk mengintegrasikan tools yang berbeda.
Ketika melihat dari perspektif lain, seseorang yang perlu meninjau atau menyetujui perubahan kode memiliki semua yang mereka butuhkan di satu tempat. Sangat mudah untuk menarik atau memanggil pihak lain yang bersangkutan dan mereka akan dengan mudah mendapatkan akses ke semua konteks yang diperlukan. Keputusan dapat dibuat segera dan didasarkan pada feedback yang akurat dan jelas yang dapat Anda lacak kembali ke ide awal.
Pentingnya Metrik
Melihat secara lebih lebar, kita mendapatkan metrik yang berbeda (Value Stream, Contribution) di tingkat proyek. Ini adalah salah satu keuntungan yang datang dengan sistem platform, dan wawasan ini sangat mudah diperoleh dan dimasukkan kembali ke dalam proses. Saat melakukan pengembangan software dalam skala besar, manajer yang lebih senior memerlukan feedback ini pada tingkat yang lebih tinggi, dan, oleh karena itu, hal ini tersedia di beberapa tim, proyek, atau departemen. Semua informasi ini sangat berharga dan juga membantu memandu dan membentuk keputusan bisnis. Jika kecepatannya bukan yang dibutuhkan oleh bisnis, kita dapat melihat memanfaatkannya untuk menghilangkan hambatan, melakukan peningkatan, atau berinvestasi di beberapa bidang utama.
Dengan dua kemampuan ini, Anda dapat memiliki kerangka kerja di mana Anda dapat melakukan iterasi dengan cepat dan aman. Eksperimen menjadi mudah dan sangat aman, ditambah Anda dapat menguji berbagai hipotesis bisnis, dan melihat mana yang paling cocok dengan pelanggan Anda. Ini harus terjadi secara berkelanjutan karena ini adalah landasan inovasi.
Kritisnya Konteks
Setiap eksperimen yang dilakukan dan setiap masalah yang dipecahkan dapat menjadi pembelajaran berharga bagi semua orang di organisasi. Memiliki segalanya (konteks, tindakan, hasil, pembelajaran) di satu tempat memungkinkan kita untuk membuka segalanya sehingga setiap orang dapat berkontribusi. Hal ini membutuhkan lingkungan yang mendukung agar setiap orang dapat merasa nyaman untuk menjalankan eksperimen kecil yang mengarah pada peningkatan, dan di mana peningkatan ini dapat diterapkan di seluruh organisasi Anda. Dengan memiliki tools yang berfungsi untuk menyediakan semua yang Anda butuhkan tanpa pekerjaan tambahan, Anda mendapatkan kembali kapasitas yang dapat Anda gunakan untuk meningkatkan produk, sistem atau organisasi Anda.
Ketika ingin mengganti beberapa tools dengan satu platform, yang terpenting saat ini adalah kemampuan untuk dapat menilai lebih dari sekedar perbandingan fitur dan keuntungan finansial secara langsung. Kami melihat prinsip-prinsip inti DevOps sebagai panduan dalam transformasi DevOps Anda dan GitLab sebagai tools untuk memfasilitasinya. Meningkatan sistem yang sangat kompleks terkadang terasa sulit, dan mendorong perubahan tersebut melalui perusahaan Anda adalah sebuah tantangan. Dengan memiliki tools yang dapat memenuhi kebutuhan Anda, Anda dapat fokus pada pengembangan kode dan melakukan perubahan-perubahan yang berkualitas.
Kami berharap artikel ini dapat berguna bagi semua orang yang terlibat dalam SDLC, mulai dari engineer yang perlu bekerja dengan dan di dalam sistem setiap hari, hingga para pemimpin senior yang perlu memberikan hasil bisnis.
Ingin mengetahui mengenai solusi Gitlab lebih lanjut ?
Referensi:
Berdasarkan “Gitlab and the three ways of DevOps”. Diadaptasi dari https://about.gitlab.com/blog/2022/06/15/gitlab-and-the-three-ways-of-devops/