Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka
Membina rangkaian DevOps pertama anda dalam lima langkah untuk pemula.

DevOps telah menjadi ubat mujarab untuk proses pembangunan yang terlalu perlahan, terputus dan sebaliknya bermasalah. Tetapi anda memerlukan pengetahuan minimum dalam DevOps. Ia akan merangkumi konsep seperti rangkaian DevOps dan cara mencipta satu dalam lima langkah. Ini bukan panduan lengkap, tetapi hanya "ikan" yang boleh dikembangkan. Mari kita mulakan dengan sejarah.

Pengenalan saya kepada DevOps

Saya pernah bekerja dengan awan di Citi Group dan membangunkan aplikasi web IaaS untuk mengurus infrastruktur awan Citi, tetapi saya sentiasa berminat dengan cara mengoptimumkan rantaian pembangunan dan meningkatkan budaya dalam kalangan pembangun. Greg Lavender, CTO kami untuk Seni Bina dan Infrastruktur Awan, mengesyorkan buku ini kepada saya. Projek "Phoenix". Ia menerangkan prinsip DevOps dengan indah dan dibaca seperti novel.

Jadual di belakang menunjukkan kekerapan syarikat melancarkan versi baharu:

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Bagaimanakah Amazon, Google dan Netflix berjaya melancarkan begitu banyak? Dan ianya mudah: mereka mengetahui cara mencipta rangkaian DevOps yang hampir sempurna.

Keadaan sangat berbeza untuk kami di Citi sehingga kami beralih kepada DevOps. Kemudian pasukan saya mempunyai persekitaran yang berbeza, tetapi kami melakukan penghantaran ke pelayan pembangunan secara manual. Semua pembangun mempunyai akses kepada hanya satu pelayan pembangunan berdasarkan Edisi Komuniti Pelayan Aplikasi WebSphere IBM. Dengan percubaan serentak untuk menghantar, pelayan "jatuh", dan setiap kali kami terpaksa "menyakitkan" berunding sesama sendiri. Kami juga mempunyai liputan kod yang tidak mencukupi dengan ujian, proses penghantaran manual yang memakan masa dan tiada cara untuk menjejaki penghantaran kod dengan bantuan beberapa tugasan atau keperluan pelanggan.

Adalah jelas bahawa sesuatu perlu dilakukan dengan segera, dan saya menemui rakan sekerja yang berfikiran sama. Kami memutuskan untuk mencipta rangkaian DevOps pertama bersama-sama - dia menyediakan mesin maya dan pelayan aplikasi Tomcat, dan saya menjaga Jenkins, penyepaduan dengan Atlassian Jira dan BitBucket, serta liputan kod dengan ujian. Projek ini berjaya: kami mengautomasikan sepenuhnya rantaian pembangunan, mencapai hampir 100% masa beroperasi pada pelayan pembangunan, dapat memantau dan meningkatkan liputan kod dengan ujian, dan cawangan Git boleh dikaitkan dengan penghantaran dan isu Jira. Dan hampir semua alatan yang kami gunakan untuk membina rantaian DevOps adalah sumber terbuka.

Malah, rantaian telah dipermudahkan, kerana kami tidak menggunakan konfigurasi lanjutan menggunakan Jenkins atau Ansible. Tetapi kami berjaya. Mungkin ini adalah akibat daripada prinsip Pareto (aka peraturan 80/20).

Penerangan Ringkas Rantaian DevOps dan CI/CD

DevOps mempunyai definisi yang berbeza. DevOps, seperti Agile, merangkumi disiplin yang berbeza. Tetapi kebanyakan akan bersetuju dengan definisi berikut: DevOps ialah kaedah, atau kitaran hayat, pembangunan perisian, prinsip utamanya adalah untuk mewujudkan budaya di mana pembangun dan pekerja lain berada "pada panjang gelombang yang sama", buruh manual adalah automatik, setiap orang melakukan yang terbaik, kekerapan penghantaran meningkat, produktiviti kerja meningkat, fleksibiliti meningkat.

Walaupun alat sahaja tidak mencukupi untuk mencipta persekitaran DevOps, ia amat diperlukan. Perkara yang paling penting ialah penyepaduan berterusan dan penghantaran berterusan (CI/CD). Terdapat peringkat berbeza dalam rantaian untuk setiap persekitaran (cth. DEV (pembangunan), INT (integrasi), TST (ujian), QA (jaminan kualiti), UAT (ujian penerimaan pengguna), STG (persediaan), PROD (penggunaan)) , tugas manual adalah automatik, pembangun boleh menghasilkan kod berkualiti, menyampaikannya dan boleh membina semula dengan mudah.

Nota ini menerangkan cara membuat rantai DevOps dalam lima langkah, seperti yang ditunjukkan dalam gambar di bawah, menggunakan alat sumber terbuka.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Mari berniaga.

Langkah 1: Platform CI/CD

Pertama sekali, anda memerlukan alat CI/CD. Jenkins ialah alat CI/CD sumber terbuka berlesen MIT yang ditulis dalam Java yang mempopularkan pergerakan DevOps dan telah menjadi standard de facto untuk CICD.

Apa itu Jenkins? Bayangkan anda mempunyai panel kawalan ajaib untuk pelbagai perkhidmatan dan alatan. Dengan sendirinya, alat CI/CD seperti Jenkins tidak berguna, tetapi dengan alat dan perkhidmatan yang berbeza, ia menjadi sangat berkuasa.

Selain Jenkins, terdapat banyak alat sumber terbuka lain, pilih mana-mana.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Begini rupa proses DevOps dengan alat CI/CD

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Anda mempunyai alat CI/CD dalam localhost, tetapi masih belum banyak yang perlu dilakukan. Mari kita teruskan ke langkah seterusnya.

Langkah 2: Kawalan Versi

Cara terbaik (dan boleh dikatakan paling mudah) untuk menguji keajaiban alat CI/CD ialah menyepadukannya dengan alat pengurusan kawalan sumber (SCM). Mengapa anda memerlukan kawalan versi? Katakan anda sedang membuat permohonan. Anda menulisnya dalam Java, Python, C++, Go, Ruby, JavaScript atau mana-mana bahasa lain iaitu gerabak dan troli kecil. Apa yang anda tulis dipanggil kod sumber. Pada mulanya, terutamanya jika anda bekerja bersendirian, anda boleh menyimpan semuanya ke direktori tempatan. Tetapi apabila projek itu berkembang dan lebih ramai orang menyertai, anda memerlukan cara untuk berkongsi perubahan kod tetapi mengelakkan konflik apabila menggabungkan perubahan. Dan anda juga perlu memulihkan versi sebelumnya tanpa menggunakan sandaran dan menggunakan kaedah salin-tampal untuk fail kod.

Dan di sini tanpa SCM di mana-mana sahaja. SCM menyimpan kod dalam repositori, mengurus versinya dan menyelaraskannya di kalangan pembangun.

Terdapat banyak alat SCM, tetapi Git sepatutnya menjadi standard de facto. Saya menasihati anda untuk menggunakannya, tetapi terdapat pilihan lain.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Berikut ialah rupa saluran paip DevOps selepas menambah SCM.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Alat CI/CD boleh mengautomasikan muat naik dan memuat turun kod sumber serta kerjasama pasukan. Boleh tahan? Tetapi sekarang bagaimana untuk membuat aplikasi yang berfungsi daripada ini, disukai oleh berbilion pengguna?

Langkah 3: Bina Alat Automasi

Semuanya berjalan sebagaimana mestinya. Anda boleh memuat naik kod dan melakukan perubahan pada kawalan sumber dan menjemput rakan untuk bekerjasama dengan anda. Tetapi anda belum mempunyai apl lagi. Untuk ini menjadi aplikasi web, ia mesti disusun dan dibungkus untuk diedarkan atau dijalankan sebagai boleh laku. (Bahasa pengaturcaraan yang ditafsirkan seperti JavaScript atau PHP tidak perlu disusun.)

Gunakan alat automasi binaan. Mana-mana alat yang anda pilih, ia akan mengumpulkan kod dalam format yang betul dan mengotomatisasi pembersihan, penyusunan, ujian dan penghantaran. Alat binaan berbeza mengikut bahasa, tetapi pilihan sumber terbuka berikut biasanya digunakan.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Sempurna! Sekarang mari masukkan fail konfigurasi alat automasi binaan ke dalam kawalan sumber supaya alat CI/CD membinanya.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Sedap rasanya. Tetapi di manakah semua ini untuk dilancarkan sekarang?

Langkah 4: Pelayan Aplikasi Web

Jadi, anda mempunyai fail berpakej yang boleh dilaksanakan atau dilancarkan. Agar aplikasi benar-benar berguna, ia mesti mempunyai beberapa jenis perkhidmatan atau antara muka, tetapi anda perlu meletakkan semuanya di suatu tempat.

Aplikasi web boleh dihoskan pada pelayan aplikasi web. Pelayan aplikasi menyediakan persekitaran di mana anda boleh melaksanakan logik berpakej, memaparkan antara muka dan mendedahkan perkhidmatan web melalui soket. Anda memerlukan pelayan HTTP dan beberapa persekitaran lain (mesin maya, contohnya) untuk memasang pelayan aplikasi. Buat masa ini, mari kita berpura-pura anda berurusan dengan semua ini semasa anda pergi (walaupun saya akan bercakap tentang bekas di bawah).

Terdapat beberapa pelayan aplikasi web terbuka.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Kami sudah mempunyai rangkaian DevOps yang hampir berfungsi. Bagus!

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Pada dasarnya, anda boleh berhenti di sini, kemudian anda boleh mengendalikannya sendiri, tetapi ia patut dibincangkan tentang kualiti kod.

Langkah 5: Liputan ujian

Pengujian mengambil banyak masa dan usaha, tetapi adalah lebih baik untuk mencari pepijat dengan segera dan memperbaiki kod untuk menggembirakan pengguna akhir. Untuk tujuan ini, terdapat banyak alat terbuka yang bukan sahaja akan menguji kod, tetapi juga menasihati cara untuk memperbaikinya. Kebanyakan alat CI/CD boleh memasukkan alat ini dan mengautomasikan proses.

Pengujian dibahagikan kepada dua bahagian: rangka kerja ujian untuk menulis dan melaksanakan ujian, dan alat dengan petunjuk untuk meningkatkan kualiti kod.

Rangka Kerja Pengujian

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Alat dengan petua kualiti

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Kebanyakan alat dan rangka kerja ini ditulis untuk Java, Python dan JavaScript kerana C++ dan C# adalah proprietari (walaupun GCC adalah sumber terbuka).

Kami telah menggunakan alat liputan ujian, dan kini saluran paip DevOps sepatutnya kelihatan seperti gambar pada permulaan tutorial.

Langkah Tambahan

Kontena

Seperti yang saya katakan sebelum ini, pelayan aplikasi boleh dihoskan dalam mesin maya atau pelayan, tetapi bekas lebih popular.

Apakah bekas? Ringkasnya, dalam mesin maya, sistem pengendalian sering mengambil lebih banyak ruang daripada aplikasi, dan bekas biasanya mencukupi dengan beberapa perpustakaan dan konfigurasi. Dalam sesetengah kes, mesin maya sangat diperlukan, tetapi bekas boleh memuatkan aplikasi bersama-sama dengan pelayan tanpa kos tambahan.

Untuk kontena, Docker dan Kubernetes biasanya diambil, walaupun terdapat pilihan lain.

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Baca artikel tentang Docker dan Kubernetes di Opensource.com:

Alat automasi middleware

Rantaian DevOps kami tertumpu pada pembinaan dan penyampaian aplikasi secara kolaboratif, tetapi terdapat perkara menarik lain yang boleh anda lakukan dengan alatan DevOps. Sebagai contoh, gunakan alat Infrastruktur sebagai Kod (IaC), juga dikenali sebagai alat automasi perisian tengah. Alat ini membantu mengautomasikan pemasangan, pengurusan dan tugas lain untuk perisian tengah. Contohnya, alat automasi boleh mengambil aplikasi (pelayan aplikasi web, pangkalan data, alat pemantauan) dengan konfigurasi yang betul dan menolaknya ke pelayan aplikasi.

Berikut ialah beberapa pilihan untuk alat automasi perisian tengah terbuka:

Panduan Dummies: Membina Rantaian DevOps dengan Alat Sumber Terbuka

Butiran dalam artikel Opensource.com:

Dan sekarang apa?

Ini hanyalah puncak gunung ais. Rangkaian DevOps boleh melakukan lebih banyak lagi. Mulakan dengan alat CI/CD dan lihat perkara lain yang boleh anda automasi untuk memudahkan kerja anda. Jangan lupa tentang alat komunikasi terbuka untuk kerjasama yang berkesan.

Berikut ialah beberapa lagi artikel DevOps yang bagus untuk pemula:

Anda juga boleh menyepadukan DevOps dengan alat tangkas terbuka:

Sumber: www.habr.com

Tambah komen