Saya sebelum ini bekerja di pasukan awan Kumpulan Citi membangunkan aplikasi web Infrastruktur-sebagai-Perkhidmatan (IaaS) untuk mengurus infrastruktur awan Citi, tetapi saya sentiasa berminat untuk menjadikan proses pembangunan lebih cekap dan membawa perubahan budaya yang positif kepada pasukan pembangunan. Saya menemui jawapannya dalam buku yang disyorkan oleh Greg Lavender, CTO Seni Bina dan Infrastruktur Awan di Citi. Buku itu dipanggil Projek Phoenix (Projek Phoenix), dan ia menerangkan prinsip DevOps, tetapi ia berbunyi seperti novel.
Bagaimanakah frekuensi Amazon, Google dan Netflix boleh dilakukan? Ini kerana syarikat-syarikat ini telah memikirkan cara untuk mencipta saluran paip DevOps yang hampir sempurna.
ΠΡ Π±ΡΠ»ΠΈ Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Π½Π΅Π΄ΡΠΈΠ»ΠΈ DevOps Π² Citi. Π’ΠΎΠ³Π΄Π° Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΡΠ»ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ½ΡΠΌ. ΠΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠΌΠ΅Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Π±Π°Π·Π΅ IBM WebSphere Application Server Community Edition. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΊΠ»ΡΡΠ°Π»ΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΎ ΡΠ²ΠΎΠΈΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ , ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°, Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ.
Saya menyedari bahawa sesuatu perlu dilakukan dan menemui rakan sekerja yang berfikiran sama. Kami memutuskan untuk bekerjasama dalam membina saluran paip DevOps awal - dia menyediakan mesin maya Tomcat dan pelayan aplikasi semasa saya bekerja pada Jenkins, menyepadukan Atlassian Jira dan BitBucket, dan bekerja pada liputan kod ujian. Projek sampingan ini sangat berjaya: kami hampir mengautomasikan sepenuhnya banyak proses, mencapai hampir 100% masa beroperasi pada pelayan pembangunan kami, menyediakan penjejakan dan liputan ujian yang lebih baik bagi kod, dan menambah keupayaan untuk memautkan cawangan Git kepada isu atau penggunaan Jira. Kebanyakan alatan yang kami gunakan untuk membina saluran paip DevOps kami adalah sumber terbuka.
Sekarang saya faham betapa mudahnya saluran paip DevOps kami: kami tidak menggunakan sambungan seperti fail Jenkins atau Ansible. Walau bagaimanapun, saluran paip mudah ini berfungsi dengan baik, mungkin disebabkan oleh prinsip Pareto (juga dikenali sebagai peraturan 80/20).
Jika anda bertanya kepada beberapa orang, "Apakah itu DevOps?", anda mungkin akan mendapat beberapa jawapan yang berbeza. DevOps, seperti Agile, telah berkembang untuk menjangkau banyak disiplin yang berbeza, tetapi kebanyakan orang akan bersetuju dengan beberapa perkara: DevOps ialah amalan pembangunan perisian atau kitaran hayat pembangunan perisian (SDLC) yang prinsip utamanya mengubah budaya di mana pembangun dan bukan pembangun wujud dalam persekitaran di mana:
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ;
ΠΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ ΡΠΌΠ΅Π΅Ρ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ;
Bilangan pelaksanaan dalam tempoh masa tertentu meningkat; Peningkatan throughput;
Peningkatan fleksibiliti pembangunan.
Jadi apa itu Jenkins? Anggap ia sebagai sejenis alat kawalan jauh universal ajaib yang boleh bercakap dan mengatur pelbagai perkhidmatan dan alatan. Dengan sendirinya, alat CI/CD seperti Jenkins tidak berguna, tetapi ia menjadi lebih berkuasa apabila ia menyambung kepada alat dan perkhidmatan yang berbeza.
Jenkins hanyalah salah satu daripada banyak alatan CI/CD sumber terbuka yang boleh anda gunakan untuk membina saluran paip DevOps anda.
Jenkins: Creative Commons and MIT
Travis CI: MIT
CruiseControl: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU
Inilah rupa proses DevOps dengan alat CI/CD:
Anda mempunyai alat CI/CD yang dijalankan pada localhost anda, tetapi tidak banyak yang boleh anda lakukan pada masa ini. Mari kita beralih ke peringkat seterusnya dalam perjalanan DevOps.
Di sinilah kawalan kod sumber menjadi hampir satu keperluan. Alat ini menyimpan kod anda dalam repositori, menjejaki versi dan menyelaras kerja peserta projek.
Buat masa ini, anda mempunyai fail berpakej yang boleh sama ada boleh laku atau boleh dipasang. Untuk mana-mana aplikasi benar-benar berguna, ia mesti menyediakan beberapa jenis perkhidmatan atau antara muka, tetapi anda memerlukan bekas untuk mengehoskan aplikasi anda.
Melaksanakan ujian boleh menjadi satu lagi keperluan yang sukar, tetapi pembangun mesti menangkap sebarang pepijat dalam aplikasi lebih awal dan meningkatkan kualiti kod untuk memastikan pengguna akhir berpuas hati. Nasib baik, terdapat banyak alat sumber terbuka untuk menguji kod anda dan membuat cadangan untuk meningkatkan kualitinya. Apa yang lebih baik ialah kebanyakan alat CI/CD boleh menyambung kepada alatan ini dan mengautomasikan proses.
Ujian kod terdiri daripada dua bahagian: rangka kerja ujian kod yang membantu anda menulis dan menjalankan ujian, dan alat cadangan yang membantu anda meningkatkan kualiti kod anda.
Walaupun terdapat pilihan kontena lain, yang paling popular ialah Docker dan Kubernetes.
Docker: Apache 2.0
Kubernetes: Apache 2.0
Alat automasi perantaraan
Saluran paip DevOps kami tertumpu terutamanya pada penciptaan dan penggunaan aplikasi kolaboratif, tetapi terdapat banyak perkara lain yang boleh dilakukan dengan alat DevOps. Salah satunya ialah penggunaan alat Infrastruktur sebagai Kod (IaC), yang juga dikenali sebagai alat automasi middleware. Alat ini membantu mengautomasikan pemasangan, pengurusan dan tugas lain untuk perisian tengah. Jadi, sebagai contoh, alat automasi boleh mengekstrak aplikasi seperti pelayan aplikasi web, pangkalan data dan alat pemantauan dengan konfigurasi yang betul dan menggunakan ia ke pelayan aplikasi.
Ansible: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache ΠΈΠ»ΠΈ GPL
Ketahui butiran tentang cara mendapatkan profesion yang dicari dari awal atau Naik Tahap dari segi kemahiran dan gaji dengan mengikuti kursus dalam talian berbayar dari SkillFactory: