DEVOPS (DEVELOPMENT AND IT OPERATIONS)

DevOps merupakan singkatan dari Development dan Operation yang bermakna menggabungkan proses pengembangan dari sebuah sistem/aplikasi dengan operasional. DevOps bukanlah sejenis software, aplikasi, teknologi, ataupun tools. Melainkan sebuah prinsip atau pola pikir yang digunakan di dunia IT. 
DevOps adalah seperangkat praktik yang menggabungkan pengembangan perangkat lunak dan operasi TI yang bertujuan untuk mempersingkat siklus hidup pengembangan sistem dan menyediakan pengiriman berkelanjutan dengan kualitas perangkat lunak yang tinggi.



Sejarah DevOps

DevOps dimulai pada tahun 2007, dimana Patrick Debois (seorang konsultan development) memiliki tujuan untuk mempelajari berbagai aspek tentang IT. Ia merasa terganggu dengan perbedaan antara cara tim development dan tim operations bekerja. Lalu Patrick dipertemukan dengan Andrew Shafer untuk memulai Agile System Administration.
Tahun 2010 pembahasan mengenai DevOps mulai gencar di seluruh dunia dengan tagar DevOpsDays bermunculan di media sosial. Hingga tahun 2014 perusahaan besar seperti Target, Nordstrom, dan LEGO menjadi perusahaan pertama yang menerapkan prinsip DevOps ke perusahaannya.


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 :
  1. Meningkatkan deployment frequency
  2. Meningkatkan waktu pemasaran
  3. Menurunkan tingkat kegagalan pada rilisan terbaru
  4. Mempersingkat waktu perbaikan
  5. Mempersingkat waktu pemulihan
Menurut laporan State of DevOps pada tahun 2015, organisasi IT yang menerapkan DevOps menghasilkan kinerja 30x lebih tinggi dengan 200x efisiensi waktu, kegagalan 60x lebih sedikit, dan proses pemulihan 168x lebih cepat.


Tools yang digunakan DevOps



Melalui berbagai referensi terdapat banyak alat bantu untuk menerapkan DevOps yang harus kalian tahu yaitu :

1. Source Code Management
Melalui sumber repository, antar developer dapat memeriksa dan mengubah kode tanpa perlu saling menulis satu sama lainnya. Source control ini mungkin telah ada sejak 40 tahun yang lalu, tetapi ini merupakan komponen utama dari Continuous Integration atau CI.
Adapun contoh produk yang berfungsi sebagai SCM yaitu Git, Subversion, Cloudforce, Bitbucket, dan TFS.

2. Build Server
Alat otomatisasi yang mengkompilasi kode dalam SCR (Source Code Repository) ke dalam basis kode yang dapat dieksekusi. Alat ini bisa kamu temukan seperti Jenkins, SonarQube, dan Artifactory.

3. Configuration Management
Manajemen konfigurasi berguna untuk menetapkan konfigurasi pada server atau lingkungannya. Alat yang populer biasa kamu temukan seperti Puppet dan Chef.

4. Virtual Infrastructure
Amazon Web Services dan Microsoft Azure adalah contoh infrastruktur virtual. Virtual Infrastructure ini disediakan oleh vendor cloud yang menjual insrastruktur atau Platform as a Service (PaaS). Infrastruktur ini memiliki API yang memungkinkan kamu membuat mesin baru yang terprogram dengan alat manajemen konfigurasi.
Ada juga private cloud di mana private infrastructure virtual memungkinkan kamu menjalankan cloud di hardware sebagai data terpusat.
Alat ini dikombinasikan dengan alat otomatisasi untuk memberdayakan organisasi yang melatih DevOps dengan kemampuan konfigurasi server tanpa jari di atas keyboard. Jika ingin menguji kode baru, cukup mengirimkan kode ke infrastruktur cloud untuk membangun lingkungan. Kemudian tes dijalankan tanpa adanya campur tangan manusia.

5. Test Automation
Test automation sebenarnya sudah ada sejak lama. Pengujian yang diadopsi oleh DevOps berfokus pada pengujian otomatis melalui pipeline build untuk memastikan bahwa build deployable sudah dilakukan. Tools populer untuk tahapan ini adalah Selenium dan Air.

6. Fase DevOps Pipeline
Pipeline DevOps adalah sekumpulan proses yang memungkinkan tim developer dan tim IT operations dapat bekerja sama untuk membangun dan menerapkan kode ke production environment. Meskipun setiap perusahaan yang menjalankan model DevOps ini dapat bekerja dengan proses yang berbeda-beda, namun secara garis besar mereka akan mengikuti fase DevOps pipeline berikut:
  • Plan
Fase ini melibatkan perencanaan untuk seluruh alur kerja yang dibutuhkan sebelum tim pengembang mulai menulis kode. Dalam tahap ini, manajer produk dan manajer proyek akan memainkan peran penting. Mereka akan bekerjasama untuk mengumpulkan requirements dan feedback dari klien ataupun stakeholders. Informasi tersebut kemudian akan dikumpulkan untuk membangun roadmap produk untuk memandu proses pengembangan yang akan dilakukan.
  • Code
Setelah rencana dibuat, tim developer dapat mulai menulis kode yang dibutuhkan untuk mengembangkan produk. Tim developer biasanya akan menggunakan seperangkat plugin standar yang dipasang di lingkungan pengembangan mereka untuk membantu proses pengembangan, membantu menerapkan gaya kode yang konsisten, serta menghindari kelemahan keamanan umum dan anti-pattern.
  • Build
Setelah tim developer selesai menulis kode yang dibutuhkan, mereka akan memasukan kode tersebut ke dalam shared code repository. Developer akan mengirimkan pull request, setelah developer yang lain akan mereview perubahan yang telah dilakukan. Jika kode tidak memiliki masalah, maka developer tersebut akan menyetujui pull request yang telah dikirim sebelumnya.
  • Test
Langkah selanjutnya adalah melakukan pengujian.  Jika ada masalah yang ditemukan pada fase ini, maka masalah tersebut akan dikirim kembali ke tim developer untuk diselesaikan.
  • Release
Fase release menjadi tonggak penting dalam DevOps pipeline. Pada tahap ini, setiap perubahan kode telah melewati serangkaian pengujian dan tim IT operations telah memastikan bahwa masalah yang merusak dan regresi sudah teratasi dengan baik.
  • Deploy
Tahap selanjutnya adalah deployment. Setelah production environment dibuat dan dikonfigurasi maka versi terakhir dari pengembangan yang telah dilakukan akan diterapkan.
Monitor
Pada tahap terakhir, tim IT operations akan terus bekerja keras untuk memantau infrastruktur, sistem, dan aplikasi. Hal ini dilakukan untuk memastikan bahwa produk atau aplikasi yang dikembangkan dapat berjalan dengan lancar. Mereka juga mengumpulkan data-data penting dari log, analitik, sistem monitoring, serta melihat feedback dari pengguna untuk mengetahui jika ada masalah pada kinerja aplikasi.


Kegiatan DevOps

1. Continuous Integration
Layanan yang diberikan DevOps untuk melakukan build dan automation testing yang dikerjakan dengan menggunakan tools berupa Source Code Repository (SCR) untuk menemukan error code dan fixed code.

2. Continous Delivery
Continous Delivery selalu bekerja di dalam software development untuk merubah kode. Proses ini dilakukan setelah Continuous Integration untuk menambah update lebih banyak untuk aplikasi yang sedang berjalan.

3. Continous Deployment
Setelah proses Continous Integration-Delivery sudah dinyatakan dengan baik, tim development dapat melihat perubahan yang terjadi pada environment test/environment development/environment production.

4. Configuration Management
Bertujuan untuk maintain konfigurasi sebuah produk dan memungkinkan otomatisasi dan standarisasi konfigurasi produk.

5. Infrastrukture as a Code (IAAC)
Pekerjaan yang mana infrastruktur suatu produk didefinisikan melalui kode yang dapat diprogram, distandarisasi, dan mudah dalam duplikasi. Melalui IAAC, tim development dapat menambah mesin melalui satu baris kode.

6. Monitoring
Bertujuan untuk mengetahui bagaimana perubahan yang ada pada kode cukup berdampak pada produk dan penggunanya.

7. Logging
Dengan menerapkan log aplikasi, kita developer bisa mengetahui produk yang dibuat berjalan dengan baik atau tidak.


Manfaat

  • Kecepatan
  • Pengiriman yang cepat
  • Keandalan
  • Skala
  • Kolaborasi yang ditingkatkan
  • Keamanan


REFERENSI
https://aws.amazon.com/id/devops/what-is-devops/
https://www.dicoding.com/blog/apa-itu-devops/

Comments