Apa itu DevOps?
Kata DevOps gabungan dari dua kata yaitu development dan operations, metodologi pengembangan perangkat lunak yang menggabungkan pengembangan perangkat lunak (Dev) dengan operasi teknologi informasi (Ops). Tujuan dari DevOps adalah untuk memperpendek siklus hidup pengembangan sistem sambil memberikan fitur, perbaikan, dan pembaruan yang sejalan dengan tujuan bisnis.
Dari perspektif akademik, Len Bass, Ingo Weber, dan Liming Zhu, kelompok peneliti di Software Engineering Institute memberikan definisi DevOps sebagai seperangkat praktik yang dimaksudkan untuk mengurangi waktu antara melakukan perubahan pada sistem dan perubahan yang ditempatkan pada produksi normal, sambil memastikan kualitas tinggi.
Versi Microsoft, penyatuan orang, proses, dan produk untuk memungkinkan pengiriman manfaat terus menerus kepada pengguna akhir (End User). Dev dan Ops mengacu pada penggantian Development dan Operations yang terisolasi untuk menciptakan tim multidisiplin yang sekarang bekerja sama dengan praktik dan alat yang dibagikan secara efisien. Praktik esensial DevOps meliputi perencanaan yang gesit (Agile Planning), integrasi berkelanjutan (Continuous Integration), pengiriman berkelanjutan (Continuous Delivery), dan pemantauan aplikasi (Monitoring of Applications).
Versi Amazon, DevOps adalah kombinasi filosofi budaya, praktik, dan alat untuk meningkatkan kemampuan organisasi untuk memberikan aplikasi dan layanan dengan kecepatan tinggi; mengembangkan dan meningkatkan produk dengan kecepatan lebih cepat daripada organisasi yang menggunakan pengembangan perangkat lunak dan proses manajemen infrastruktur tradisional. Kecepatan ini memungkinkan organisasi untuk lebih melayani pelanggan mereka dan bersaing lebih efektif di pasar.
Versi Atlassian, DevOps adalah serangkaian praktik yang mengotomatiskan proses antara pengembangan perangkat lunak dan tim TI, sehingga mereka dapat membangun, menguji, dan merilis perangkat lunak dengan lebih cepat dan lebih andal. Konsep DevOps didirikan untuk membangun budaya kolaborasi antara tim yang secara historis berfungsi secara terpisah. Manfaat yang dijanjikan seperti peningkatan kepercayaan, rilis perangkat lunak yang lebih cepat, kemampuan untuk menyelesaikan masalah kritis dengan cepat, dan mengelola pekerjaan yang tidak direncanakan sebelumnya dengan lebih baik.
Cara Kerja DevOps
Dengan DevOps, tim pengembang perangkat lunak dan operasi tidak lagi bekerja secara terpisah atau terisolasi. Kadang kala, kedua tim ini digabungkan menjadi satu tim di mana para engineer bekerja di seluruh siklus aplikasi, mulai dari pengembangan dan pengujian hingga proses deploy dan operasional. Keterampilan tidak terbatas pada satu fungsi saja.
Dalam beberapa model DevOps, tim penjaminan mutu (Quality Assurance) dan keamanan (Security) juga dapat menjadi lebih terintegrasi dengan pengembang dan operasi sepanjang siklus hidup aplikasi. Ketika keamanan menjadi fokus semua orang di tim DevOps, ini terkadang disebut sebagai DevSecOps.
Tim-tim ini menggunakan praktik untuk mengotomatiskan proses yang secara historis bersifat manual dan lambat. Mereka menggunakan tumpukan teknologi (Technology Stack) dan perkakas (Tools) yang membantu mereka mengoperasikan dan mengembangkan aplikasi dengan cepat dan andal. Alat-alat ini juga membantu engineer menyelesaikan tugas secara mandiri (misalnya, menggunakan kode untuk penyediaan infrastruktur) yang biasanya membutuhkan bantuan dari tim lain, dan ini semakin meningkatkan kecepatan tim.
Manfaat DevOps
Kecepatan (Speed)
Bergerak dengan kecepatan tinggi sehingga perusahaan dapat berinovasi untuk pelanggan lebih cepat, beradaptasi dengan perubahan pasar dengan lebih baik, dan tumbuh lebih efisien dalam mengarahkan hasil bisnis. Model DevOps memungkinkan pengembang dan tim operasi perusahaan mencapai hasil ini. Misalnya, layanan microservices dan continuous delivery memungkinkan tim mengambil kepemilikan atas layanan dan kemudian merilis pembaruan kepada pelanggan lebih cepat.
Pengiriman Cepat (Rapid Delivery)
Tingkatkan frekuensi dan kecepatan rilis sehingga perusahaan dapat berinovasi dan meningkatkan produk lebih cepat. Semakin cepat merilis fitur baru dan memperbaiki bug, semakin cepat pula perusahaan dapat merespon kebutuhan pelanggan dan membangun keunggulan yang kompetitif. Continuous integration dan continuous delivery adalah praktik yang mengotomatiskan proses rilis perangkat lunak, mulai dari build hingga deploy.
Keandalan (Reliability)
Pastikan kualitas pembaruan aplikasi dan perubahan infrastruktur sehingga perusahaan dapat melakukan pengiriman dengan lebih cepat dengan andal sambil mempertahankan pengalaman positif bagi pengguna akhir. Gunakan praktik seperti continuous integration dan continuous delivery untuk menguji bahwa setiap perubahan berfungsi dan aman. Praktik monitoring dan logging membantu perusahaan tetap mendapatkan informasi tentang kinerja secara langsung (real-time).
Skala (Scale)
Operasikan dan kelola infrastruktur dan proses pengembangan dalam skala besar. Otomatisasi dan konsistensi membantu perusahaan mengelola sistem yang kompleks atau berubah secara efisien dan dengan risiko yang berkurang. Misalnya, Infrastruktur sebagai Kode (Infrastructure as Code) membantu mengelola development environment, testing, dan production environment secara berulang dan lebih efisien.
Kolaborasi yang Lebih Baik (Improved Collaboration)
Membangun tim yang lebih efektif di bawah model DevOps, yang menekankan nilai-nilai seperti kepemilikan dan akuntabilitas. Pengembang dan tim operasi berkolaborasi secara erat, berbagi banyak tanggung jawab, dan menggabungkan alur kerja mereka. Ini mengurangi inefisiensi dan menghemat waktu (misalnya, periode serah terima yang dikurangi antara pengembang dan operasi, menulis kode yang memperhitungkan environment di mana kode dijalankan).
Keamanan (Security)
Bergerak cepat sambil mempertahankan kontrol dan menjaga kepatuhan. Perusahaan dapat mengadopsi model DevOps tanpa mengorbankan keamanan dengan menggunakan kebijakan kepatuhan otomatis (automated compliance policies), fine-grained controls, dan teknik manajemen konfigurasi. Sebagai contoh, menggunakan infrastructure as code dan policy as code, perusahaan dapat menentukan dan kemudian melacak kepatuhan.
Mengapa DevOps Penting?
Perangkat lunak dan internet telah mengubah dunia dan industrinya, dari belanja menjadi hiburan hingga menjadi perbankan. Perangkat lunak tidak lagi hanya mendukung bisnis, melainkan menjadi komponen integral dari setiap bagian dari bisnis. Perusahaan berinteraksi dengan pelanggan mereka melalui perangkat lunak yang dikirimkan sebagai layanan atau aplikasi online dan pada semua jenis perangkat. Mereka juga menggunakan perangkat lunak untuk meningkatkan efisiensi operasional dengan mengubah setiap bagian dari rantai nilai, seperti logistik, komunikasi, dan operasi. Dengan cara yang sama seperti perusahaan barang fisik mengubah cara merancang, membangun, dan mengirimkan produk menggunakan otomasi industri sepanjang abad ke-20, perusahaan di dunia saat ini harus mengubah cara mereka membangun dan mengirimkan perangkat lunak.
Cara Mengadopsi Model DevOps
Filosofi Budaya DevOps
Transisi ke DevOps membutuhkan perubahan budaya dan pola pikir. Paling sederhana, DevOps adalah tentang menghilangkan hambatan antara dua tim, pengembangan dan operasi yang diisolasi secara tradisional. Di beberapa organisasi, mungkin tidak ada tim pengembangan dan operasi yang terpisah, engineer dapat melakukan keduanya. Dengan DevOps, kedua tim bekerja sama untuk mengoptimalkan produktivitas pengembang dan keandalan operasi. Mereka berusaha untuk sering berkomunikasi, meningkatkan efisiensi, dan meningkatkan kualitas layanan yang mereka berikan kepada pelanggan. Mereka mengambil kepemilikan penuh atas layanan mereka, seringkali di luar di mana peran atau jabatan mereka dinyatakan secara tradisional dicakup dengan memikirkan tentang kebutuhan pelanggan akhir dan bagaimana mereka dapat berkontribusi untuk menyelesaikan kebutuhan itu. Jaminan kualitas dan tim keamanan juga dapat terintegrasi dengan tim-tim ini. Organisasi yang menggunakan model DevOps, terlepas dari struktur organisasinya, memiliki tim yang memandang seluruh siklus pengembangan dan infrastruktur sebagai bagian dari tanggung jawab mereka.
Praktik DevOps
Ada beberapa praktik utama yang membantu organisasi berinovasi lebih cepat melalui otomatisasi dan perampingan proses pengembangan perangkat lunak dan infrastruktur. Sebagian besar praktik ini dilakukan dengan perangkat yang tepat.
Salah satu praktik mendasar adalah melakukan pembaruan yang sangat sering tetapi kecil. Inilah cara organisasi berinovasi lebih cepat untuk pelanggan mereka. Pembaruan ini biasanya lebih bersifat inkremental daripada pembaruan sesekali yang dilakukan di bawah praktik rilis tradisional.Pembaruan yang sering namun kecil membuat setiap deployment lebih berisiko. Mereka membantu tim mengatasi bug lebih cepat karena tim dapat mengidentifikasi deployment terakhir yang menyebabkan kesalahan. Meskipun irama dan ukuran pembaruan akan bervariasi, organisasi yang menggunakan model DevOps deployment pembaruan jauh lebih sering daripada organisasi yang menggunakan praktik pengembangan perangkat lunak tradisional.
Organisasi mungkin juga menggunakan arsitektur microservices untuk membuat aplikasi mereka lebih fleksibel dan memungkinkan inovasi yang lebih cepat. Arsitektur microservices memisahkan sistem yang besar dan kompleks menjadi proyek yang sederhana dan independen. Aplikasi dipecah menjadi banyak komponen individu (layanan) dengan setiap layanan dicakup untuk satu tujuan atau fungsi dan dioperasikan secara independen dari layanan rekannya dan aplikasi secara keseluruhan. Arsitektur ini mengurangi overhead koordinasi untuk memperbarui aplikasi, dan ketika setiap layanan dipasangkan dengan tim kecil yang gesit yang memiliki kepemilikan atas setiap layanan, organisasi dapat bergerak lebih cepat.
Namun, kombinasi dari microservices dan peningkatan frekuensi rilis mengarah ke deployment yang lebih signifikan yang dapat menghadirkan tantangan operasional. Dengan demikian, praktik-praktik DevOps seperti continuous integration dan continuous delivery menyelesaikan masalah-masalah ini dan memungkinkan organisasi memberikan secara cepat dengan cara yang aman dan andal. Praktik otomatisasi infrastruktur, seperti infrastructure as code dan configuration management, membantu menjaga sumber daya komputasi tetap elastis dan responsif terhadap perubahan yang sering terjadi. Selain itu, penggunaan monitoring dan logging membantu engineer melacak kinerja aplikasi dan infrastruktur sehingga mereka dapat bereaksi dengan cepat terhadap masalah.
Bersama-sama, praktik-praktik ini membantu organisasi memberikan pembaruan yang lebih cepat dan lebih dapat diandalkan untuk pelanggan mereka.
Berikut ini adalah praktik terbaik DevOps:
- Continuous Integration
- Continuous Delivery
- Microservices
- Infrastructure as Code
- Monitoring and Logging
- Communication and Collaboration
Continuous Integration
Continuous integration adalah praktik pengembangan perangkat lunak di mana pengembang secara teratur menggabungkan perubahan kode mereka ke dalam repositori pusat, setelah itu pembuatan dan pengujian otomatis dijalankan. Tujuan utama dari Continuous Integration adalah untuk menemukan dan mengatasi bug lebih cepat, meningkatkan kualitas perangkat lunak, dan mengurangi waktu yang diperlukan untuk memvalidasi dan merilis pembaruan perangkat lunak baru.
Continuous Delivery
Continuous Delivery adalah praktik pengembangan perangkat lunak di mana perubahan kode secara otomatis dibuat, diuji, dan disiapkan untuk rilis ke produksi. Ini berkembang setelah continuous integration dengan deploying semua perubahan kode ke lingkungan pengujian (testing environment) dan / atau lingkungan produksi (production environment) setelah tahap pembuatan (built stage). Ketika continuous delivery diimplementasikan dengan benar, pengembang akan selalu memiliki deployment-ready build artifact yang telah melewati proses pengujian standar.
Microservices
Arsitektur microservices adalah pendekatan desain untuk membangun satu aplikasi sebagai satu set layanan kecil. Setiap layanan berjalan dalam prosesnya sendiri dan berkomunikasi dengan layanan lain melalui antarmuka yang terdefinisi dengan baik menggunakan mekanisme yang ringan, biasanya application programming interface (API) berbasis HTTP. Microservices dibangun berdasarkan kemampuan bisnis; setiap layanan dibatasi untuk satu tujuan. Anda dapat menggunakan kerangka kerja yang berbeda atau bahasa pemrograman untuk menulis microservices dan deploy secara mandiri, sebagai layanan tunggal, atau sebagai kelompok layanan.
Infrastructure as Code
Infrastructure as Code adalah praktik di mana infrastruktur disediakan dan dikelola menggunakan teknik pengembangan kode dan perangkat lunak, seperti version kontrol dan continuous integration. Model cloud-driven API memungkinkan pengembang dan administrator sistem untuk berinteraksi dengan infrastruktur secara terprogram, dan pada skala, alih-alih perlu mengatur dan mengkonfigurasi sumber daya secara manual. Dengan demikian, para insinyur dapat berinteraksi dengan infrastruktur menggunakan tools berbasis kode dan memperlakukan infrastruktur dengan cara yang mirip dengan cara mereka memperlakukan kode aplikasi. Karena mereka ditentukan oleh kode, infrastruktur dan server dapat dengan cepat dikerahkan menggunakan pola standar, diperbarui dengan tambalan (patches) dan versi terbaru, atau digandakan dengan cara yang berulang.
Configuration Management
Pengembang dan administrator sistem menggunakan kode untuk mengotomatisasi konfigurasi sistem operasi dan host, tugas operasional, dan banyak lagi. Penggunaan kode membuat perubahan konfigurasi berulang dan terstandarisasi. Ini membebaskan pengembang dan administrator sistem dari mengkonfigurasi sistem operasi, aplikasi sistem, atau perangkat lunak server secara manual.
Policy as Code
Dengan infrastruktur dan konfigurasinya yang dikodifikasikan dengan cloud, organisasi dapat memantau dan menegakkan kepatuhan secara dinamis dan berskala besar. Infrastruktur yang dijelaskan oleh kode dengan demikian dapat dilacak, divalidasi, dan dikonfigurasi ulang dengan cara otomatis. Ini membuatnya lebih mudah bagi organisasi untuk mengatur perubahan atas sumber daya dan memastikan bahwa langkah-langkah keamanan ditegakkan dengan benar dengan cara yang didistribusikan (mis. Keamanan informasi atau kepatuhan dengan PCI-DSS atau HIPAA). Hal ini memungkinkan tim dalam organisasi untuk bergerak dengan kecepatan lebih tinggi karena sumber daya yang tidak patuh dapat secara otomatis ditandai untuk penyelidikan lebih lanjut atau bahkan secara otomatis dibawa kembali ke kepatuhan.
Monitoring and Logging
Organisasi memantau metrik dan log untuk melihat bagaimana kinerja aplikasi dan infrastruktur memengaruhi pengalaman pengguna akhir produk mereka. Dengan menangkap, mengelompokkan, dan kemudian menganalisis data dan log yang dihasilkan oleh aplikasi dan infrastruktur, organisasi memahami bagaimana perubahan atau pembaruan berdampak pada pengguna, mencurahkan wawasan ke akar penyebab masalah atau perubahan tak terduga. Pemantauan aktif menjadi semakin penting karena layanan harus tersedia 24/7 dan seiring meningkatnya frekuensi pembaruan aplikasi dan infrastruktur. Membuat peringatan atau melakukan analisis data real-time ini juga membantu organisasi lebih proaktif memantau layanan mereka.
Communication and Collaboration
Peningkatan komunikasi dan kolaborasi dalam suatu organisasi adalah salah satu aspek budaya utama dari DevOps. Penggunaan perangkat DevOps dan otomatisasi proses pengiriman perangkat lunak menjalin kolaborasi dengan secara fisik menyatukan alur kerja dan tanggung jawab pengembangan dan operasi. Selain itu, tim-tim ini menetapkan norma budaya yang kuat di seputar berbagi informasi dan memfasilitasi komunikasi melalui penggunaan aplikasi obrolan, sistem pelacakan masalah atau proyek, dan wiki. Ini membantu mempercepat komunikasi lintas pengembang, operasi, dan bahkan tim lain seperti pemasaran atau penjualan, memungkinkan semua bagian organisasi untuk menyelaraskan lebih dekat pada tujuan dan proyek.
DevOps Tools
Beberapa tools yang digunakan dalam model DevOps:
- Planning Tools: JIRA, Redmine, Trac, Rally, dsb.
- Building Tools: Apache Maven, Apache Ant, Gulp, Travis CI, dsb.
- CI/CD: Jenkins, Bamboo, Circle CI, Travis CI, Codeship, dsb.
- Version Control & Repository Tools: Git, GitHub, Bitbucket, GitLab.
- Configuration Management Tools: Ansible, Salt, Chef, Puppet, dsb.
- Cotainer Tools: Docker, Kubernetes, LXD, OpenVZ, Apache Mesos, dsb.
- Monitoring Tools: New Relic, ElasticSearch, Kibana, Graphite, Icinga, dsb.
- Log Management Tools: Graylog, Logsense, Sentry, Logstash, Loggly, dsb.
- Communication/Collaboration Tools: Asana, Slack, GoToMeeting, Trello, Basecamp, Microsoft Teams, dsb.
7 Langkah dalam Memilih DevOps Tools yang Tepat
- Memahami strategi kolaborasi dan shared tools untuk tim development, QA (Quality Assurance), dan tim operasi.
- Gunakan tools untuk merekam setiap permintaan perubahan perangkat lunak.
- Gunakan manajemen proyek Kanban untuk permintaan otomatisasi dan DevOps.
- Gunakan tools untuk mencatat metrik pada proses manual dan otomatis.
- Menerapkan test automation dan test data provisioning tools.
- Lakukan acceptance test untuk setiap deployment tooling.
- Pastikan feedback terus menerus antara tim untuk menemukan kesenjangan, masalah, dan ketidakefisienan.
Referensi
Keren pak tulisannya sangat informatif, terima kasih banyak .
Saya yang baru belajar jadi sysAdmin makin semangat .