Apa itu DevOps atau DevSecOps ?

Apa itu DevOps atau DevSecOps ?

This article in Bahasa, are you looking for English language? Google Translate is your friend, or simply click here.

Apa yang terlintas dipikiran anda ketika mendengar kata DevOps atau DevSecOps?

Saya termasuk orang yang awalnya mengartikan devops adalah teknologi dalam melakukan otomatisasi pada sebuah proses development di suatu perusahaan. Jika mendengar DevOps, saya selalu mengaitkannya dengan terminologi hype lain seperti microservice, container, kubernetes, continuous integration/delivery, dan kubernetes. Pada akhirnya saya menyadari bahwa pemahaman saya masih terlalu dangkal jika mengartikan devops hanya pada tools atau teknologi yang digunakan.

DevOps

DevOps adalah kombinasi dari filosofi budaya, penerapan, dan peralatan yang meningkatkan kemampuan organisasi untuk memberikan aplikasi dan layanan dalam kecepatan yang tinggi: mengembangkan dan meningkatkan produk dalam waktu yang lebih cepat dari organisasi yang menggunakan pengembangan perangkat lunak dan proses pengelolaan infrastruktur tradisional. Kecepatan ini memungkinkan organisasi untuk melayani pelanggan mereka dengan lebih baik dan berkompetisi dengan lebih efektif di pasaran. aws.amazon.com/id/devops/what-is-devops

Amazon sendiri mengartikan bahwa devops adalah sebuah kombinasi budaya, penerapan, dan peralatan. Jika mengacu pada penjabaran Amazon, pemahaman awal saya hanya mencakup 1/3 dari keseluruhan aspek. Dimana awalnya saya hanya mengartikan DevOps seputar peralatan otomatisasi (automation tools). Justru saya melupakan aspek terpenting dalam DevOps, yaitu budaya itu sendiri. Sebuah perusahaan yang ingin menerapkan devops harus memiliki budaya seperti KISS, reliability, well documented, responsiveness.

KISS (Keep it Simple Stupid)

Prinsip KISS ini jika diterapkan pada lingkungan software development life cycle akan sangat bermanfaat. Saya sering mengaitkan prinsip ini dengan kalimat don't reinvent the wheels. Seringnya seorang software engineer terlalu memikirkan bahwa dirinya dapat membuat semuanya dari awal, padahal sudah ada yang membuat hal yang sama sebelumnya. Kunci dalam menerapkan konsep KISS adalah mengetahui masalah utama. Fokus pada masalah utama tersebut, dan cari solusi yang paling sederhana. Jika memang harus membuatnya dari awal pastikan hal tersebut tetap sederhana, dan fokus kepada solusi dari suatu masalah.

Reliability

Reliabilitas dalam sebuah perangkat lunak bisa diartikan sebagai probabilitas software yang akan bekerja dengan baik dalam lingkungan tertentu dan untuk jumlah waktu tertentu. Yang berarti pelaksanaan DevOps harus memikirkan seberapa handal dan lama bisa digunakan. Misalnya menjawab beberapa pertanyaan, seperti:

  • Apakah sebaiknya menggunakan aplikasi versi stabil dengan konsekuensi ketinggalan fitur terbaru, atau versi edge dengan segala kemungkinan bug-nya?
  • Apakah diperlukan proses approval pada suatu git commit?
  • Jika diperlukan berapa banyak maksimal orang yang dibutuhkan untuk approval?

Reliabilitas ini bisa dibilang cukup kompleks, hingga ada sebuah roles engineer khusus di Google untuk hal ini. Biasanya orang-orang yang menjadi roles ini memiliki irisan kemampuan dari software engineer dan system engineer.

Well Documented

Yup, semua harus terdokumentasi dengan baik. Mudah untuk diucapkan, tetapi cukup sulit untuk dilakukan. Dokumentasi yang dibuat bukan hanya berupa catatan pribadi yang hanya dimengerti si empu, namun harus bisa juga dipahami orang lain. Biasanya, dokumentasi pada sebuah produk atau aplikasi dibuat dalam 2 bentuk. Pertama, dokumentasi yang ditujukan untuk orang-orang non-engineering. Kedua, dokumentasi beserta problem troubleshooting untuk engineering.

Responsiveness

Responsiveness mungkin bagi saya awalnya adalah sebuah momok. Dimana istilah standby 24x7 atau on-call merupakan bentuk lain dari pekerjaan romusha modern setiap harinya. Jika benar hal itu terjadi pada kamu saat ini, segera pertimbangkan ulang kembali pekerjaanmu saat ini ya. Responsif disini lebih ke bagaimana kita berkomunikasi dengan efektif untuk menyelesaikan sebuah masalah.

Kuncinya adalah persamaan visi, misi, dan saling berbagi pengetahuan. Misalnya, jika saat ini memiliki 3 orang engineer dengan perbedaan spesialisasi, sempatkan waktu satu hari dalam seminggu untuk saling melakukan sharing knowledge. Hal ini secara tidak langsung membantu tingkat responsifitas pada tim tersebut. Karena pengetahuan pada setiap engineer tidak terpaut jauh, dan mengurangi burnout pada engineer yang lebih senior.

Budaya DevOps yang baik, akan memikirkan work life balance pada semua anggota tim tanpa mengabaikan target pekerjaan.

Saya percaya budaya - budaya tersebut harus dimiliki oleh semua komponen dan bukan hanya divisi teknologi. Ketika budaya ini sudah diterapkan sejak awal pada sebuah perusahaan, maka proses selanjutnya akan lebih mudah. Hal ini dapat dimulai ketika melakukan proses perekrutan karyawan, dengan meminta calon karyawan menjawab pertanyaan seputar KISS, reliability, well documented, responsiveness.

DevSecOps

Lantas, bagaimana dengan DevSecOps? saya bisa mengatakan hal ini tidak jauh berbeda dengan pemahaman pada DevOps. DevSecOps adalah DevOps tahap lanjut, dimana semua komponen dan pelaku sudah menyadari pentingnya sebuah keamanan dan menjadi fokus utama dalam penerapannya. Jika kita berbicara tentang budaya DevSecOps, berarti akan menjadi keep it simple stupid, well documented, responsiveness, everything as code, security mindset.

Everything as Code

Jika bicara sebuah source code berarti hal tersebut adalah sebuah sumber kode aplikasi yang menjadi produk sebuah perusahaan. Everything as Code bisa diartikan bahwa setiap perubahan yang dilakukan harus berbentuk kode yang tercatat dengan baik. Mengapa harus berbentuk kode? jawaban sederhananya adalah karena perlu wadah yang bisa dipahami dan digunakan semua orang (minimal divisi teknologi), bukan hanya si pembuat. Git repositori adalah salah satu wadahnya. Seorang network engineer yang sebelumnya menggunakan konsol via telnet dan mengetikkan perintah (ena, conf t, access-list) untuk melakukan perubahan. Saat ini mereka mungkin lebih menggunakan library python paramiko dan git repositori sendiri. Git comment pada sebuah git commit menggantikan keterangan pada tiap perubahan konfirgurasi yang dilakukan, dan kemudian dieksekusi via CI/CD pipeline. Security engineer pada era ini harus bisa beradaptasi, jika sebelumnya sudah menggunakan otomatisasi saat melakukan recon atau via burpsuite intruder di lokal. Tidak ada salahnya memindahkan otomatisasi tersebut ke git repositori agar terdokumentasi dan bisa dikembangkan bersama.

Security Mindset

Ini bisa dibilang komponen utama pada budaya DevSecOps. Bukan hanya teknologi, semua divisi harus memiliki cara berpikir ini. Jika tidak memiliki tim keamanan dan informasi, mulailah dengan menjawab pertanyaan keamanan informasi sederhana seperti:

  • apakah ada data penting dan pribadi yang dilibatkan pada prosesnya?
  • apakah komunikasi yang digunakan sudah menggunakan enkripsi?

Security mindset ini juga sudah harus dilakukan pada pribadi sendiri meskipun tidak terkait langsung dengan perusahaan. Misalnya, jangan menggunakan sandi yang sama pada akun daring. Hindari menggunakan koneksi internet gratis yang belum terpercaya. Selalu menghidupkan firewall jika terkoneksi dengan jaringan publik.

Jika sebuah perusahaan belum memiliki pemahaman menyeluruh dan hanya berpikir tentang otomatisasi dan teknologi yang akan dipakai. Sebaiknya berpikir ulang ketika ingin menerapkan DevOps maupun DevSecOps.

Kesalahan yang sering terjadi adalah menganggap DevOps/DevSecOps adalah hanya sebuah otomatisasi yang bisa menghemat pengeluaran perusahaan. Mereka beranggapan bahwa sebuah teknologi yang sudah berjalan otomatis, bisa menghemat tenaga manusia pada sebuah perusahaan tersebut. Ya... hal ini bisa saja benar, jika tidak ada perubahan kebutuhan bisnis dan tidak ada perubahan pada sistem yang sudah berjalan.

Tabik,