Inilah Pengertian tentang DevOps

Assalammu‘alaikum wr. wb.

Berjumpa lagi bersama Inzaghi's Blog! Dalam Industri IT (Developer) sering sekali mendengar istilah DevOps, yang merupakan gabungan dari Full Stack, Software Engineering dan juga lebih ke arah Operasional. Lalu, sebenarnya apa itu DevOps? Mari kita bahas pada Artikel ini sampai tuntas.


Sumber Artikel : Dicoding.com (Blog) dan Niagahoster.co.id (Blog)

Sebagai seorang pengembang perangkat lunak, mungkin Anda telah sering mendengar istilah "DevOps". Artikel ini membahas topik yang menarik karena DevOps bukanlah jenis perangkat lunak, aplikasi, teknologi, atau alat tertentu. Sebaliknya, DevOps adalah prinsip atau pola pikir yang digunakan dalam industri IT.

Memahami jutaan baris kode dalam berbagai bahasa pemrograman, algoritma, atau sistem terstruktur dapat menjadi melelahkan. Oleh karena itu, kadang-kadang penting untuk mempelajari bagaimana manajemen perusahaan merencanakan proyek agar tim dapat bekerja dengan efisien.

Sejarah DevOps dimulai pada tahun 2007, ketika seorang konsultan pengembangan bernama Patrick Debois ingin mempelajari berbagai aspek tentang bidang IT. Dia merasa terganggu oleh perbedaan dalam cara tim pengembangan dan tim operasi bekerja. Pada saat itu, Patrick bertemu dengan Andrew Shafer dan mereka bersama-sama memulai Agile System Administration.

Pada tahun 2010, pembahasan tentang DevOps mulai meluas di seluruh dunia dengan munculnya tagar DevOpsDays di media sosial. Pada tahun 2014, perusahaan-perusahaan besar seperti Target, Nordstrom, dan LEGO menjadi yang pertama menerapkan prinsip DevOps dalam operasional perusahaan mereka.

A. Pengertian DevOps

DevOps, singkatan dari Development dan Operation, adalah prinsip yang menggabungkan aspek pengembangan dan operasional dalam sebuah tim. Prinsip ini bertujuan untuk memastikan koordinasi yang efektif dan efisien antara tim pengembangan dan tim operasional.

DevOps membentuk pola pikir di mana koordinasi antar tim dapat dilakukan secara singkat dan tanpa banyak pertanyaan. Tim pengembangan dan operasional hanya perlu mengkonfigurasi beberapa komponen melalui prosedur yang telah ditetapkan.

Dalam praktik DevOps, penggunaan beberapa alat bantu menjadi penting. Salah satu alat yang umum digunakan oleh tim pengembangan adalah Source Code Management (SCM). Git adalah salah satu produk SCM yang populer, dan sering digunakan bersama dengan Source Code Repository (SCR) seperti GitHub, GitLab, Bitbucket, dan lainnya. Namun, SCM saja tidak cukup untuk mengomunikasikan antara tim pengembangan dan tim operasional.

Untuk memastikan tim operasional mengetahui masalah yang terjadi, biasanya terhubung dengan Software Manajemen Produk seperti Jira. Melalui Software Manajemen Produk tersebut, tim operasional dapat melacak masalah yang terjadi pada sistem atau aplikasi. Ini memungkinkan keterhubungan antara tim pengembangan dan tim operasional.

B. Tujuan DevOps

DevOps bertujuan untuk meningkatkan kolaborasi antara tim development dan tim operation dari mulai perencanaan hingga aplikasi/fitur ter-deliver ke pengguna. Semua itu harus dilakukan secara otomatis agar:

  • Meningkatkan deployment frequency.
  • Meningkatkan waktu pemasaran.
  • Menurunkan tingkat kegagalan pada rilisan terbaru.
  • Mempersingkat waktu perbaikan.
  • Meningkatkan waktu pemulihan.

Menurut laporan State of DevOps 2015, organisasi TI yang mengimplementasikan DevOps mencapai kinerja 30x lebih baik dengan waktu aktif 200x lebih banyak, kesalahan 60x lebih sedikit, dan pemulihan 168x lebih cepat.

C. Tugas DevOps

Setelah memahami konsep DevOps secara umum, penting untuk mengetahui tugas-tugas yang terkait dengan DevOps. Dalam konteks ini, seseorang yang bekerja di bidang DevOps disebut "DevOps Engineer". Meskipun ada juga yang hanya menyebutnya sebagai "DevOps".

DevOps memiliki sejumlah tugas yang cukup beragam. Inilah Tugas-tugas oleh seorang DevOps Engineer :

  • 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.

Demikianlah tanggung jawab yang umum dari seorang insinyur DevOps. Meskipun terlihat beragam, tugas-tugas ini dapat dilaksanakan dengan efektif melalui kolaborasi dan komunikasi yang baik antara tim-tim terkait.

Sekarang, mari kita jelaskan secara lebih rinci mengenai tanggung jawab khusus yang dimiliki oleh seorang DevOps :

1. Continuous Integration

Seorang insinyur DevOps akan melakukan pengujian berulang untuk mendeteksi kesalahan dan memperbaiki kode. Jika terdapat kesalahan dalam proses ini, kesalahan tersebut akan segera diketahui dan ditangani oleh tim Pengembang dan Pengujian Kualitas (QA).

2. Continuous Delivery

Dalam proses ini, tim akan melakukan pengujian manual untuk menemukan kesalahan. Setelah pengujian dilakukan, tim akan melakukan pembaruan dan perbaikan tambahan pada aplikasi. Anda dapat mengetahui lebih lanjut tentang Continuous Integration dan Delivery di artikel mengenai CI/CD.

3. Configuration Management

Proses ini berkaitan dengan pemeliharaan konfigurasi aplikasi. Tim akan memastikan bahwa otomatisasi aplikasi berjalan dengan baik dan efisien.

4. Infrastructure as a Code (IaC)

IaC merupakan manajemen infrastruktur aplikasi melalui kode yang dapat diprogram, distandarisasi, dan direplikasi. IaC penting agar jika data aplikasi hilang, tim tidak perlu memulai dari awal karena IaC dapat menyediakan sumber daya, mengembalikan konfigurasi, dan memulihkan data dari cadangan.

5. Logging

Tim akan meninjau setiap kejadian dalam sistem, termasuk pembaruan yang berhasil dan kesalahan. Dari sini, tim akan membuat catatan penting tentang aplikasi secara real-time. Data log ini menjadi referensi dan membantu tim DevOps dalam menyelesaikan masalah dengan mengidentifikasi perubahan yang terjadi.

6. Monitoring

Dalam proses monitoring, tim bertugas untuk mendeteksi segala hal yang terkait dengan sistem, termasuk aplikasi dan layanan cloud. Jika terjadi penyimpangan atau anomali, tim akan mencatatnya dan segera memperbaikinya. Proses monitoring juga berguna untuk melihat dampak dari perubahan kode aplikasi. Monitoring ini bergantung pada data log, karena tanpa data log, proses monitoring tidak dapat berjalan dengan baik karena kekurangan sumber data penting.

D. Jenis-jenis Skill DevOps Engineer

Berikut ini adalah beberapa skill yang harus dikuasai oleh seorang insinyur DevOps. Anda mungkin penasaran dengan skill-skill tersebut, bukan? Nah, sebagai jembatan antara tim pengembangan dan operasional, seorang insinyur DevOps harus memiliki pemahaman yang luas tentang keduanya. Berikut adalah beberapa skill yang harus dimiliki oleh seorang insinyur DevOps :

1. Memahami Konsep Utama dari DevOps

Meskipun DevOps sering dikaitkan dengan konsep otomatisasi dan teknologi canggih, sebenarnya DevOps bukanlah teknologi atau alat. DevOps adalah sebuah metodologi yang tidak memiliki kerangka kerja yang ketat.

Tujuan utama dari metodologi DevOps adalah untuk menggabungkan tim pengembang dan tim operasional guna mengurangi kesenjangan antara keduanya sehingga pekerjaan dapat dilakukan dengan lebih cepat. Dengan menerapkan metodologi DevOps, perusahaan dapat menghasilkan perangkat lunak berkualitas dengan lebih cepat.

Namun, untuk memahami konsep utama DevOps, seseorang perlu memiliki pemahaman yang baik tentang tugas-tugas DevOps, terutama dalam hal pemahaman teknis.

2. Menguasai Tools Development dan Operations

Seorang insinyur DevOps perlu memiliki pengetahuan mendalam tentang alat-alat pengembangan dan operasional. Hal ini dikarenakan praktik DevOps erat kaitannya dengan otomatisasi. Dalam konteks ini, setiap orang harus mampu mengintegrasikan berbagai alat dan sistem.

Dalam DevOps, tim akan bekerja sama dalam menggabungkan, membangun, menguji, mengemas, dan menyebarkan kode. Semua orang berperan dalam proses pelepasan perangkat lunak.

Namun, tidak ada aturan baku mengenai alat-alat apa yang harus dikuasai oleh seorang insinyur DevOps. Oleh karena itu, penting untuk terus bereksperimen dengan alat-alat DevOps dan mencari solusi terbaru. Mengingat perkembangan teknologi yang terus berlangsung, perusahaan juga perlu mengikuti perkembangan alat-alat terbaru.

3. Memahami Tentang Cloud

Salah satu skill DevOps yang penting adalah pemahaman tentang cloud computing.

Komputasi awan (cloud computing) umumnya digunakan oleh perusahaan dan organisasi untuk keperluan internal, seperti penyimpanan dan pengolahan data yang mengandalkan pusat data (data center).

Keahlian dalam cloud computing meliputi kemampuan merancang dan membangun sistem cloud, menangani kompleksitas sistem cloud, dan memaksimalkan fitur-fitur lain dari layanan cloud.

4. Linux Fundamental and Scripting

Saat ini, sebagian besar perusahaan lebih memilih untuk menjalankan aplikasi mereka di sistem operasi Linux. Oleh karena itu, memiliki pemahaman yang baik tentang sistem operasi Linux sangat penting bagi seorang insinyur DevOps, terutama karena alat-alat manajemen konfigurasi seperti Puppet, Chef, dan Ansible memiliki node master yang berjalan di lingkungan Linux.

Seorang insinyur DevOps juga harus memiliki keterampilan dalam bahasa scripting. Umumnya, bahasa scripting Python menjadi pilihan yang populer.

5. Problem Solving

Bagi seorang insinyur DevOps, kemampuan merespons masalah dengan efektif dan menyelesaikannya dengan cepat adalah tanggung jawab utama. Seorang DevOps harus memiliki pengalaman dalam memecahkan masalah yang timbul selama proses pengembangan aplikasi, seperti mengatasi bug, menemukan anomali dalam sistem, menyesuaikan kinerja sistem berdasarkan umpan balik pengguna, dan lain sebagainya.

Untuk mendukung kemampuan dalam memecahkan masalah, seorang insinyur DevOps juga perlu memiliki keterampilan interpersonal yang baik. Keterampilan ini sangat penting dalam menjembatani kesenjangan antara tim yang berbeda, sehingga tim dapat menganalisis kode dan berkomunikasi dengan detail secara efektif untuk pengembangan perangkat lunak.

6. Update Pengetahuan DevOps dengan Buku-Buku 

Berikut ini adalah beberapa rekomendasi buku yang dapat membantu Anda meningkatkan pengetahuan tentang DevOps sebelum mengaplikasikannya. Buku-buku ini ditulis oleh para ahli yang telah lama terlibat dalam dunia DevOps. Berikut adalah daftar buku tersebut:

  • The Phoenix Project, yang ditulis oleh Kevin Behr, Gene Kim, dan George Spafford. Buku ini mengisahkan tentang sebuah tim IT yang bekerja secara lintas tim bisnis.
  • The Unicorn Project, yang merupakan sekuel dari "The Phoenix Project" dan ditulis oleh Gene Kim. Buku ini menceritakan tentang penyelesaian proyek dari sudut pandang pengembang perangkat lunak.
  • The DevOps Handbook, yang ditulis oleh Gene Kim, Patrick Debois, John Willis, dan Jez Humble. Buku ini dapat dianggap sebagai tindak lanjut dari "The Phoenix Project" dan "The Unicorn Project". Buku ini memberikan saran-saran praktis untuk mencapai kelincahan, keandalan, dan keamanan kelas dunia dalam organisasi teknologi.
  • Accelerate, yang ditulis oleh Nicole Forsgren, Jez Humble, dan Gene Kim. Para penulis dalam buku ini menyajikan temuan penelitian dan analisis yang ketat tentang membangun dan memperluas organisasi teknologi yang memiliki performa tinggi.

Dengan membaca buku-buku tersebut, Anda dapat meningkatkan pemahaman Anda tentang DevOps dan memperoleh wawasan praktis dalam menerapkan konsep dan prinsip DevOps dalam organisasi Anda.

E. Tools yang dibutuhkan bagi DevOps Engineer

Tools untuk DevOps

Melalui berbagai referensi, ternyata ada banyak alat bantu untuk menerapkan DevOps yang harus kamu tahu.

1. Source Code Management

Melalui repositori sumber, para pengembang dapat memeriksa dan mengubah kode tanpa perlu menulis satu sama lain secara langsung. Manajemen kode sumber ini adalah komponen utama dari Continuous Integration (CI). Beberapa contoh produk yang berfungsi sebagai SCM (Source Code Management) antara lain Git, Subversion, Cloudforce, Bitbucket, dan TFS.

2. Build Server

Server build adalah alat otomatisasi yang mengkompilasi kode dari repositori kode sumber ke dalam basis kode yang dapat dieksekusi. Alat-alat ini seperti Jenkins, SonarQube, dan Artifactory.

3. Configuration Management

Manajemen konfigurasi digunakan untuk mengatur konfigurasi pada server atau lingkungannya. Alat-alat yang populer untuk manajemen konfigurasi seperti Puppet dan Chef.

4. Virtual Infrastructure

Amazon Web Services dan Microsoft Azure adalah contoh infrastruktur virtual. Infrastruktur virtual ini disediakan oleh penyedia cloud yang menjual infrastruktur atau Platform as a Service (PaaS). Infrastruktur ini memiliki API yang memungkinkan pembuatan mesin baru yang dapat diprogram dengan alat manajemen konfigurasi.

Terdapat juga private cloud, di mana infrastruktur virtual pribadi memungkinkan menjalankan cloud di hardware sebagai data terpusat.

Alat-alat ini dikombinasikan dengan alat otomatisasi untuk memberdayakan organisasi dalam menerapkan DevOps dengan kemampuan konfigurasi server tanpa intervensi langsung. Jika ingin menguji kode baru, cukup mengirimkan kode ke infrastruktur cloud untuk membangun lingkungan. Kemudian, pengujian dapat dilakukan tanpa campur tangan manusia.

5. Test Automation

Otomatisasi pengujian sebenarnya sudah ada sejak lama. Pengujian yang diadopsi oleh DevOps berfokus pada pengujian otomatis melalui pipa build untuk memastikan bahwa build yang dapat di-deploy telah dilakukan. Beberapa alat populer untuk tahapan ini adalah Selenium dan Air.


Sebenarnya, selain DevOps juga ada yang namanya DevSecOps, yang merupakan gabungan dari Pengembangan (Development), Keamanan (Security), and Operasional (Operations).

Semoga bermanfaat bagi Software Developer/Engineer dan juga untuk Mahasiswa IT (Informatika). Terima Kasih 😄😘👌👍 :)

Wassalamu‘alaikum wr. wb.

Post a Comment

Previous Post Next Post