DevOps
DevOps adalah kombinasi budaya, praktik, dan alat yang dirancang untuk meningkatkan kemampuan organisasi dalam menjalankan proses pengiriman aplikasi/perangkat lunak lebih cepat dibandingkan proses pengembangan perangkat lunak tradisional.
Seperti namanya, istilah DevOps menggabungkan kata pengembangan dan operasi.
Secara umum, metodologi DevOps menggambarkan proses pengembangan aplikasi atau perangkat lunak berkualitas tinggi dengan mengotomatisasi dan mengintegrasikan upaya tim pengembangan (developer) dan tim operasi TI (operasi).
Dalam model DevOps ini, tim pengembang dan operasi TI berkolaborasi di semua tahap siklus hidup pengembangan perangkat lunak untuk menghasilkan produk digital berkualitas tinggi secara efektif dan efisien.
Anda mungkin bertanya-tanya, "Apa itu Insinyur DevOps?
" Pada dasarnya, seorang insinyur DevOps adalah seorang profesional TI yang bekerja dengan pengembang perangkat lunak, operator sistem, staf operasi TI, dll.
untuk mengawasi atau memfasilitasi penerapan kode berdasarkan integrasi berkelanjutan dan alur kerja pengiriman berkelanjutan (CI/CD).
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 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.
Sejarah DevOps
Mengapa DevOps dibutuhkan dalam proses pengembangan software?
Setelah Anda memahami apa itu DevOps, mungkin Anda akan bertanya-tanya apa fungsi DevOps ini. Perlu Anda tahu, dalam proses pengembangan produk, klien biasanya menginginkan agar proses delivery produk dapat dilakukan dengan cepat. Klien juga berharap agar produk yang dikembangkan memiliki kualitas yang baik serta mampu bekerja dengan stabil.
Untuk memenuhi permintaan tersebut, tim developer dapat bekerja dengan cepat dalam proses pengembangan produk. Namun di sisi lain, tim operations memahami bahwa perubahan atau pengembangan yang dilakukan dengan cepat tanpa pengamanan yang tepat dapat membuat sistem menjadi tidak stabil.
Oleh karena itulah, DevOps dirancang untuk mengatasi permasalahan tersebut dengan cara mengintegrasikan semua orang yang terkait dengan software development dan deployment baik itu business users, developers, test engineers, security engineers, system administrators, dan lain-lain. Tim ini akan bekerja sama untuk mencapai tujuan dan fokus utama yaitu delivery produk / software berkualitas tinggi yang dapat memenuhi semua user requirements namun tetap mampu menjaga integritas dan stabilitas seluruh sistem.
Jika dilakukan dengan baik, DevOps dapat memberi berbagai manfaat dam proses pengembangan produk. Beberapa diantaranya seperti:
Perusahaan dapat bergerak dengan cepat
Praktik DevOps memungkinkan Anda untuk dapat bergerak cepat dalam berinovasi dan beradaptasi dengan perubahan pasar. Dengan demikian, praktik ini mampu mendorong bisnis agar bisa berkembang dengan cepat.
Delivery yang cepat
Praktik DevOps dapat membantu Anda untuk dapat merilis produk dengan waktu yang lebih cepat. Dengan cara ini, Anda memiliki peluang untuk bisa lebih unggul dari kompetitor Anda.
Keandalan
DevOps bekerja seperti pada praktik CI/CD (Continuous Integration / Continuous Delivery) yang dapat membantu Anda memastikan bahwa produk yang dikembangkan memiliki kualitas yang tinggi. Di sisi lain, Anda juga dapat mengirim produk yang andal dengan kecepatan tinggi.
Kolaborasi tim yang lebih baik
Di bawah model DevOps, tim pengembang dan tim operasi akan berkolaborasi, berbagi tanggung jawab, dan menggabungkan alur kerja mereka. Cara ini dapat membantu Anda untuk bekerja secara efektif dan efisien.
Aman
Anda dapat mengadopsi model DevOps tanpa perlu mengorbankan keamanan dengan menggunakan alat pengujian keamanan terintegrasi dan otomatis
1. 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.
2. 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.
3. 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.
4. 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.
5. 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.
6. Deploy
Tahap selanjutnya adalah deployment. Setelah production environment dibuat dan dikonfigurasi maka versi terakhir dari pengembangan yang telah dilakukan akan diterapkan.
7. Monitor
Pada tahap terakhir ini, 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.
Tools yang Digunakan DevOps
#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
Build server adalah 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.
Skill DevOps Engineer
Sebelum terjun ke dunia DevOps, perlu kamu ketahui dulu beberapa skill yang dibutuhkan untuk mengerjakan tanggung jawab ini. Skill tersebut seperti Python, AWS, Agile, SDLC, DevOps, Kubernetes, Docker, Scripting, Jenkins, dan Linux. Permintaan skill tersebut berdasarkan informasi rekrutmen di perusahaan LogisFleet yang sedang membutuhkan pekerja sebagai DevOps Engineering.
Kegiatan DevOps
#1 Continuous Integration
Continuous Integration merupakan layanan yang diberikan DevOps untuk melakukan build dan automation testing. Kegiatan ini dikerjakan dengan menggunakan tools berupa Source Code Repository (SCR) untuk menemukan error code dan fixed code.
#2 Continuous Delivery
Continuous 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 Continuous Deployment
Setelah proses Continuous Integration-Delivery sudah dinyatakan dengan baik, tim development dapat melihat perubahan yang terjadi pada environment test / environment development / environment production.
#4 Configuration Management
Proses ini berkaitan dengan system engineering yang bertujuan untuk maintain konfigurasi sebuah produk. Configuration Management memungkinkan otomatisasi dan standardisasi konfigurasi produk.
#5 Infrastructure as a Code (IAAC)
IAAC adalah 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
Produk IT menjadi sangat baik karena adanya proses monitoring saat produk tersebut digunakan oleh pengguna. Tujuannya adalah untuk mengetahui bagaimana perubahan yang ada pada kode cukup berdampak pada produk dan penggunanya.
#7 Logging
Centralized logging menjadi hal yang tidak dapat dipisahkan dari kegiatan DevOps. Dengan menerapkan log aplikasi, kita developer bisa mengetahui produk yang dibuat berjalan dengan baik atau tidak.
Kesimpulan
Comments
Post a Comment