Panduan pemula untuk DevOps

Apa pentingnya DevOps, apa artinya bagi para profesional TI, deskripsi metode, kerangka kerja, dan alat.



gambar



Banyak yang telah terjadi sejak istilah DevOps mengakar di dunia IT. Mengingat bahwa sebagian besar ekosistem adalah sumber terbuka, penting untuk meninjau mengapa ia dimulai dan apa artinya bagi karier di bidang TI.



Apa itu DevOps



Meskipun tidak ada definisi tunggal, saya percaya bahwa DevOps adalah kerangka kerja teknologi yang memungkinkan interaksi antara tim pengembangan dan tim operasi untuk menyebarkan kode ke lingkungan produksi lebih cepat, dengan langkah dan otomatisasi yang berulang. Kami akan menghabiskan sisa artikel membongkar pernyataan ini.



Kata "DevOps" adalah gabungan dari kata "pengembangan" dan "operasi". DevOps membantu meningkatkan kecepatan pengiriman aplikasi dan layanan. Ini memungkinkan organisasi untuk secara efektif melayani pelanggan mereka dan menjadi lebih kompetitif di pasar. Sederhananya, DevOps adalah koherensi antara pengembangan dan operasi TI dengan kolaborasi dan kolaborasi yang lebih efektif.



DevOps membayangkan budaya di mana kolaborasi antara tim pengembangan, operator dan tim bisnis dianggap penting. Ini bukan hanya tentang alat, karena DevOps dalam suatu organisasi terus menguntungkan pelanggan juga. Alat adalah salah satu pilarnya, bersama dengan orang dan proses. DevOps memberdayakan organisasi untuk memberikan solusi berkualitas tinggi dalam waktu sesingkat mungkin. DevOps juga mengotomatiskan semua proses, mulai dari pembuatan hingga penggunaan, aplikasi atau produk.



Diskusi DevOps berfokus pada hubungan antara pengembang, orang-orang yang menulis perangkat lunak seumur hidup, dan operator yang bertanggung jawab untuk memelihara perangkat lunak itu.



Tantangan untuk tim pengembangan



Pengembang cenderung antusias dan bersedia memperkenalkan pendekatan dan teknologi baru untuk menyelesaikan masalah organisasi. Namun, mereka juga menghadapi tantangan tertentu:



  • Pasar yang kompetitif menciptakan banyak tekanan untuk mengantarkan produk tepat waktu.
  • Mereka harus berhati-hati dalam mengelola kode siap-produksi dan memperkenalkan fitur-fitur baru.
  • Siklus rilis bisa panjang, sehingga tim pengembangan harus membuat beberapa asumsi sebelum menggunakan aplikasi. Dalam skenario seperti itu, lebih banyak waktu diperlukan untuk menyelesaikan masalah yang muncul selama penempatan di lingkungan produksi atau pengujian.


Tantangan yang dihadapi tim operasi



Tim operasi secara historis berfokus pada stabilitas dan keandalan layanan TI. Itulah sebabnya tim operasional mencari stabilitas melalui perubahan sumber daya, teknologi, atau pendekatan. Tugas mereka meliputi:



  • Kelola alokasi sumber daya seiring meningkatnya permintaan.
  • Menangani perubahan desain atau penyesuaian yang diperlukan untuk diterapkan dalam lingkungan produksi.
  • Diagnosis dan selesaikan masalah terkait produksi setelah penerapan sendiri


Bagaimana DevOps Memecahkan Tantangan Pembangunan dan Operasi



Alih-alih meluncurkan sejumlah besar fitur aplikasi sekaligus, perusahaan berusaha mencari tahu apakah mereka dapat meluncurkan sejumlah kecil fitur kepada pelanggan mereka melalui serangkaian iterasi rilis. Pendekatan ini memiliki beberapa keunggulan, seperti kualitas perangkat lunak yang lebih baik, umpan balik pelanggan yang lebih cepat, dll. Ini, pada gilirannya, memastikan tingkat kepuasan pelanggan yang tinggi. Untuk mencapai tujuan ini, perusahaan diharuskan untuk:



  • Kurangi rasio pentalan untuk rilis baru
  • Tingkatkan frekuensi penempatan
  • Dapatkan waktu pemulihan rata-rata yang lebih cepat jika rilis aplikasi baru.
  • Kurangi waktu perbaikan


DevOps menyelesaikan semua tugas ini dan membantu memastikan pasokan yang tidak terputus. Organisasi menggunakan DevOps untuk mencapai tingkat kinerja yang tidak terpikirkan beberapa tahun yang lalu. Mereka melakukan lusinan, ratusan, dan bahkan ribuan penyebaran per hari, sambil memberikan keandalan, stabilitas, dan keamanan kelas dunia. (Pelajari lebih lanjut tentang ukuran bets dan dampaknya terhadap pengiriman perangkat lunak).



DevOps berupaya untuk mengatasi berbagai masalah yang timbul dari metodologi masa lalu, termasuk:



  • Isolasi karya tim pengembangan dan operator
  • Pengujian dan penerapan sebagai fase terpisah, dilakukan setelah desain dan pembuatan, dan membutuhkan waktu lebih lama dari siklus pembuatan.
  • , -
  • ,
  • ,


gambar



DevOps, Agile IT



DevOps sering dibahas sehubungan dengan praktik TI lainnya, khususnya, infrastruktur TI yang fleksibel dan air terjun.



Agile adalah seperangkat prinsip, nilai, dan metode untuk menghasilkan perangkat lunak. Jadi, misalnya, jika Anda memiliki ide yang ingin dikonversi menjadi perangkat lunak, Anda dapat menggunakan prinsip dan nilai Agile. Tetapi perangkat lunak ini hanya dapat bekerja di lingkungan pengembangan atau pengujian. Anda memerlukan cara sederhana dan aman untuk secara cepat dan dengan perangkat lunak transfer pengulangan yang tinggi ke lingkungan produksi, dan jalurnya terletak pada alat dan metode DevOps. Pengembangan perangkat lunak yang gesit berfokus pada proses pengembangan, sementara DevOps bertanggung jawab untuk pengembangan dan penyebaran dengan cara yang paling aman dan paling dapat diandalkan.



Membandingkan model air terjun tradisional dengan DevOps adalah cara yang baik untuk memahami manfaat yang diberikan DevOps. Contoh berikut mengasumsikan bahwa aplikasi akan aktif dan berjalan dalam empat minggu, pengembangannya 85% selesai, aplikasi akan aktif dan berjalan, dan proses pembelian server untuk mengirimkan kode baru saja dimulai.



Proses tradisional Proses dalam DevOps
Setelah melakukan pemesanan untuk server baru, tim pengembangan sedang mengerjakan pengujian. Kelompok fokus sedang mengerjakan dokumentasi ekstensif yang dibutuhkan perusahaan untuk menggunakan infrastruktur. Setelah melakukan pemesanan untuk server baru, tim pengembangan dan operator bekerja sama dalam proses dan alur kerja untuk menginstal server baru. Ini memungkinkan pemahaman yang lebih baik tentang persyaratan infrastruktur.

, , , , . , , , .
. .

Tim operasional sepenuhnya menyadari kemajuan yang dibuat oleh tim pengembangan. Dia juga berinteraksi dengan tim pengembangan dan mereka bersama-sama mengembangkan rencana pemantauan yang memenuhi kebutuhan TI dan bisnis. Mereka juga menggunakan alat Pemantauan Kinerja Aplikasi (APM).

Tes stres sebelum meluncurkan aplikasi menyebabkan aplikasi macet, yang menunda peluncurannya. Tes stres yang dilakukan sebelum memulai aplikasi menurunkan kinerja. Tim pengembang dengan cepat menghilangkan hambatan dan aplikasi diluncurkan tepat waktu.




DevOps siklus hidup



DevOps melibatkan mengadopsi praktik-praktik tertentu yang diterima secara umum.



Perencanaan berkelanjutan



Perencanaan berkelanjutan bergantung pada prinsip lean untuk memulai dari yang kecil dengan mengidentifikasi sumber daya dan hasil yang diperlukan untuk memvalidasi nilai atau visi bisnis, terus beradaptasi, mengukur kemajuan, belajar dari kebutuhan pelanggan, mengubah arah sesuai kebutuhan untuk kelincahan, dan memperbarui. rencana bisnis.



Pengembangan bersama



Proses pengembangan kolaboratif memungkinkan bisnis, tim pengembangan, dan tim pengujian di berbagai zona waktu untuk menghadirkan perangkat lunak berkualitas secara terus menerus. Ini termasuk pengembangan multi-platform, dukungan pemrograman dalam berbagai bahasa, membuat kisah pengguna, mengembangkan ide, dan mengelola siklus hidup. Pengembangan kolaboratif mencakup proses dan praktik integrasi berkelanjutan, yang berkontribusi pada seringnya integrasi kode dan perakitan otomatis. Dengan injeksi kode yang sering, masalah integrasi diidentifikasi sejak awal siklus hidup (ketika mereka lebih mudah untuk diperbaiki), dan upaya integrasi keseluruhan dikurangi melalui umpan balik berkelanjutan karena proyek menunjukkan kemajuan yang berkelanjutan dan terlihat.



Pengujian berkelanjutan



Pengujian berkelanjutan mengurangi biaya pengujian, membantu tim pengembangan menyeimbangkan antara kecepatan dan kualitas. Ini juga menghilangkan hambatan uji melalui virtualisasi layanan dan membuatnya mudah untuk membuat lingkungan uji tervirtualisasi yang dapat dengan mudah dibagikan, digunakan, dan diperbarui saat sistem berubah. Kemampuan ini mengurangi biaya inisialisasi dan memelihara lingkungan pengujian dan juga mempersingkat waktu siklus pengujian dengan memungkinkan pengujian integrasi di awal siklus hidup.



Rilis dan penerapan berkelanjutan



Teknik-teknik ini memperkenalkan salah satu praktik utama: pelepasan dan penyebaran berkelanjutan. Ini menyediakan jalur pipa kontinu yang mengotomatiskan proses-proses utama. Ini mengurangi jumlah operasi manual, waktu tunggu sumber daya dan jumlah pengerjaan ulang, yang memungkinkan Anda untuk menggunakan klik tombol, yang menyediakan lebih banyak rilis, lebih sedikit kesalahan dan transparansi lengkap.



Otomasi memainkan peran penting dalam memastikan pengiriman perangkat lunak yang stabil dan andal. Salah satu tugas paling penting adalah mengadopsi proses manual, seperti perakitan, regresi, penyebaran dan pembuatan infrastruktur, dan mengotomatiskannya. Ini memerlukan kontrol versi kode sumber; skrip pengujian dan penerapan; infrastruktur dan data konfigurasi aplikasi; serta pustaka dan paket yang bergantung pada aplikasi. Faktor penting lainnya adalah kemampuan untuk menanyakan keadaan semua lingkungan.



Pemantauan berkelanjutan



Pemantauan berkelanjutan memberikan laporan tingkat perusahaan yang membantu tim pengembangan memahami ketersediaan dan kinerja aplikasi dalam lingkungan produksi sebelum digunakan untuk produksi. Umpan balik awal, yang disediakan oleh pemantauan berkelanjutan, sangat penting untuk mengurangi biaya kesalahan dan mengarahkan proyek ke arah yang benar. Praktik ini sering mencakup alat pemantauan, yang biasanya mengungkapkan metrik yang terkait dengan kinerja aplikasi.



Umpan balik dan pengoptimalan yang konstan



Umpan balik dan pengoptimalan berkelanjutan memberikan representasi visual dari alur pelanggan dan menunjukkan dengan tepat area masalah. Umpan balik dapat dimasukkan dalam tahap pra-penjualan dan pasca-produksi untuk memaksimalkan nilai dan memastikan penyelesaian yang berhasil dari lebih banyak transaksi. Semua ini memberikan visualisasi langsung dari akar penyebab masalah pelanggan yang mempengaruhi perilaku dan dampaknya terhadap bisnis.



gambar



Manfaat DevOps



DevOps dapat membantu menciptakan lingkungan di mana pengembang dan operator bekerja sebagai tim untuk mencapai tujuan bersama. Tonggak penting dalam proses ini adalah pengenalan integrasi berkelanjutan dan pengiriman kontinu (CI / CD). Teknik-teknik ini akan memungkinkan tim untuk dengan cepat membawa perangkat lunak ke pasar dengan bug yang lebih sedikit.



Manfaat penting dari DevOps adalah:



  • Prediktabilitas: DevOps menawarkan tingkat kegagalan yang jauh lebih rendah untuk rilis baru.
  • Maintainability: DevOps menyediakan pemulihan yang mudah jika terjadi kegagalan rilis baru atau pemadaman aplikasi.
  • Reproducibilitas: Sistem kontrol perakitan atau revisi kode memungkinkan Anda untuk mengembalikan versi sebelumnya sesuai kebutuhan.
  • Kualitas lebih tinggi: Memecahkan masalah infrastruktur meningkatkan kualitas pengembangan aplikasi.
  • : 50%.
  • : .
  • : .
  • : , , .
  • : DevOps , .


DevOps



Adopsi DevOps melahirkan beberapa prinsip yang telah berevolusi (dan terus berevolusi). Sebagian besar penyedia solusi telah mengembangkan modifikasi mereka sendiri ke berbagai teknik. Semua prinsip ini didasarkan pada pendekatan holistik untuk DevOps, dan organisasi dari semua ukuran dapat menggunakannya.



Kembangkan dan uji dalam lingkungan seperti produksi



Intinya adalah untuk memungkinkan tim pengembangan dan QA untuk mengembangkan dan menguji sistem yang berperilaku seperti sistem produksi sehingga mereka dapat melihat bagaimana aplikasi berperilaku dan bekerja jauh sebelum siap untuk ditempatkan ...



Aplikasi harus terhubung ke sistem produksi sedini mungkin selama siklus hidupnya untuk mengatasi tiga masalah potensial utama. Pertama, ini memungkinkan Anda untuk menguji aplikasi Anda di lingkungan yang mirip dengan lingkungan nyata. Kedua, ini memungkinkan Anda untuk menguji dan memvalidasi proses pengiriman aplikasi Anda terlebih dahulu. Ketiga, memungkinkan tim operasi untuk menguji di awal siklus hidup bagaimana lingkungan mereka akan berperilaku ketika aplikasi dikerahkan, sehingga memungkinkan mereka untuk menciptakan lingkungan aplikasi-sentris yang sangat dapat disesuaikan.



Penempatan dengan proses yang dapat direproduksi dan andal



Prinsip ini memungkinkan tim pengembang dan pengembangan untuk mempertahankan proses pengembangan perangkat lunak yang gesit di seluruh siklus hidup. Otomasi sangat penting untuk menciptakan proses berulang, andal, dan dapat direproduksi. Oleh karena itu, organisasi harus membuat jalur pengiriman yang memungkinkan penerapan dan pengujian otomatis berkelanjutan. Pemasangan yang sering juga memungkinkan tim untuk menguji proses penempatan, sehingga mengurangi risiko kegagalan penempatan selama rilis yang sebenarnya.



Pemantauan dan kontrol kualitas kerja



Organisasi pandai memonitor aplikasi produksi karena mereka memiliki alat yang menangkap indikator kinerja utama waktu nyata dan indikator kinerja utama (KPI). Prinsip ini membawa pemantauan di awal siklus hidup, memastikan bahwa pengujian otomatis melacak atribut fungsional dan non-fungsional suatu aplikasi di awal proses. Setiap kali suatu aplikasi diuji dan digunakan, indikator kualitas perlu dipelajari dan dianalisis. Alat pemantauan memberikan peringatan dini terhadap masalah operasional dan kualitas yang mungkin timbul selama produksi. Indikator-indikator ini harus dikumpulkan dalam format yang dapat diakses dan dipahami oleh semua pemangku kepentingan.



Meningkatkan putaran umpan balik



Salah satu tujuan dari proses DevOps adalah untuk memungkinkan organisasi merespons lebih cepat dan membuat perubahan lebih cepat. Dalam pengiriman perangkat lunak, tujuan ini mengharuskan organisasi untuk menerima umpan balik awal dan kemudian dengan cepat belajar dari setiap tindakan yang diambil. Prinsip ini mengharuskan organisasi untuk membuat saluran komunikasi yang memungkinkan pemangku kepentingan untuk mengakses dan berinteraksi berdasarkan umpan balik. Pengembangan dapat dilakukan dengan menyesuaikan rencana atau prioritas proyek mereka. Manufaktur dapat bertindak dengan meningkatkan lingkungan kerja.



Dev



  • Penjadwalan: Kanboard, Wekan, dan alternatif Trello lainnya GitLab, Tuleap, Redmine, dan alternatif JIRA lainnya; Mattermost, Roit.im, IRC dan alternatif Slack lainnya.
  • : Git, Gerrit, Bugzilla; Jenkins CI/CD
  • : Apache Maven, Gradle, Apache Ant, Packer
  • : JUnit, Cucumber, Selenium, Apache JMeter




Ops



  • , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,


(* , . .)





DevOps adalah metodologi yang semakin populer yang tujuannya adalah untuk menyatukan pengembang dan operator. Ini unik, berbeda dari operasi TI tradisional, dan saling melengkapi dengan Agile (tetapi tidak sefleksibel).



gambar



Pelajari detail cara mendapatkan profesi yang dicari dari awal atau Tingkatkan keterampilan dan gaji dengan menyelesaikan kursus online berbayar SkillFactory:





lebih banyak kursus


Berguna






All Articles