DEVOPS (Development (Dev) & IT Operations (Ops))
DEVOPS
Seiring berkembangnya teknologi, pembuatan
aplikasi kini bisa dilakukan secara cepat dan efektif. Salah satu caranya
adalah dengan sistem DevOps. DevOps adalah prinsip yang kini diadopsi oleh
banyak perusahaan besar seperti Gojek, Amazon, dan Microsoft karena beragam
manfaatnya. DevOps telah menjadi fenomena yang dibahas dengan jelas dalam rekayasa
perangkat lunak selama beberapa tahun terakhir.
DevOps menjawab tantangan dari apa yang sering
digambarkan sebagai kesenjangan antara pengembangan dan personil operasi.
Laporan membawa harapan positif dari
DevOps dan organisasi menjadi semakin tertarik dengan fenomena tersebut dan
bagaimana memanfaatkan potensi manfaatnya. Namun, istilah itu sendiri
dikelilingi oleh ambiguitas. Sedangkan tujuan jelas "menjembatani
kesenjangan antara pengembangan dan operasi", ada masih banyak
interpretasi tentang apa arti DevOps sebenarnya.
APA ITU DEVOPS?
DevOps merupakan singkatan dari dua kata Development dan Operation. Di mana kedua kata tersebut memiliki arti menggabungkan proses pengembangan dari sebuah sistem/aplikasi dengan operasional. Di dalam proyek, tim development bertanggung jawab untuk terus menciptakan aplikasi baru dan memodifikasi yang sudah ada untuk membuatnya lebih baik. Sementara, tim operations harus dapat memastikan semuanya beroperasi secara optimal serta memastikan bahwa sumber daya jaringan tersedia dan berfungsi dengan kinerja yang baik.
APA 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.
SIKLUS HIDUP DEVOPS
Siklus
hidup DevOps membentang dari awal pengembangan perangkat lunak hingga
pengiriman, pemeliharaan, dan keamanan. 10 tahap siklus hidup adalah:
1. Manage : DevOps menutup loop dan menggabungkan umpan balik dan
pembelajaran dari seluruh siklus hidup ke dalam iterasi yang sedang
berlangsung.
2. Plan : DevOps menjelaskan pekerjaan yang perlu dilakukan,
memprioritaskannya, dan melacak penyelesaiannya.
3. Create : DevOps menulis kode, mengusulkan perubahan, dan
mendiskusikan proposal ini dengan rekan kerja.
4. Verify : DevOps
secara otomatis menguji kode untuk memastikan kode berfungsi dengan benar.
5. Package : DevOps
menyimpan perangkat lunak dalam keadaan yang dapat digunakan kembali nanti.
6. Secure : DevOps memeriksa apakah perangkat lunak mengandung
kerentanan melalui pengujian statis dan dinamis, pengujian fuzz, dan pemindaian
ketergantungan.
7. Release : DevOps
menyebarkan perangkat lunak ke pengguna akhir.
8. Configure : DevOps mengelola infrastruktur dan platform perangkat
lunak.
9. Monitor : DevOps melihat dampak perangkat lunak pada infrastruktur
dan pengguna. Ini juga menyediakan data untuk membantu merespons insiden secara
efektif.
10. Protect : DevOps mengamankan infrastruktur
tempat perangkat lunak berjalan dengan memastikan container selalu up to date
dan terkunci.
Penerapan
metode DevOps memiliki banyak sekali kelebihan, akan tetapi terdapat juga
kekurangan juga dari penerapan metode ini.
Berikut
adalah kelebihan dan kekurangan dari penerapan metode DevOps.
Kelebihan
:
1.
Siklus pengembangan yang lebih
pendek
2.
Meningkatkan kualitas dan
fleksibilitas
3.
Biaya yang lebih efisien
4.
Kontrol Resiko dan Pemulihan yang
lebih baik
5.
Dapat meningkatkan Praktik Keamanan
Kekurangan
:
1.
Penerapan Metode DevOps harus
merubah kebiasaan atau kebudayaan dalam pengembangan proyek
2.
Membutuhkan Software Engineering
yang ahli
3.
Memerlukan kolaborasi yang kuat
MANFAAT DEVOPS
1. Mempercepat
proses develop aplikasi serta mengurangi risiko kegagalan
Ketika
tim Developer sudah diberikan keleluasaan dalam melakukan deploy kode, dan
rollback kodenya sendiri, developer mampu menulis kode secara lokal di laptop
serta mengunggah kode ke server test. Setelah itu, QA/Tester melakukan
pengecekan selanjutnya developer mengunggah kode ke Server Production. Langkah
ini lebih cepat, efisien, serta mengurangi risiko kegagalan dibandingan jika
tim Developer dan tim Operation dipisah.
2.
Tim yang lebih produktif
Dengan
digabungkannya tim Developer dengan tim Operation, tentunya membuat mereka akan
jauh lebih memungkinkan untuk berkolaborasi dan berkomunikasi secara lebih
efektif. Hal ini membuat kedua tim akan memiliki satu tujuan bersama, yaitu
mampu meluncurkan fitur atau bug secepat mungkin ke pengguna. Tujuannya adalah
untuk memunculkan rasa saling memiliki dan meningkatkan produktivitas tim.
3. Angka
human error yang lebih rendah
Dengan
bantuan beberapa tools yang digunakan seperti server yang berada di Cloud (AWS,
GCP, Azure, dll), Jenkins, Ansible, hingga Python, profesi ini dapat membuat
sebuah sistem di mana Developer bisa tinggal mengetikkan 1 perintah untuk
secara otomatis mengunggah kode mereka ke server, dan begitu pula dengan
rollback. Semua dapat dilakukan tanpa mengganggu Developer lain, server lain,
maupun tanpa campur tangan manual tim Operation. Dengan begini semua sudah
serba otomatis sehingga risiko terjadi Human Error menjadi lebih sedikit.
4.
Skillset menjadi DevOps Engineer
seorang
insinyur DevOps memiliki prioritas utama untuk menghadirkan fitur bernilai
tinggi dalam waktu singkat melalui kolaborasi lintas tim. Hal ini membuat
insinyur DevOps membutuhkan keterampilan yang lengkap di bidang teknis,
peralatan, dan juga interpersonal. Hal ini membuat seorang insinyur DevOps
membutuhkan
campuran keterampilan di bidang softskill dan hardskill atau technical skill.
Juga beberapa
kemampuan yang umum dimiliki oleh seorang insinyur DevOps adalah sebagai
berikut,
1) Kolaborasi dan komunikasi,
DevOps menghadirkan pendekatan kolaboratif untuk proses pengembangan,
pengujian, dan produksi perangkat lunak. Hal ini berarti adanya tujuan bersama
dalam sebuah tim dilakukan secara efisien dan komunikatif. Kolaborasi dan
komunikasi antar persona dalam urusan teknis hingga manajemen internal amat
diperlukan dalam DevOps karena kepentingan efektivitas pengembangan.
2) Pemahaman alat,
seorang insinyur DevOps juga diwajibkan mengetahui dan memahami cara
menggunakan beberapa alat dalam pengembangan hingga pengiriman perangkat lunak
seperti version control, continuous integration servers, configuration
management, deployment automation, containers, infrastructure orchestration,
monitoring and analytics, Testing and Cloud Quality tools, dan Network
protocols.
3) Keterampilan pemrograman khusus dan
coding, hampir semua pendekatan pengembangan memerlukan keterampilan
pemrograman. Begitu pula bagi insinyur DevOps yang diwajibkan menguasai hal ini
untuk mempertahankan serangkaian tanggung jawab pengodean unik pada tiap
perangkat lunak atau aplikasi yang dikembangkan. Keterampilan ini meliputi
Java, JavaScript, Ruby, Python, PHP, Bash, dan lain sebagainya.
4) Sinkronisasi dengan tim Quality
Assurance (QA), insinyur DevOps harus melakukan sinkronisasi dengan tim QA.
Semua aktivitas pengujian, termasuk
otomatis dan manual harus diketahui dan terlihat oleh teknisi DevOps untuk
memastikan organisasi memenuhi tujuan dan tanggal rilis hingga hasil. Insinyur
DevOps harus memahami kegiatan pengujian, mengetahui riwayat pengujian dalam
siklus CI/CD (Continuous integration/Continuous delivery), dan memahami
kerangka kerja yang dipimpin oleh Tim QA
Refrensi : https://about.gitlab.com/topics/devops/
Komentar
Posting Komentar