Bagaimana integrasi berkelanjutan terkait dengan pengiriman / penyebaran berkelanjutan?

20

Berikut adalah kutipan dari konten saat ini :

... proses penggabungan salinan kode kerja pengembang ke basis kode bersama sering untuk mencegah atau meminimalkan masalah integrasi.

OK, saya mengerti. Tapi kemudian ada juga dan , dan di situlah saya terus-menerus tersesat:

  • Bagaimana integrasi berkelanjutan terkait dengan pengiriman dan / atau penyebaran berkelanjutan , dengan asumsi bahwa di suatu tempat di sepanjang garis (s) melalui integrationAnda berakhir deliveringdi lingkungan target di mana semuanya akan berada deployed.
  • Apa perbedaan antara pengiriman berkelanjutan dan penerapan berkelanjutan ?

Dulu, sebelum DevOps disebut DevOps, kami menggunakan terminologi yang mungkin dapat membantu untuk memahami istilah-istilah DevOps baru ini, seperti:

  • mempromosikan ke (atau menurunkan dari) beberapa target pra-produk, secara opsional dikombinasikan dengan beberapa jenis proses regenerasi (kompilasi, ikatan, dll) untuk mengemas semua komponen terkait bersama-sama dalam hal-hal yang dapat dieksekusi. Itu yang harus mirip / dekat dengan integrasi berkelanjutan , atau tidak?
  • mendistribusikan ke beberapa lingkungan target, menggunakan sesuatu seperti FTP (jika salinan standar tidak dapat menjembatani kesenjangan), tetapi belum mengaktifkannya di target. Itu yang harus mirip / dekat dengan pengiriman terus menerus , atau tidak?
  • instal (atau aktifkan ) di beberapa lingkungan target, dikombinasikan dengan hal-hal seperti mengikat, menghentikan / memulai operasi, dll. Itu yang harus serupa / dekat dengan penyebaran berkelanjutan , atau tidak?
Pierre.Vriens
sumber
Terlalu banyak markdown tag membuatnya sulit dibaca. Itu tidak membawa lebih banyak konteks pada pertanyaan, jadi saya pikir Ords dapat ditekankan dengan garis bawah _markdown_ untuk memudahkan pembacaan
Tensibai
1
Maksud saya mengedit itu menyebalkan
Tensibai
Posting StackOverflow
Dan Cornilescu

Jawaban:

23

Pengiriman berkelanjutan dan penyebaran berkelanjutan keduanya mengambil integrasi berkelanjutan satu langkah lebih jauh, dengan menambahkan langkah 'penyebaran ke produksi' ke proses. Perbedaan antara pengiriman kontinu dan penyebaran adalah bahwa untuk pengiriman langkah ini dilakukan secara manual dan untuk penerapannya adalah otomatis.

Perbedaan antara Continuous Integration, Continuous Delivery dan Continuous Deployment

Perbedaan antara Continuous Integration, Continuous Delivery dan Continuous Deployment. Gambar disalin dari codeproject.com

Apakah Anda melakukan pengiriman terus-menerus atau penerapan terus-menerus merupakan pilihan implementasi. Jika Anda melakukan penyebaran berkelanjutan, perubahan kode akan digunakan secara otomatis setelah tes penerimaan berlalu. Ini mungkin atau mungkin tidak diinginkan untuk produk Anda. Dengan pengiriman terus-menerus, orang dapat membuat pilihan apakah perubahan kode tertentu digunakan atau tidak (dan mungkin di mana tepatnya kode itu digunakan).

Karena perbedaan antara pengiriman dan penyebaran kontinu kecil dan banyak orang tidak menyadari perbedaan yang tepat, kedua istilah ini kadang-kadang digunakan secara bergantian.

Lebih baik
sumber
Bagus! Tapi ... solusi (jawaban Anda) untuk masalah (pertanyaan saya), mengubah masalah ... baca lebih lanjut ...
Pierre.Vriens
4

Pengiriman terus menerus dan penerapan berkelanjutan (CD) kurang lebih sama *. Setiap kali perubahan dianggap 'baik untuk pergi' (diuji / diverifikasi) itu harus segera dirilis. Anda dapat melakukan ini beberapa kali sehari karena ada pekerjaan yang selesai.

Integrasi berkelanjutan (CI) hanya mengacu pada penggabungan kode bersama sering untuk memastikan bahwa cabang fitur tidak membelok terlalu jauh dari cabang 'master' utama Anda, dan juga agar Anda tahu dengan sangat cepat jika ada masalah dengan kode dari sebuah perspektif integrasi - yaitu, Apakah Anda melanggar fungsi apa pun saat mengubah hal-hal.

Sejauh bagaimana mereka berhubungan satu sama lain, CI sangat membantu untuk memverifikasi kode sehingga dapat dirilis dengan cepat (CD). Anda masih dapat mencapai CD tanpa CI (dan sebaliknya), tetapi Anda akan menemukan bahwa sering kali membuat hidup Anda lebih mudah untuk mengintegrasikan kode Anda lebih awal dan seringkali menemukan masalah lebih cepat, yang pada gilirannya akan memungkinkan Anda untuk memperbaiki masalah tersebut dengan lebih cepat, dan akhirnya memberikan fitur Anda lebih cepat!

* Sunting: di sini ada artikel yang membahas perbedaannya. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Pengiriman terus-menerus tidak selalu berarti benar-benar melakukan penyebaran ke produksi setiap saat, tetapi itu berarti penyebaran yang konstan ke lingkungan seperti produksi , dengan keyakinan bahwa perubahan itu dapat masuk ke produksi kapan saja setelah bisnis siap. Dalam praktiknya, kebanyakan orang mengacaukan istilah-istilah ini.

tayworm
sumber
merci! Tetapi sesuai "kurang lebih sama", menurut Anda? dapatkah Anda memikirkan sesuatu yang menggambarkan nuansa?
Pierre.Vriens
Saya telah memperbarui posting saya dengan catatan tentang perbedaannya, namun saya percaya pada percakapan normal kebanyakan orang akan menggunakan istilah ini secara bergantian.
tayworm
2

Versi tertentu dari produk perangkat lunak harus terlebih dahulu menyelesaikan tahap integrasi sebelum dapat dikirim atau digunakan.

Untuk kontinyu pengiriman / penyebaran berkelanjutan integrasi adalah suatu keharusan. Jika tidak, jika integrasi acara selesai terlalu jauh untuk memenuhi syarat untuk atribut "kontinu" maka begitu juga kemungkinan pengiriman / penyebaran (hanya sebagian dari versi terintegrasi yang biasanya memenuhi syarat untuk pengiriman / penyebaran).

Pembaruan: Jawaban saya hanya menggarisbawahi ketergantungan (hubungan) antara CI dan (keduanya) CD, terminologi tercakup dengan baik oleh jawaban THelper.

Satu-satunya komentar yang saya miliki adalah tentang penggunaan (kelebihan beban) deployment. Penyebaran di lingkungan non-produksi adalah hal yang nyata. Mereka bahkan dapat terjadi cukup sering - dilakukan, misalnya, sebagai bagian dari berbagai tahap pengujian selama pengiriman terus menerus. Tapi itu tidak membuat penyebaran seperti itu continuous deployments. Penyebaran berkelanjutan mengacu secara khusus pada penyebaran di lingkungan produksi.

Dan Cornilescu
sumber
ok, itu semua membantu, tapi mungkin Anda bisa memperluas jawaban Anda dengan cara menggambarkan pengiriman dan penerapan?
Pierre.Vriens
1

Pada dasarnya, integrasi berkelanjutan adalah bagian dari pengiriman berkelanjutan dan penyebaran berkelanjutan, kecuali bahwa rilis terjadi secara otomatis. Anda juga dapat menganggap pengiriman kontinu sebagai langkah logis berikutnya dari integrasi berkelanjutan dan berfungsi di semua lingkungan. Integrasi berkelanjutan juga membantu dengan verifikasi artefak sehingga dapat digunakan lebih cepat. Meskipun tidak mungkin untuk memiliki penyebaran berkelanjutan tanpa integrasi berkelanjutan dan jauh lebih mudah untuk menangkap bug dengan integrasi berkelanjutan. Semua "hal-hal yang berkelanjutan" ini pada akhirnya tentang menghilangkan tindakan yang tidak perlu dalam alur kerja pengembangan. Yang paling penting, CI / CD penting dari perspektif teknis dan bisnis. Perusahaan yang gagal untuk mengadopsi prinsip-prinsip DevOps ini berisiko mengambil jalan dinosaurus. Dalam lingkungan TI yang serba cepat saat ini, itu jugaDevOps atau mati.

DevOps Jedi
sumber