Tantangan dalam pengiriman berkelanjutan dan penerapan produk perangkat lunak





Artikel tersebut disiapkan oleh Konstantin Bryukhanov, kepala kursus "CI / CD" . Di dalamnya, Konstantin mengungkapkan sejumlah masalah problematis terkait pengiriman penerapan kode produk perangkat lunak di perusahaan IT, dan mengumpulkan rekomendasi dari antara praktik internasional terbaik.






Dalam operasi TI, arah yang paling dituntut adalah penyesuaian dan penyediaan pengiriman dan penerapan yang berkelanjutan. Teknologi dan metodologi terus berkembang, alat ditingkatkan. Dengan demikian, persyaratan pengiriman dan penerapan terbaru mencakup kesiapan dan kontinuitas pengujian perubahan, mempersiapkan dan menyiapkan lingkungan pengujian untuk tim QA.



Terobosan teknologi dan perangkat lunak bebas telah menyebabkan perubahan signifikan dalam pendekatan pengorganisasian proses CI / CD. Transisi ke prinsip-prinsip baru sangat memengaruhi budaya perusahaan, keterampilan yang diminta karyawan, dan prinsip-prinsip kerja dalam organisasi, yang menyebabkan perubahan besar-besaran dalam dunia pengembangan perangkat lunak.



Solusi cloud semakin menjadi prioritas. Pengiriman perangkat lunak berkelanjutan memerlukan kolaborasi yang efektif antara tim pengembangan, pengujian, dan operasi, dan cloud sangat bagus untuk kolaborasi ini.



Namun, fase penerapan, yang dilakukan dalam topologi terdistribusi yang kompleks, rawan kesalahan dan umumnya memerlukan pemecahan masalah manual. Fase peluncuran produk dari proses pengiriman berkelanjutan sering kali menimbulkan hambatan dan berdampak negatif pada keefektifan proses DevOps.



Pengiriman berkelanjutan memungkinkan Anda mencapai otomatisasi pengujian perubahan perangkat lunak tambahan dan penerapan cepat pembaruan dengan cara yang paling efisien dan aman. Pendekatan ini memberikan keyakinan kepada pengguna bahwa versi kode terbaru sedang digunakan di lingkungan produksi, dan perubahan yang dibuat oleh pemrogram dapat menjangkau pelanggan dalam hitungan jam atau bahkan menit.



Mari pertimbangkan skenario paling umum untuk mengimplementasikan CI / CD dalam sebuah proyek:



  1. Tim pengembangan merilis versi baru produk (fungsionalitas baru atau perbaikan bug dari rilis sebelumnya).
  2. Layanan Continuous Integration (CI) memvalidasi kode baru dengan serangkaian pengujian yang mencakup beberapa tingkat pengujian, seperti pengujian sintaks, unit, dan regresi.
  3. , (CD).
  4. (, ) , (staging), , .
  5. stage- CI/CD , .
  6. .




Skenario ini paling umum dan mencakup sebagian besar kebutuhan pengembangan dan operasi tim, namun masih terdapat beberapa kendala , misalnya:



  1. Mengganti file . Seringkali diperlukan untuk memperbarui atau mengganti file konfigurasi atau membuat ulang beberapa konten statis. Dalam kasus ini, pengguna mungkin menerima kesalahan hingga lalu lintas dialihkan dari versi perangkat lunak lama ke versi baru. Jika penerapan gagal, ada risiko ketidakcocokan file.
  2. . , , . . , - , - .
  3. . . , , .. . , - , , .. .




Perlu dicatat bahwa masalah yang tercantum di atas dapat muncul bahkan di lingkungan yang hampir ideal, tetapi salah satu kesulitan utama dalam menerapkan metodologi DevOps adalah tidak ada gambaran tunggal tentang seperti apa proses pengiriman berkelanjutan dan penerapan produk. Banyak perusahaan IT yang tahu terlalu sedikit tentang DevOps, terkadang mereka tidak memahami metodologi ini sama sekali, sementara yang lain sudah memiliki solusi historis, di atasnya proses baru harus dibangun. Mempertimbangkan persyaratan tinggi untuk kualifikasi spesialis Devops, dan kekurangan mereka di pasar tenaga kerja, pemberi kerja sering kali terpaksa menggunakan sumber daya yang sudah dimilikinya dan memberikan tugas Devops kepada insinyur pemula. Akibatnya, ada lebih banyak titik lemah dalam sistem.



Saat menggunakan CI / CD tanpa pemahaman yang benar tentang metodologi, tanpa pendekatan analitis untuk membangun infrastruktur dan metode untuk menyampaikan kode, masalah berikut akan muncul:



1. Faktor manusia . Risiko pertama dan paling signifikan dikaitkan dengan faktor manusia. Bayangkan situasi di mana Anda perlu mengkonfigurasi beberapa server lagi yang mirip dengan yang sudah ada. Jika spesialis yang membuat instalasi atau pengaturan sebelumnya saat ini tidak tersedia karena alasan apa pun (sakit, berhenti, dll.) Dan belum menyiapkan instruksi terperinci, situasinya menjadi jauh lebih rumit. Dalam kasus ini, setiap spesialis baru harus mempelajari seluruh proses pengaturan server sepenuhnya, sementara dia tidak memiliki margin kesalahan. Selain itu, tidak mungkin memperkirakan secara akurat berapa lama waktu yang dibutuhkan untuk menyiapkan dan menjamin keberhasilannya.



Ini juga termasuk risiko yang terkait dengan fakta bahwa penulis metode membuat kesalahan, lupa menutupi proses dengan tes, atau hanya tidak memperhitungkan sesuatu, dan penggantinya tidak menyadarinya.



Juga harus diingat bahwa perusahaan sering mengembangkan beberapa proyek, dan Departemen Operasi TI biasanya satu, dan satu Insinyur Operasi melayani beberapa proyek. Jika tidak ada skema dan konsep tunggal, maka proses dalam tim yang berbeda akan dibangun dengan cara yang berbeda, yang secara signifikan akan mempersulit pengembangan Devops selanjutnya di perusahaan dan akan membuat ambang batas yang tinggi untuk masuknya insinyur operasi ke dalam proyek lain, di mana proses yang sudah digunakan berbeda dari yang dia kerjakan. sebelumnya.



2. Skenario non-idempoten... Idempotensi adalah atribut penting dari skenario pengiriman dan penerapan kode yang berkelanjutan, terutama dalam penerapan infrastruktur. Teknisi harus yakin bahwa setiap kali skrip dijalankan, hasilnya akan dijamin, diharapkan, dan tidak berubah secara unik saat memutar ulang skrip yang sama. Seringkali, ketika menerapkan Devops di sebuah perusahaan, para insinyur mencoba mengembangkan solusi bisnis dan mungkin tidak memperhitungkan idempotensi atau tidak tahu tentang persyaratan ini. Dalam kasus ini, perusahaan menerima bom waktu. ada kemungkinan pengiriman kode yang tidak terduga ke fasilitas produksi. Misalnya, jika seseorang memperbarui modul CMS untuk satu proyek, dan dengan demikian memengaruhi orang lain, hal ini tidak diharapkan.



3. Penyimpanan data sensitif dan pengaturan akses. Salah satu poin terpenting dalam pendekatan Devops untuk menyimpan data rahasia, membatasi hak, mengatur jaringan, dan akses pengguna. Hingga saat ini, belum ada praktik dan alat yang diterima secara seragam untuk memecahkan masalah ini, dan para insinyur harus melakukan penelitian setiap kali, tergantung pada organisasi infrastruktur saat ini dan metode yang diadopsi untuk membatasi akses. Karena alasan ini, penerapan metodologi Devops di perusahaan diperumit oleh fakta bahwa tidak mungkin menemukan solusi secara tegas untuk kasus khusus Anda, dan penggunaan praktik orang lain tidak selalu menjamin keamanan.



4. Model penganggaran yang ditetapkan , lebih cocok untuk metodologi Waterfall.



5. Persyaratan keamanan yang tinggi.Akibatnya, tidak mungkin untuk menempatkan infrastruktur proyek TI nasional di wilayah tanggung jawab komersial, perusahaan asing, misalnya Amazon, Microsoft.



6. Sejumlah besar "kode warisan", "infrastruktur warisan" yang perlu dipertahankan. Kebutuhan integrasi dengan sejumlah besar sistem lama.



Dengan demikian, proses membangun Devops di suatu perusahaan dapat disertai dengan sejumlah masalah dan tidak selalu menyelesaikan masalah yang menyebabkannya.



Langkah penting pertama adalah meninggalkan hubungan ke server sebagai elemen infrastruktur yang unik dan sulit untuk disesuaikan., transisi dari konfigurasi server manual ke otomatis, manajemen infrastruktur terpusat. Proses penyiapan setiap server harus dijelaskan dalam bentuk konfigurasi yang mudah dibaca, dapat diubah, dan siap untuk digunakan kembali secara aman, memberikan hasil yang dijamin tidak ambigu. Contoh sistem orkestrator industri adalah Chef atau Ansible. Sistem ini memungkinkan Anda untuk mengelola sejumlah besar server dengan biaya minimal.



Langkah penting berikutnya adalah menerapkan pengujian otomatisuntuk mencakup sebanyak mungkin fungsionalitas kode yang sedang dikembangkan (baik perangkat lunak maupun infrastruktur). Dengan kata lain, memiliki infrastruktur yang diterapkan, tetapi tanpa pengujian otomatis, hambatan proses pengembangan adalah verifikasi fungsionalitas yang tepat waktu. Mengotomatiskan proses pengujian harus dimulai dengan penulisan sebenarnya dari kode perangkat lunak (pengujian unit), penerapan pengujian utama pada server yang bertanggung jawab untuk membangun perangkat lunak, dan pengujian konfigurasi server. Ini akan mengurangi beban kerja pada tim jaminan kualitas perangkat lunak dan secara signifikan mengurangi waktu perangkat lunak melewati jalur pipa.



Langkah logis terakhir adalah pengumpulan dan analisis terpusat dari file log dari semua serveruntuk pemberitahuan tepat waktu dari semua pemangku kepentingan dan pemantauan proaktif dari keadaan infrastruktur secara keseluruhan.



Panduan di atas akan membantu Anda membangun infrastruktur yang tangguh dan skalabel yang dapat menangani proses pengembangan intensif. Implementasi DevOps membutuhkan keterlibatan semua orang dalam prosesnya, mulai dari pengujian dan pengembangan hingga manajer dan operasi. Pada setiap tahap, analisis retrospektif konstan dari proses diperlukan, karena sebagai akibat dari kesalahan acak saat mengubah konfigurasi, sistem benar-benar berhenti bekerja. Telemetri perlu ditingkatkan untuk mendeteksi kesalahan dan memulihkan dengan lebih baik, dan untuk melindungi pipeline penerapan dan memenuhi tujuan perubahan manajemen. Ini akan memungkinkan Anda menerima dukungan maksimal dari manajemen dalam mengimplementasikan inisiatif DevOps, menciptakan lingkungan kerja yang lebih hidup dan ramah,sehingga setiap peserta dapat belajar sepanjang waktu - ini tidak hanya membantu setiap pemain untuk mencapai tujuan, tetapi juga memimpin organisasi menuju sukses.



Dalam 3 bulan pada kursus online kami "CI / CD", Anda akan mengembangkan pemahaman tentang arsitektur penyedia cloud, belajar mengotomatiskan analisis kode dan mencari kerentanan, serta mempelajari cara menyesuaikan proses membangun, menguji, dan menginstal aplikasi dari tiga penyedia terbesar . Program ini dirancang untuk spesialis dengan pengalaman dalam administrasi - tes masuk khusus akan membantu Anda mengetahui apakah Anda memiliki cukup persiapan untuk pelatihan.






Baca lebih banyak:






All Articles