Apa itu DevOps
DevOps adalah serangkaian pekerjaan yang mengotomasisasi proses antara Software Development dan Development Team agar mereka dapat melakukan proses build, test dan release perangkat lunak lebih cepat dan lebih handal. DevOps yang sudah berjalan dengan baik akan menghasilkan produk yang stabil dan meningkatkan nilai dari produk itu sendiri.
Kenapa DevOps Sangat Penting dalam Industri IT
Salah satu best practices dalam DevOps yaitu melakukan update produk yang kecil dan cepat. Dalam industri IT, ini bisa disebut dengan minor / patch update. Dengan melakukan update produk yang kecil, organisasi/perusahaan dapat melakukan inovasi lebih cepat bagi produknya, juga dapat melakukan rollback dengan mudah jika ditemukan bug yang tidak ter-cover oleh automated testing maupun tim QA. Dengan praktek ini, Organisasi/Perusahan dapat me-monitor produk dan mendapatkan data yang paling berharga yaitu data pengguna.
Apa saja yang di lakukan oleh DevOps?
Continuous Integration (CI)
Continuous Integration adalah layanan yang melakukan build dan pengujian otomatis, yang terintegrasi dengan hosting repository source code (seperti Github, Gitlab, atau Bitbucket). Di mana setiap kita melakukan push commit-commit baru, atau ada pull request ke dalam repository project, layanan ini langsung menjalankan automated build dan test, sehingga jika ada error atau kegagalan test akan segera ketahuan. Jika terjadi kesalahan/bug dalan build/test, Development Team dapat dengan cepat melakukan perbaikan code sehingga kesalahan yang terjadi dapat di tanggulangi dan mengurangi waktu untuk melakukan validasi sebuah update.
Ada banyak layanan CI gratis yang bisa di manfaatkan:
- Travis CI
- Codeship
- Bitbucket Pipeline
- Gitlab CI
- CircleCI
Continuous Delivery
Continuous Delivery adalah praktek di dalam software development dimana para Software Developer yang melakukan perubahan pada kode, sudah melakukan build & test yang dijalankan otomatis oleh Continuous Integration dan siap untuk deploy ke environment production namun memilih untuk tidak men-deploy pada umumnya. Ketika Continuous Delivery dijalankan dengan baik, tim Software Developer akan selalu memiliki sebuah bagian aplikasi atau aplikasi itu sendiri yang siap untuk di deploy ke environment production. Ini dilakukan untuk membantu mengurangi biaya, waktu, dan risiko dalam perubahan aplikasi dengan memungkinkan untuk menambah update lebih banyak untuk aplikasi yang sedang berjalan. Sebuah proses penyebaran langsung dan berulang sangat penting dalam Continuous Delivery (CD).
Berikut beberapa manfaat dari pengiriman yang berkesinambungan dapat dirangkum:
- Mempercepat Waktu rilis : CD memungkinkan tim ataupun orang lain memberikan nilai bisnis yang ada dalam rilis software baru lebih cepat ke users. Kemampuan ini membantu perusahaan tetap selangkah lebih maju dari para pesaing.
- Membangun Produk Berkualitas: Rilis yang lebih sering memberikan Software Development mendapatkan response yang lebih cepat dari para pengguna. Hal ini memungkinkan mereka untuk bekerja hanya pada fitur yang berguna. Jika mereka menemukan bahwa fitur tersebut tidak berguna, mereka akan hentikan usaha lebih lanjut terhadap fitur tersebut. Ini membantu mereka dalam pembangunan produk software yang tepat.
- Peningkatan Produktivitas dan Efisiensi: Penghematan waktu yang signifikan untuk Development, Testing, DevOps, dll melalui Automation.
- Kehandalan Rilis: Risiko yang terkait dengan rilis dapat menurun secara signifikan, sehingga proses rilis menjadi lebih handal. Dengan CD, proses penyebaran dan skrip diuji berulang kali sebelum di jalankan. Jadi, sebagian besar kesalahan script dalam proses penyebaran dapat ditemukan. Dengan kemampuan membuat rilis sesering mungkin, jumlah perubahan kode di setiap rilis tentu menurun. Hal ini menjadikan mudah dalam menemukan dan memperbaiki masalah yang terjadi, mengurangi waktu di mana mereka memiliki dampak.
- Peningkatan Kualitas Produk: Jumlah bug terbuka dan insiden produksi telah menurun secara signifikan.
- Peningkatan Kepuasan Pelanggan: Tingkat kepuasan pelanggan yang lebih tinggi dapat tercapai.
Continuous Deployment
Continuous Deployment merupakan salah satu rangkaian setelah Continuous Integration dan Continuous Delivery selesai dijalankan. Umumnya organisasi/perusahaan memiliki environment test / development, dan disinilah fungsi utama continuous deployment, yaitu ketika hasil dari Continuous Integration sudah dinyatakan baik, tim pengembang dapat segera melihat perubahan pada environment test / environment development / environment production.
Continuous Deployment merupakan cara yang sangat baik untuk meningkatkan jumlah feedback yang diterima oleh pengguna aplikasi dan mengurangi tekanan karena tidak ada lagi “Hari Rilis”. Tim pengembang dapat fokus dalam membangun produk dan dapat melihat perubahan code mereka beberapa menit setelah mereka selesai mengerjakannya.
Aplikasi populer yang mendukung dalam Continuous Integration/Continuous Delivery/Continuous Deployment diantaranya
- Jenkins,
- Gitlab CI/CD
- Bitbucket Pipeline,
- Semaphore CI,
- Travis CI,
- Circle CI,
- AWS Code Build
- AWS Code Pipeline.
Configuration Management
Configuration Management adalah praktek dalam proses System Engineering yang memiliki tujuan untuk me-maintain konfigurasi sebuah produk, dan memastikan konsitensinya dalam seluruh environment. Dengan menggunakan Configuration Management, proses konfigurasi produk dapat diotomatisasi, distandardisasi dan mengurangi proses konfigurasi yang manual. Tahap selanjutnya, Configuration Management akan mempermudah dalam konfigurasi banyak server dan dapat meminimalisir kesalahan, karena konfigurasi ditulis dalam code, tidak lagi menjalankan perintah manual.
Aplikasi populer yang mendukung dalam Configuration Management diantaranya
Infrastructure as a Code (IAAC)
Infrastructure as a Code adalah sebuah praktek dalam System Architecture yang mana infrastruktur sebuah produk didefinisikan dalam code yang dapat diprogram, distandardiasikan dan mudah untuk di duplikasi atau bisa disebut juga bahasa kerennya Programmable Infrastructure. Intinya yaitu kita tidak membangun server secara manual, cukup dengan code seperti kita mengkoding kita dapat menambahkan server. Produk skala menengah, mungkin membutuhkan lebih dari satu mesin. Dengan IAAC, tim pengembang dapat dengan mudah menambah mesin melalui satu baris kode.
Produk dalam skala besar, umumnya bergantung pada beberapa produk yang ditawarkan oleh provider cloud, seperti provider aws yang menawarkan produk seperti AWS EC2 dan AWS Kinesis Data Stream. Dengan IAAC, tim pengembang tidak lagi melakukan operasi manual pada console provider cloud, cukup dengan merubah beberapa baris kode, hal yang lebih penting yaitu dapat meminimalisir kesalahan.
Aplikasi populer yang mendukung IAAC diantaranya
Monitoring
Sebuah produk haruslah di-monitoring untuk mengetahui bagaimana produk digunakan oleh pengguna. Dalam praktek DevOps, monitoring merupakan hal yang sangat penting. Tim pengembang harus mengetahui bagaimana perubahan kodenya berdampak pada produk juga penggunanya melalui monitoring tools.
Aplikasi monitoring yang populer diantaranya
Logging
Log aplikasi adalah salah satu cara untuk mengetahui apakah produk kita berjalan dengan baik atau tidak. Namun seiring dengan tingkat kompleksitas sebuah produk, ada banyak log komponen yang harus diterima dan dianalisis. Dan log tersebut haruslah terpusat, tidak terpisah-pisah. Maka istilah Centralized Logging merupakan hal yang tidak dapat dipisahkan dalam praktek DevOps.
Aplikasi logging yang populer diantaranya
Communication & Collaboration
Salah satu aspek utama dalam praktek DevOps yaitu meningkatnya komunikasi dan kolaborasi dalam sebuah organisasi/perusahaan, baik dalam bentuk fisik maupun non fisik. Praktek DevOps yang berjalan dengan baik, akan meningkatkan aspek komunikasi dan kolaborasi tidak hanya pada tim pengembang, namun juga tim marketing, sales, operations, dan tim lain yang ada didalam organisasi/perusahaan.
Slack adalah aplikasi yang banyak digunakan sebagai sebuah wadah untuk ber-komunikasi dalam bentuk chat. Dengan banyaknya jumlah integrasi yang bisa dilakukan oleh slack, tidak heran slack menjadi favorit. Aplikasi seperti Skype, Google Hangouts dan Google Meets masih menjadi favorit untuk komunikasi dalam bentuk video/voice call. Tools kolaborasi yang banyak menjadi favorit diantaranya Trello, Jira, Pivotal Tracker dan Meistertask.
Profesi DevOps Engineer
Organisasi/perusahaan yang melakukan praktek DevOps, mereka bisa mengurangi jumlah kesalahan, recovery lebih cepat, dan deploy lebih banyak. DevOps Engineer akan menjadi tim yang posisinya sangat penting, karena DevOps Engineer ini akan bekerja sangat dekat dengan Tim Engineer untuk memastikan produk berjalan dengan baik.
DevOps Merupakan Pengembangan dari Agile
“Ops” adalah istilah untuk insinyur sistem, administrator sistem, staf operasi, insinyur rilis, DBA, network engineer, profesional keamanan, dan berbagai subdisiplin dan jabatan lainnya.
“Dev” digunakan sebagai singkatan untuk pengembang khususnya, tapi dalam prakteknya sebenarnya bisa jadi lebih luas dan berarti “semua orang yang terlibat dalam pengembangan produk,” yang dapat mencakup produk, QA, dan jenis lain dari disiplin ilmu.
DevOps memiliki afinitas yang kuat dengan Agile dan pendekatan lean. Tampilan lama operasi cenderung ke arah “Dev” menjadi sisi “pembuat” dan “Ops” menjadi sisi “orang yang berhubungan dengan pengoperasian”. DevOps “melebur” kedua istilah tersebut, agar dapat berkolaborasi secara berkelanjutan. Dengan cara ini, DevOps dapat diartikan sebagai hasil pengembangan dari Agile — pengembangan perangkat lunak yang berorientasi untuk lebih melayani pelanggan, manajemen produk, pengembang, dan (kadang-kadang) QA untuk mengisi kesenjangan.
Dengan DevOps, produksi fitur-fitur baru yang lebih baik dapat cepat dilakukan. Tapi pelayanan dan bagaimana aplikasi dan sistem berinteraksi merupakan bagian mendasar. Dari perspektif ini, DevOps hanya memperluas prinsip Agile untuk memproduksi seluruh layanan.