Mengapakah DevOps diperlukan dan siapakah pakar DevOps?

Apabila aplikasi tidak berfungsi, perkara terakhir yang anda ingin dengar daripada rakan sekerja anda ialah frasa "masalahnya menyebelahi anda". Akibatnya, pengguna menderita - dan mereka tidak peduli bahagian mana dalam pasukan yang bertanggungjawab untuk pecahan itu. Budaya DevOps muncul dengan tepat untuk membawa pembangunan dan sokongan bersama di sekitar tanggungjawab bersama untuk produk akhir.

Apakah amalan yang disertakan dalam konsep DevOps dan mengapa ia diperlukan? Apakah yang jurutera DevOps lakukan dan apakah yang patut mereka lakukan? Pakar dari EPAM menjawab soalan ini dan soalan lain: Kirill Sergeev, jurutera sistem dan penginjil DevOps, dan Igor Boyko, jurutera sistem terkemuka dan penyelaras salah satu pasukan DevOps syarikat.

Mengapakah DevOps diperlukan dan siapakah pakar DevOps?

Mengapa DevOps diperlukan?

Sebelum ini, terdapat halangan antara pembangun dan sokongan (kononnya operasi). Kedengarannya paradoks, tetapi mereka mempunyai matlamat dan KPI yang berbeza, walaupun mereka melakukan perkara yang sama. Matlamat pembangunan adalah untuk melaksanakan keperluan perniagaan secepat mungkin dan menambahkannya pada produk yang berfungsi. Sokongan bertanggungjawab untuk memastikan aplikasi berfungsi dengan stabil - dan sebarang perubahan membahayakan kestabilan. Terdapat konflik kepentingan - DevOps nampaknya menyelesaikannya.

Apakah itu DevOps?

Ini soalan yang bagus - dan satu soalan yang kontroversial: dunia masih belum bersetuju dengan perkara ini. EPAM percaya bahawa DevOps menggabungkan teknologi, proses dan budaya interaksi dalam satu pasukan. Persatuan ini bertujuan untuk menyampaikan nilai secara berterusan kepada pengguna akhir.

Kirill Sergeev: β€œPembangun menulis kod, penguji menyemaknya dan pentadbir menggunakan produk akhir ke pengeluaran. Untuk masa yang lama, bahagian-bahagian pasukan ini agak berselerak, dan kemudian timbul idea untuk menyatukan mereka melalui proses yang sama. Beginilah cara amalan DevOps muncul.”

Harinya tiba apabila pembangun dan jurutera sistem mula berminat dengan kerja masing-masing. Halangan antara pengeluaran dan sokongan mula hilang. Beginilah cara DevOps muncul, yang merangkumi amalan, budaya dan interaksi pasukan.

Mengapakah DevOps diperlukan dan siapakah pakar DevOps?

Apakah intipati budaya DevOps?

Hakikatnya tanggungjawab untuk keputusan akhir terletak pada setiap ahli pasukan. Perkara yang paling menarik dan sukar dalam falsafah DevOps ialah memahami bahawa orang tertentu bukan sahaja bertanggungjawab untuk peringkat kerjanya sendiri, tetapi bertanggungjawab untuk bagaimana keseluruhan produk akan berfungsi. Masalahnya tidak menyebelahi sesiapa - ia dikongsi, dan setiap ahli pasukan membantu menyelesaikannya.

Perkara yang paling penting dalam budaya DevOps ialah menyelesaikan masalah, bukan hanya menggunakan amalan DevOps. Selain itu, amalan ini tidak dilaksanakan "di pihak seseorang", tetapi di seluruh produk. Projek tidak memerlukan jurutera DevOps semata-mata - ia memerlukan penyelesaian kepada masalah, dan peranan jurutera DevOps boleh diagihkan di kalangan beberapa ahli pasukan dengan pengkhususan yang berbeza.

Apakah jenis amalan DevOps?

Amalan DevOps merangkumi semua peringkat kitaran hayat perisian.

Igor Boyko: β€œKes yang ideal ialah apabila kita mula menggunakan amalan DevOps tepat pada permulaan projek. Bersama-sama dengan arkitek, kami merancang jenis landskap seni bina aplikasi itu, di mana ia akan ditempatkan dan cara membuat skala, dan memilih platform. Pada masa kini, seni bina perkhidmatan mikro sedang dalam fesyen - untuk itu kami memilih sistem orkestrasi: anda perlu dapat mengurus setiap elemen aplikasi secara berasingan dan mengemas kininya secara bebas daripada yang lain. Amalan lain ialah "infrastruktur sebagai kod." Ini adalah nama untuk pendekatan di mana infrastruktur projek dicipta dan diurus menggunakan kod, bukannya melalui interaksi langsung dengan pelayan.

Seterusnya kita beralih ke peringkat pembangunan. Salah satu amalan terbesar di sini ialah membina CI/CD: anda perlu membantu pembangun menyepadukan perubahan ke dalam produk dengan cepat, dalam bahagian kecil, lebih kerap dan tanpa rasa sakit. CI/CD meliputi semakan kod, memuat naik induk ke pangkalan kod, dan menggunakan aplikasi untuk menguji dan persekitaran pengeluaran.

Pada peringkat CI/CD, kod tersebut melalui gerbang kualiti. Dengan bantuan mereka, mereka menyemak sama ada kod yang keluar daripada stesen kerja pembangun memenuhi kriteria kualiti yang ditentukan. Ujian unit dan UI ditambah di sini. Untuk penggunaan produk yang cepat, tidak menyakitkan dan terfokus, anda boleh memilih jenis penggunaan yang sesuai.

Pengamal DevOps juga mempunyai tempat di peringkat menyokong produk siap. Ia digunakan untuk pemantauan, maklum balas, keselamatan dan memperkenalkan perubahan. DevOps melihat semua tugas ini dari perspektif peningkatan berterusan. Kami meminimumkan operasi berulang dan mengautomasikannya. Ini juga termasuk migrasi, pengembangan aplikasi dan sokongan prestasi.”

Apakah faedah amalan DevOps?

Jika kami menulis buku teks tentang amalan DevOps moden, terdapat tiga perkara pada halaman pertama: automasi, mempercepatkan keluaran dan maklum balas pantas daripada pengguna.

Kirill Sergeev: β€œPerkara pertama ialah automasi. Kami boleh mengautomasikan semua interaksi dalam pasukan: menulis kod - melancarkannya - menyemaknya - memasangnya - mengumpul maklum balas - kembali ke permulaan. Semua ini adalah automatik.

Yang kedua ialah mempercepatkan pengeluaran dan juga memudahkan pembangunan. Ia sentiasa penting bagi pelanggan bahawa produk memasuki pasaran secepat mungkin dan mula memberikan faedah lebih awal daripada analog pesaing. Proses penghantaran produk boleh dipertingkatkan tanpa henti: mengurangkan masa, menambah tanda kawalan tambahan, meningkatkan pemantauan.

Ketiga ialah pecutan maklum balas pengguna. Jika dia ada komen, kami boleh segera membuat pelarasan dan mengemas kini aplikasi dengan segera.”

Mengapakah DevOps diperlukan dan siapakah pakar DevOps?

Bagaimanakah konsep "jurutera sistem", "jurutera binaan" dan "jurutera DevOps" berkaitan?

Mereka bertindih, tetapi tergolong dalam kawasan yang sedikit berbeza.

Jurutera sistem di EPAM ialah jawatan. Mereka datang dalam tahap yang berbeza: dari junior hingga ketua pakar.

Jurutera binaan adalah lebih kepada peranan yang boleh dilakukan pada projek. Sekarang inilah yang dipanggil orang yang bertanggungjawab untuk CI/CD.

Jurutera DevOps ialah pakar yang melaksanakan amalan DevOps pada projek.

Jika kita merumuskan semuanya, kita mendapat sesuatu seperti ini: seseorang dalam kedudukan jurutera sistem memainkan peranan sebagai jurutera binaan pada projek dan terlibat dalam pelaksanaan amalan DevOps di sana.

Apa sebenarnya yang dilakukan oleh jurutera DevOps?

Jurutera DevOps mengumpulkan semua bahagian yang membentuk projek. Mereka mengetahui spesifik kerja pengaturcara, penguji, pentadbir sistem dan membantu memudahkan kerja mereka. Mereka memahami keperluan dan keperluan perniagaan, peranannya dalam proses pembangunan - dan membina proses dengan mengambil kira kepentingan pelanggan.

Kami banyak bercakap tentang automasi - inilah yang pertama kali ditangani oleh jurutera DevOps. Ini adalah perkara yang sangat besar, yang, antara lain, termasuk menyediakan alam sekitar.

Kirill Sergeev: β€œSebelum melaksanakan kemas kini ke dalam produk, mereka perlu diuji dalam persekitaran pihak ketiga. Ia disediakan oleh jurutera DevOps. Mereka menerapkan budaya DevOps pada projek secara keseluruhan: mereka memperkenalkan amalan DevOps di semua lapisan projek mereka. Tiga prinsip ini: automasi, penyederhanaan, pecutan - mereka membawa ke mana sahaja mereka boleh capai."

Apakah yang perlu diketahui oleh jurutera DevOps?

Pada umumnya, dia mesti mempunyai pengetahuan dari pelbagai bidang: pengaturcaraan, bekerja dengan sistem pengendalian, pangkalan data, pemasangan dan sistem konfigurasi. Ini dilengkapi dengan keupayaan untuk bekerja dengan infrastruktur awan, orkestrasi dan sistem pemantauan.

1. Bahasa pengaturcaraan

Jurutera DevOps mengetahui beberapa bahasa asas untuk automasi dan boleh, sebagai contoh, memberitahu pengaturcara: "Bagaimana pula dengan anda memasang kod bukan dengan tangan, tetapi menggunakan skrip kami, yang mengautomasikan segala-galanya? Kami akan menyediakan fail konfigurasi untuknya, ia akan memudahkan anda dan kami membacanya, dan kami akan dapat mengubahnya pada bila-bila masa. Kami juga akan melihat siapa, bila dan mengapa membuat perubahan padanya.”

Jurutera DevOps boleh mempelajari satu atau lebih daripada bahasa ini: Python, Groovy, Bash, Powershell, Ruby, Go. Ia tidak perlu untuk mengetahuinya pada tahap yang mendalam - asas sintaks, prinsip OOP, dan keupayaan untuk menulis skrip mudah untuk automasi sudah mencukupi.

2. Sistem operasi

Jurutera DevOps mesti memahami pelayan yang mana produk akan dipasang, persekitaran yang akan dijalankan dan perkhidmatan yang akan berinteraksi dengannya. Anda boleh memilih untuk pakar dalam Windows atau keluarga Linux.

3. Sistem kawalan versi

Tanpa pengetahuan tentang sistem kawalan versi, jurutera DevOps tidak ke mana-mana. Git adalah salah satu sistem yang paling popular pada masa ini.

4. Pembekal awan

AWS, Google, Azure - terutamanya jika kita bercakap tentang arah Windows.

Kirill Sergeev: β€œPembekal awan memberikan kami pelayan maya yang sesuai dengan sempurna ke dalam CI/CD.

Memasang sepuluh pelayan fizikal memerlukan kira-kira seratus operasi manual. Setiap pelayan mesti dilancarkan secara manual, dipasang dan dikonfigurasikan sistem pengendalian yang diperlukan, memasang aplikasi kami pada sepuluh pelayan ini, dan kemudian menyemak semula semuanya sepuluh kali. Perkhidmatan awan menggantikan prosedur ini dengan sepuluh baris kod, dan jurutera DevOps yang baik seharusnya dapat beroperasi dengan mereka. Ini menjimatkan masa, usaha dan wang – untuk pelanggan dan syarikat.”

5. Sistem orkestrasi: Docker dan Kubernetes

Kirill Sergeev: β€œPelayan maya dibahagikan kepada bekas, di mana setiap satunya kami boleh memasang aplikasi kami. Apabila terdapat banyak bekas, anda perlu mengurusnya: hidupkan satu, matikan satu lagi, buat sandaran di suatu tempat. Ini menjadi agak rumit dan memerlukan sistem orkestrasi.

Sebelum ini, setiap aplikasi dikendalikan oleh pelayan yang berasingan - sebarang perubahan dalam operasinya boleh menjejaskan kebolehgunaan aplikasi. Terima kasih kepada bekas, aplikasi menjadi terpencil dan dijalankan secara berasingan - setiap satu pada mesin mayanya sendiri. Jika kegagalan berlaku, tidak perlu membuang masa mencari punca. Lebih mudah untuk memusnahkan bekas lama dan menambah yang baharu."

6. Sistem konfigurasi: Chef, Ansible, Puppet

Apabila anda perlu mengekalkan keseluruhan kumpulan pelayan, anda perlu melakukan banyak jenis operasi yang sama. Ia panjang dan sukar, dan kerja manual juga meningkatkan kemungkinan ralat. Di sinilah sistem konfigurasi datang untuk menyelamatkan. Dengan bantuan mereka, mereka mencipta skrip yang mudah dibaca untuk pengaturcara, jurutera DevOps dan pentadbir sistem. Skrip ini membantu untuk menjalankan operasi yang sama pada pelayan secara automatik. Ini mengurangkan operasi manual (dan oleh itu ralat).

Apakah jenis kerjaya yang boleh dibina oleh jurutera DevOps?

Anda boleh berkembang secara mendatar dan menegak.

Igor Boyko: β€œDari sudut pandangan pembangunan mendatar, jurutera DevOps kini mempunyai prospek yang paling luas. Segala-galanya sentiasa berubah, dan anda boleh membina kemahiran dalam pelbagai bidang: daripada sistem kawalan versi kepada pemantauan, daripada pengurusan konfigurasi kepada pangkalan data.

Anda boleh menjadi arkitek sistem jika pekerja berminat untuk memahami cara aplikasi berfungsi pada semua peringkat kitaran hayatnya - daripada pembangunan hingga sokongan."

Bagaimana untuk menjadi jurutera DevOps?

  1. Baca Buku Panduan Projek Phoenix dan DevOps. Ini adalah tonggak sebenar falsafah DevOps, dengan yang pertama adalah karya fiksyen.
  2. Pelajari teknologi daripada senarai di atas: sendiri atau melalui kursus dalam talian.
  3. Sertai sebagai jurutera DevOps untuk projek sumber terbuka.
  4. Berlatih dan tawarkan amalan DevOps pada projek peribadi dan kerja anda.

Sumber: www.habr.com

Tambah komen