Panduan DevOps untuk Pemula

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

Panduan DevOps untuk Pemula

Banyak hal telah terjadi sejak istilah DevOps mulai berlaku di dunia IT. Dengan banyaknya ekosistem open source, penting untuk mempertimbangkan kembali mengapa hal ini 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 kolaborasi antara tim pengembangan dan operasi untuk menyebarkan kode lebih cepat ke dalam lingkungan produksi dengan kemampuan untuk melakukan iterasi dan otomatisasi. Kami akan menghabiskan sisa artikel ini untuk membongkar klaim ini.

Kata β€œDevOps” merupakan gabungan dari kata β€œpengembangan” dan β€œoperasi”. DevOps membantu meningkatkan kecepatan pengiriman aplikasi dan layanan. Hal ini memungkinkan organisasi untuk melayani pelanggan mereka secara efektif dan menjadi lebih kompetitif di pasar. Sederhananya, DevOps adalah penyelarasan antara pengembangan dan operasional TI dengan komunikasi dan kolaborasi yang lebih efektif.

DevOps melibatkan budaya di mana kolaborasi antara tim pengembangan, operasi, dan bisnis dianggap penting. Ini bukan hanya tentang alat, karena DevOps dalam suatu organisasi juga terus memberikan manfaat bagi pelanggan. Alat adalah salah satu pilarnya, bersama dengan manusia dan proses. DevOps meningkatkan kemampuan organisasi untuk memberikan solusi berkualitas tinggi dalam waktu sesingkat mungkin. DevOps juga mengotomatiskan semua proses, mulai dari pembuatan hingga penerapan, aplikasi, atau produk.

Diskusi DevOps berfokus pada hubungan antara pengembang, orang-orang yang menulis perangkat lunak untuk mencari nafkah, dan operator yang bertanggung jawab memelihara perangkat lunak tersebut.

Tantangan bagi tim pengembangan

Pengembang cenderung antusias dan bersemangat untuk menerapkan pendekatan dan teknologi baru untuk memecahkan masalah organisasi. Namun, mereka juga menghadapi masalah-masalah tertentu:

  • Pasar yang kompetitif menciptakan banyak tekanan untuk mengirimkan produk tepat waktu.
  • Mereka harus mengurus pengelolaan kode siap produksi dan memperkenalkan fitur-fitur baru.
  • Siklus rilisnya bisa lama, sehingga tim pengembangan harus membuat beberapa asumsi sebelum mengimplementasikan aplikasi. Dalam skenario ini, diperlukan lebih banyak waktu untuk menyelesaikan masalah yang muncul selama penerapan ke lingkungan produksi atau pengujian.

Tantangan yang dihadapi oleh tim operasi

Tim operasi secara historis berfokus pada stabilitas dan keandalan layanan TI. Itu sebabnya tim operasi 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 digunakan dalam lingkungan produksi.
  • Mendiagnosis dan menyelesaikan masalah produksi setelah penerapan mandiri aplikasi.

Bagaimana DevOps memecahkan masalah pengembangan dan operasi

Daripada meluncurkan sejumlah besar fitur aplikasi sekaligus, perusahaan mencoba melihat apakah mereka dapat meluncurkan sejumlah kecil fitur kepada pelanggan mereka melalui serangkaian iterasi rilis. Pendekatan ini memiliki sejumlah keuntungan, seperti kualitas perangkat lunak yang lebih baik, umpan balik pelanggan yang lebih cepat, dll. Hal ini, pada gilirannya, menjamin kepuasan pelanggan yang tinggi. Untuk mencapai tujuan tersebut, perusahaan diharuskan untuk:

  • Kurangi tingkat kegagalan saat merilis rilis baru
  • Tingkatkan frekuensi penerapan
  • Mencapai waktu rata-rata pemulihan yang lebih cepat jika terjadi rilis aplikasi baru.
  • Kurangi waktu untuk koreksi

DevOps melakukan semua tugas ini dan membantu memastikan pengiriman tidak terganggu. Organisasi menggunakan DevOps untuk mencapai tingkat produktivitas yang tidak terbayangkan beberapa tahun lalu. Mereka melakukan puluhan, ratusan, dan bahkan ribuan penerapan per hari sambil memberikan keandalan, stabilitas, dan keamanan kelas dunia. (Pelajari lebih lanjut tentang ukuran lot dan dampaknya terhadap pengiriman perangkat lunak).

DevOps berupaya memecahkan berbagai masalah akibat metodologi masa lalu, termasuk:

  • Isolasi pekerjaan antara tim pengembangan dan operasi
  • Pengujian dan penerapan adalah fase terpisah yang terjadi setelah desain dan pembuatan serta memerlukan lebih banyak waktu dibandingkan siklus pembuatan.
  • Terlalu banyak waktu yang dihabiskan untuk menguji, menerapkan, dan merancang alih-alih berfokus pada membangun layanan bisnis inti
  • Penerapan kode manual menyebabkan kesalahan dalam produksi
  • Perbedaan jadwal tim pengembangan dan operasi menyebabkan penundaan tambahan

Panduan DevOps untuk Pemula

Konfrontasi antara DevOps, Agile, dan TI tradisional

DevOps sering dibahas terkait dengan praktik TI lainnya, khususnya TI Agile dan Waterfall.

Agile adalah seperangkat prinsip, nilai, dan praktik untuk produksi perangkat lunak. Jadi, misalnya, jika Anda memiliki ide yang ingin diubah menjadi perangkat lunak, Anda dapat menggunakan prinsip dan nilai Agile. Namun perangkat lunak ini hanya dapat berjalan di lingkungan pengembangan atau pengujian. Anda memerlukan cara yang sederhana dan aman untuk memindahkan perangkat lunak Anda ke produksi dengan cepat dan berulang, dan caranya adalah melalui alat dan teknik DevOps. Pengembangan perangkat lunak tangkas berfokus pada proses pengembangan dan DevOps bertanggung jawab atas pengembangan dan penerapan dengan cara yang paling aman dan andal.

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

Proses tradisional
Proses di DevOps

Setelah melakukan pemesanan untuk server baru, tim pengembangan mengerjakan pengujian. Gugus tugas ini mengerjakan dokumentasi ekstensif yang diperlukan oleh perusahaan untuk menerapkan infrastruktur.
Setelah pesanan untuk server baru dilakukan, tim pengembangan dan operasi bekerja sama dalam proses dan dokumen untuk menginstal server baru. Hal ini memungkinkan Anda untuk lebih memahami kebutuhan infrastruktur Anda.

Informasi tentang failover, redundansi, lokasi pusat data, dan persyaratan penyimpanan disalahartikan karena tidak ada masukan dari tim pengembangan yang memiliki pengetahuan domain mendalam.
Detail tentang failover, redundansi, pemulihan bencana, lokasi pusat data, dan persyaratan penyimpanan diketahui dan benar karena masukan dari tim pengembangan.

Tim operasi tidak mengetahui kemajuan tim pengembangan. Dia juga mengembangkan rencana pemantauan berdasarkan idenya sendiri.

Tim operasi sepenuhnya menyadari kemajuan yang dibuat oleh tim pengembangan. Dia juga berinteraksi dengan tim pengembangan dan mereka bekerja sama untuk mengembangkan rencana pemantauan yang memenuhi kebutuhan TI dan bisnis. Mereka juga menggunakan alat pemantauan kinerja aplikasi (APM).

Uji beban yang dilakukan sebelum aplikasi diluncurkan menyebabkan aplikasi mogok, sehingga menunda peluncurannya.
Tes beban yang dilakukan sebelum menjalankan aplikasi menghasilkan kinerja yang buruk. Tim pengembangan dengan cepat mengatasi kemacetan dan aplikasi diluncurkan tepat waktu.

Siklus Hidup DevOps

DevOps melibatkan penerapan praktik tertentu yang diterima secara umum.

Perencanaan berkelanjutan

Perencanaan berkelanjutan bergantung pada prinsip lean untuk memulai dari yang kecil dengan mengidentifikasi sumber daya dan keluaran yang diperlukan untuk menguji nilai bisnis atau visi, terus beradaptasi, mengukur kemajuan, belajar dari kebutuhan pelanggan, mengubah arah sesuai kebutuhan untuk mengakomodasi ketangkasan, dan menemukan kembali rencana bisnis.

Pengembangan bersama

Proses pengembangan kolaboratif memungkinkan bisnis, tim pengembangan, dan tim pengujian yang tersebar di zona waktu berbeda untuk terus menghadirkan perangkat lunak berkualitas. Ini termasuk pengembangan multi-platform, dukungan pemrograman lintas bahasa, pembuatan cerita pengguna, pengembangan ide, dan manajemen siklus hidup. Pengembangan kolaboratif mencakup proses dan praktik integrasi berkelanjutan, yang mendorong integrasi kode secara berkala dan pembuatan otomatis. Dengan menerapkan kode secara sering ke suatu aplikasi, masalah integrasi diidentifikasi pada awal siklus hidup (saat masalah tersebut lebih mudah diperbaiki) dan upaya integrasi keseluruhan dikurangi melalui umpan balik yang berkelanjutan saat proyek menunjukkan kemajuan yang berkelanjutan dan terlihat.

Pengujian berkelanjutan

Pengujian berkelanjutan mengurangi biaya pengujian dengan membantu tim pengembangan menyeimbangkan kecepatan dan kualitas. Hal ini juga menghilangkan hambatan pengujian melalui virtualisasi layanan dan memudahkan pembuatan lingkungan pengujian tervirtualisasi yang dapat dengan mudah dibagikan, diterapkan, dan diperbarui seiring perubahan sistem. Kemampuan ini mengurangi biaya penyediaan dan pemeliharaan lingkungan pengujian serta mempersingkat waktu siklus pengujian, sehingga pengujian integrasi dapat dilakukan lebih awal dalam siklus hidup.

Rilis dan penerapan berkelanjutan

Teknik-teknik ini membawa praktik inti: rilis dan penerapan berkelanjutan. Hal ini dipastikan melalui jalur berkelanjutan yang mengotomatisasi proses-proses utama. Ini mengurangi langkah-langkah manual, waktu tunggu sumber daya, dan pengerjaan ulang dengan mengaktifkan penerapan hanya dengan menekan satu tombol, sehingga menghasilkan lebih banyak rilis, lebih sedikit kesalahan, dan transparansi penuh.

Otomatisasi memainkan peran penting dalam memastikan rilis perangkat lunak yang stabil dan andal. Salah satu tantangan terbesarnya adalah melakukan proses manual seperti pembangunan, regresi, penerapan, dan pembuatan infrastruktur serta mengotomatiskannya. Ini memerlukan kontrol versi kode sumber; skenario pengujian dan penerapan; data konfigurasi infrastruktur dan aplikasi; dan perpustakaan serta paket tempat aplikasi bergantung. Faktor penting lainnya adalah kemampuan untuk menanyakan keadaan semua lingkungan.

Pemantauan terus menerus

Pemantauan berkelanjutan memberikan pelaporan tingkat perusahaan yang membantu tim pengembangan memahami ketersediaan dan kinerja aplikasi di lingkungan produksi sebelum diterapkan ke produksi. Umpan balik awal yang diberikan melalui pemantauan berkelanjutan sangat penting untuk mengurangi biaya kesalahan dan mengarahkan proyek ke arah yang benar. Praktik ini sering kali mencakup alat pemantauan yang biasanya mengungkapkan metrik yang terkait dengan kinerja aplikasi.

Umpan balik dan pengoptimalan yang konstan

Umpan balik dan pengoptimalan yang berkelanjutan memberikan representasi visual tentang aliran pelanggan dan menunjukkan area masalah dengan tepat. Umpan balik dapat disertakan dalam tahap pra dan pasca penjualan untuk memaksimalkan nilai dan memastikan lebih banyak transaksi berhasil diselesaikan. Semua ini memberikan visualisasi langsung tentang akar permasalahan pelanggan yang memengaruhi perilaku dan dampak bisnis mereka.

Panduan DevOps untuk Pemula

Manfaat DevOps

DevOps dapat membantu menciptakan lingkungan tempat pengembang dan operasi bekerja sebagai satu tim untuk mencapai tujuan bersama. Tonggak penting dalam proses ini adalah penerapan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Teknik-teknik ini akan memungkinkan tim memasarkan perangkat lunak lebih cepat dengan lebih sedikit bug.

Manfaat penting dari DevOps adalah:

  • Prediktabilitas: DevOps menawarkan tingkat kegagalan yang jauh lebih rendah untuk rilis baru.
  • Pemeliharaan: DevOps memungkinkan pemulihan yang mudah jika rilis baru gagal atau aplikasi tidak berfungsi.
  • Reproduksibilitas: Kontrol versi build atau kode memungkinkan Anda memulihkan versi sebelumnya sesuai kebutuhan.
  • Kualitas Lebih Tinggi: Mengatasi masalah infrastruktur akan meningkatkan kualitas pengembangan aplikasi.
  • Time to Market: Mengoptimalkan pengiriman perangkat lunak mengurangi waktu ke pasar sebesar 50%.
  • Pengurangan Risiko: Menerapkan keamanan dalam siklus hidup perangkat lunak mengurangi jumlah kerusakan sepanjang siklus hidup.
  • Efisiensi Biaya: Upaya mencapai efisiensi biaya dalam pengembangan perangkat lunak menarik bagi manajemen senior.
  • Stabilitas: Sistem perangkat lunak lebih stabil, aman, dan perubahan dapat diaudit.
  • Memecah basis kode yang lebih besar menjadi bagian-bagian yang dapat dikelola: DevOps didasarkan pada metode pengembangan tangkas, yang memungkinkan Anda memecah basis kode besar menjadi bagian-bagian yang lebih kecil dan dapat dikelola.

prinsip DevOps

Penerapan DevOps memunculkan beberapa prinsip yang telah berkembang (dan terus berkembang). Kebanyakan penyedia solusi telah mengembangkan modifikasi mereka sendiri terhadap berbagai teknik. Semua prinsip ini didasarkan pada pendekatan holistik terhadap DevOps, dan organisasi dengan ukuran berapa pun dapat menggunakannya.

Kembangkan dan uji dalam lingkungan seperti produksi

Idenya adalah untuk memungkinkan tim pengembangan dan jaminan kualitas (QA) mengembangkan dan menguji sistem yang berperilaku seperti sistem produksi sehingga mereka dapat melihat bagaimana aplikasi berperilaku dan bekerja jauh sebelum siap untuk diterapkan.

Aplikasi harus terhubung ke sistem produksi sedini mungkin dalam siklus hidupnya untuk mengatasi tiga potensi masalah utama. Pertama, ini memungkinkan Anda menguji aplikasi di lingkungan yang dekat dengan lingkungan nyata. Kedua, ini memungkinkan Anda menguji dan memvalidasi proses pengiriman aplikasi terlebih dahulu. Ketiga, hal ini memungkinkan tim operasi untuk menguji di awal siklus hidup bagaimana lingkungan mereka akan berperilaku ketika aplikasi diterapkan, sehingga memungkinkan mereka untuk menciptakan lingkungan yang sangat disesuaikan dan berpusat pada aplikasi.

Terapkan dengan proses yang berulang dan andal

Prinsip ini memungkinkan tim pengembangan dan operasi untuk mendukung proses pengembangan perangkat lunak yang tangkas di seluruh siklus hidup perangkat lunak. Otomatisasi sangat penting untuk menciptakan proses yang berulang, andal, dan berulang. Oleh karena itu, organisasi harus membuat jalur pengiriman yang memungkinkan penerapan dan pengujian otomatis dan berkelanjutan. Penerapan yang sering juga memungkinkan tim menguji proses penerapan, sehingga mengurangi risiko kegagalan penerapan selama rilis langsung.

Memantau dan memeriksa kualitas pekerjaan

Organisasi pandai memantau aplikasi dalam produksi karena mereka memiliki alat yang menangkap metrik dan indikator kinerja utama (KPI) secara real-time. Prinsip ini menggerakkan pemantauan di awal siklus hidup, memastikan bahwa pengujian otomatis memantau atribut fungsional dan non-fungsional aplikasi di awal proses. Setiap kali aplikasi diuji dan diterapkan, metrik kualitas harus diperiksa dan dianalisis. Alat pemantauan memberikan peringatan dini mengenai masalah operasional dan kualitas yang mungkin timbul selama produksi. Indikator-indikator ini harus dikumpulkan dalam format yang dapat diakses dan dipahami oleh seluruh pemangku kepentingan.

Meningkatkan Putaran Umpan Balik

Salah satu tujuan proses DevOps adalah memungkinkan organisasi merespons dan melakukan perubahan dengan lebih cepat. Dalam penyampaian perangkat lunak, tujuan ini mengharuskan organisasi untuk menerima umpan balik sejak dini dan kemudian dengan cepat belajar dari setiap tindakan yang diambil. Prinsip ini mengharuskan organisasi untuk menciptakan saluran komunikasi yang memungkinkan pemangku kepentingan mengakses dan berinteraksi secara umpan balik. Pengembangan dapat dilakukan dengan menyesuaikan rencana atau prioritas proyek Anda. Manufaktur dapat bertindak dengan memperbaiki lingkungan produksi.

dev

  • Perencanaan: Kanboard, Wekan dan alternatif Trello lainnya; GitLab, Tuleap, Redmine dan alternatif JIRA lainnya; Yang paling penting, Roit.im, IRC dan alternatif Slack lainnya.
  • Menulis kode: Git, Gerrit, Bugzilla; Jenkins dan alat sumber terbuka lainnya untuk CI/CD
  • Majelis: Apache Maven, Gradle, Apache Semut, Packer
  • Tes: JUnit, Mentimun, Selenium, Apache JMeter

Ops

  • Rilis, Penerapan, Operasi: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, dll, Netflix Archaius, Terraform
  • Pemantauan: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, dan lainnya tercakup dalam panduan ini

(*Alat operasi telah diberi nomor sesuai urutan penggunaan oleh tim operasi, namun alat tersebut tumpang tindih dengan tahapan siklus hidup alat rilis dan penerapan. Agar mudah dibaca, penomoran telah dihapus.)

Sebagai kesimpulan

DevOps adalah metodologi yang semakin populer yang bertujuan untuk menyatukan pengembang dan operasi sebagai satu kesatuan. Ini unik, berbeda dari operasi TI tradisional, dan melengkapi Agile (tetapi tidak sefleksibel).

Panduan DevOps untuk Pemula

Cari tahu detail cara mendapatkan profesi yang dicari dari awal atau Naik Level dalam hal keterampilan dan gaji dengan mengikuti kursus online berbayar dari SkillFactory:

lebih banyak kursus

Berguna

Sumber: www.habr.com

Tambah komentar