Mengapa DevOps diperlukan dan siapa spesialis DevOps?

Ketika lamaran tidak berfungsi, hal terakhir yang ingin Anda dengar dari kolega Anda adalah ungkapan “masalahnya ada di pihak Anda”. Akibatnya, pengguna menderita – dan mereka tidak peduli bagian tim mana yang bertanggung jawab atas kerusakan tersebut. Budaya DevOps muncul justru untuk menyatukan pengembangan dan dukungan seputar tanggung jawab bersama atas produk akhir.

Praktik apa saja yang termasuk dalam konsep DevOps dan mengapa hal itu diperlukan? Apa yang dilakukan para insinyur DevOps dan apa yang dapat mereka lakukan? Para ahli dari EPAM menjawab pertanyaan ini dan pertanyaan lainnya: Kirill Sergeev, insinyur sistem dan penginjil DevOps, dan Igor Boyko, insinyur sistem terkemuka dan koordinator salah satu tim DevOps perusahaan.

Mengapa DevOps diperlukan dan siapa spesialis DevOps?

Mengapa DevOps diperlukan?

Sebelumnya, ada penghalang antara pengembang dan dukungan (yang disebut operasi). Kedengarannya paradoks, namun mereka memiliki tujuan dan KPI yang berbeda, meski melakukan hal yang sama. Tujuan pengembangannya adalah untuk mengimplementasikan persyaratan bisnis secepat mungkin dan menambahkannya ke produk yang berfungsi. Dukungan bertanggung jawab untuk memastikan bahwa aplikasi bekerja dengan stabil - dan setiap perubahan membahayakan stabilitas. Ada konflik kepentingan - DevOps muncul untuk menyelesaikannya.

Apa itu DevOps?

Ini adalah pertanyaan yang bagus – dan kontroversial: dunia pada akhirnya belum menyetujui hal ini. EPAM percaya bahwa DevOps menggabungkan teknologi, proses, dan budaya interaksi dalam sebuah tim. Asosiasi ini bertujuan untuk terus memberikan nilai kepada pengguna akhir.

Kirill Sergeev: “Pengembang menulis kode, penguji meninjaunya, dan administrator menerapkan produk akhir ke produksi. Untuk waktu yang lama, bagian-bagian tim ini agak tersebar, dan kemudian muncul ide untuk menyatukan mereka melalui proses yang sama. Beginilah praktik DevOps muncul.”

Harinya tiba ketika pengembang dan insinyur sistem menjadi tertarik pada pekerjaan masing-masing. Hambatan antara produksi dan dukungan mulai menghilang. Inilah asal mula DevOps, yang mencakup praktik, budaya, dan interaksi tim.

Mengapa DevOps diperlukan dan siapa spesialis DevOps?

Apa inti dari budaya DevOps?

Faktanya adalah tanggung jawab atas hasil akhir ada pada masing-masing anggota tim. Hal yang paling menarik dan sulit dalam filosofi DevOps adalah memahami bahwa orang tertentu tidak hanya bertanggung jawab atas tahapan pekerjaannya sendiri, namun juga bertanggung jawab atas cara kerja keseluruhan produk. Masalahnya tidak terletak pada pihak siapa pun - masalahnya dibagi, dan setiap anggota tim membantu menyelesaikannya.

Hal terpenting dalam budaya DevOps adalah memecahkan masalah, bukan hanya menerapkan praktik DevOps. Terlebih lagi, praktik-praktik ini tidak diterapkan “di pihak seseorang”, namun di seluruh produk. Sebuah proyek tidak memerlukan insinyur DevOps - proyek memerlukan solusi untuk suatu masalah, dan peran insinyur DevOps dapat didistribusikan di antara beberapa anggota tim dengan spesialisasi berbeda.

Apa saja jenis praktik DevOps?

Praktik DevOps mencakup semua tahapan siklus hidup perangkat lunak.

о ойко: “Kasus yang ideal adalah ketika kita mulai menggunakan praktik DevOps tepat pada awal proyek. Bersama dengan para arsitek, kami merencanakan lanskap arsitektur seperti apa yang akan dimiliki aplikasi tersebut, di mana lokasinya dan bagaimana skalanya, serta memilih platform. Saat ini, arsitektur layanan mikro sedang populer - untuk itu kami memilih sistem orkestrasi: Anda harus dapat mengelola setiap elemen aplikasi secara terpisah dan memperbaruinya secara independen satu sama lain. Praktik lainnya adalah “infrastruktur sebagai kode.” Ini adalah nama pendekatan di mana infrastruktur proyek dibuat dan dikelola menggunakan kode, bukan melalui interaksi langsung dengan server.

Selanjutnya kita masuk ke tahap pengembangan. Salah satu praktik terbesar di sini adalah membangun CI/CD: Anda perlu membantu pengembang mengintegrasikan perubahan ke dalam produk dengan cepat, dalam porsi kecil, lebih sering, dan tanpa kesulitan. CI/CD mencakup peninjauan kode, mengunggah master ke basis kode, dan menerapkan aplikasi ke lingkungan pengujian dan produksi.

Pada tahapan CI/CD, kode melewati gerbang kualitas. Dengan bantuan mereka, mereka memeriksa apakah kode yang keluar dari stasiun kerja pengembang memenuhi kriteria kualitas yang ditentukan. Pengujian unit dan UI ditambahkan di sini. Untuk penerapan produk yang cepat, mudah, dan terfokus, Anda dapat memilih jenis penerapan yang sesuai.

Praktisi DevOps juga mendapat tempat pada tahap mendukung produk jadi. Mereka digunakan untuk pemantauan, umpan balik, keamanan, dan memperkenalkan perubahan. DevOps melihat semua tugas ini dari perspektif perbaikan berkelanjutan. Kami meminimalkan operasi berulang dan mengotomatiskannya. Ini juga mencakup migrasi, perluasan aplikasi, dan dukungan kinerja.”

Apa manfaat praktik DevOps?

Jika kita menulis buku teks tentang praktik DevOps modern, akan ada tiga poin di halaman pertama: otomatisasi, mempercepat rilis, dan umpan balik cepat dari pengguna.

Kirill Sergeev: “Hal pertama adalah otomatisasi. Kami dapat mengotomatiskan semua interaksi dalam tim: menulis kode - meluncurkannya - memeriksanya - menginstalnya - mengumpulkan masukan - kembali ke awal. Semua ini otomatis.

Yang kedua adalah mempercepat rilis dan bahkan menyederhanakan pengembangan. Selalu penting bagi pelanggan bahwa produk memasuki pasar sesegera mungkin dan mulai memberikan manfaat lebih awal dibandingkan produk pesaing. Proses pengiriman produk dapat ditingkatkan tanpa henti: mengurangi waktu, menambahkan tanda kontrol tambahan, meningkatkan pemantauan.

Ketiga adalah percepatan umpan balik pengguna. Jika dia punya komentar, kami bisa segera melakukan penyesuaian dan segera memperbarui aplikasinya.”

Mengapa DevOps diperlukan dan siapa spesialis DevOps?

Bagaimana konsep “insinyur sistem”, “insinyur pembangunan”, dan “insinyur DevOps” berhubungan?

Mereka saling tumpang tindih, namun berada di wilayah yang sedikit berbeda.

Insinyur sistem di EPAM adalah sebuah posisi. Mereka datang dalam berbagai tingkatan: dari junior hingga kepala spesialis.

Seorang insinyur pembangunan lebih merupakan peran yang dapat dilakukan pada sebuah proyek. Inilah sebutan bagi orang-orang yang bertanggung jawab atas CI/CD.

Insinyur DevOps adalah spesialis yang menerapkan praktik DevOps pada sebuah proyek.

Jika kita meringkas semuanya, kita mendapatkan sesuatu seperti ini: seseorang dengan posisi insinyur sistem berperan sebagai insinyur pembangunan pada sebuah proyek dan terlibat dalam implementasi praktik DevOps di sana.

Apa sebenarnya yang dilakukan seorang insinyur DevOps?

Insinyur DevOps mengumpulkan semua bagian yang membentuk sebuah proyek. Mereka mengetahui secara spesifik pekerjaan programmer, penguji, administrator sistem dan membantu menyederhanakan pekerjaan mereka. Mereka memahami kebutuhan dan persyaratan bisnis, perannya dalam proses pengembangan - dan membangun proses dengan mempertimbangkan kepentingan pelanggan.

Kami berbicara banyak tentang otomatisasi - inilah yang pertama dan terpenting ditangani oleh para insinyur DevOps. Ini merupakan hal yang sangat besar, antara lain mencakup penyiapan lingkungan.

Kirill Sergeev: “Sebelum menerapkan pembaruan pada produk, pembaruan tersebut perlu diuji di lingkungan pihak ketiga. Ini disiapkan oleh para insinyur DevOps. Mereka menanamkan budaya DevOps pada proyek secara keseluruhan: mereka memperkenalkan praktik DevOps di semua lapisan proyek mereka. Tiga prinsip ini: otomatisasi, penyederhanaan, akselerasi – semuanya dapat dibawa ke mana pun mereka dapat menjangkaunya.”

Apa yang harus diketahui oleh seorang insinyur DevOps?

Pada umumnya, ia harus memiliki pengetahuan di berbagai bidang: pemrograman, bekerja dengan sistem operasi, database, sistem perakitan dan konfigurasi. Ini termasuk kemampuan untuk bekerja dengan infrastruktur cloud, orkestrasi, dan sistem pemantauan.

1. Bahasa pemrograman

Insinyur DevOps mengetahui beberapa bahasa dasar untuk otomatisasi dan dapat, misalnya, memberi tahu seorang programmer: “Bagaimana kalau Anda menginstal kode tidak dengan tangan, tetapi menggunakan skrip kami, yang mengotomatiskan semuanya? Kami akan menyiapkan file konfigurasi untuk itu, akan memudahkan Anda dan kami untuk membacanya, dan kami dapat mengubahnya kapan saja. Kami juga akan melihat siapa, kapan, dan mengapa melakukan perubahan.”

Seorang insinyur DevOps dapat mempelajari satu atau lebih bahasa berikut: Python, Groovy, Bash, Powershell, Ruby, Go. Tidak perlu mengetahuinya secara mendalam - dasar-dasar sintaksis, prinsip OOP, dan kemampuan menulis skrip sederhana untuk otomatisasi sudah cukup.

2. Sistem operasi

Seorang insinyur DevOps harus memahami di server mana produk akan diinstal, di lingkungan mana produk akan dijalankan, dan layanan apa yang akan berinteraksi dengannya. Anda dapat memilih untuk berspesialisasi dalam keluarga Windows atau Linux.

3. Sistem kontrol versi

Tanpa pengetahuan tentang sistem kontrol versi, insinyur DevOps tidak akan bisa berbuat apa-apa. Git adalah salah satu sistem paling populer saat ini.

4. Penyedia cloud

AWS, Google, Azure - terutama jika kita berbicara tentang arah Windows.

Kirill Sergeev: “Penyedia cloud memberi kami server virtual yang sangat cocok dengan CI/CD.

Menginstal sepuluh server fisik memerlukan sekitar seratus operasi manual. Setiap server harus diluncurkan secara manual, menginstal dan mengkonfigurasi sistem operasi yang diperlukan, menginstal aplikasi kita di sepuluh server ini, dan kemudian memeriksa ulang semuanya sepuluh kali. Layanan cloud menggantikan prosedur ini dengan sepuluh baris kode, dan teknisi DevOps yang baik harus dapat mengoperasikannya. Hal ini menghemat waktu, tenaga dan uang – baik bagi pelanggan maupun perusahaan.”

5. Sistem orkestrasi: Docker dan Kubernetes

Kirill Sergeev: “Server virtual dibagi menjadi beberapa wadah, yang di dalamnya masing-masing kita dapat menginstal aplikasi kita. Jika ada banyak container, Anda perlu mengelolanya: aktifkan satu, matikan yang lain, buat cadangan di suatu tempat. Hal ini menjadi cukup kompleks dan memerlukan sistem orkestrasi.

Sebelumnya, setiap aplikasi ditangani oleh server terpisah - setiap perubahan dalam pengoperasiannya dapat mempengaruhi kemudahan servis aplikasi. Berkat container, aplikasi menjadi terisolasi dan dijalankan secara terpisah - masing-masing di mesin virtualnya sendiri. Jika terjadi kegagalan, tidak perlu membuang waktu untuk mencari penyebabnya. Lebih mudah menghancurkan wadah lama dan menambahkan wadah baru.”

6. Sistem konfigurasi: Chef, Ansible, Puppet

Saat Anda perlu memelihara seluruh armada server, Anda harus melakukan banyak jenis operasi yang sama. Ini panjang dan sulit, dan pekerjaan manual juga meningkatkan kemungkinan kesalahan. Di sinilah sistem konfigurasi membantu. Dengan bantuan mereka, mereka membuat skrip yang mudah dibaca oleh pemrogram, insinyur DevOps, dan administrator sistem. Skrip ini membantu melakukan operasi yang sama di server secara otomatis. Hal ini mengurangi operasi manual (dan karenanya kesalahan).

Karir seperti apa yang dapat dibangun oleh seorang insinyur DevOps?

Anda dapat berkembang baik secara horizontal maupun vertikal.

о ойко: “Dari sudut pandang pengembangan horizontal, para insinyur DevOps kini memiliki prospek terluas. Semuanya terus berubah, dan Anda dapat membangun keterampilan di berbagai bidang: mulai dari sistem kontrol versi hingga pemantauan, dari manajemen konfigurasi hingga database.

Anda bisa menjadi arsitek sistem jika seorang karyawan tertarik untuk memahami cara kerja aplikasi di semua tahap siklus hidupnya - mulai dari pengembangan hingga dukungan.”

Bagaimana cara menjadi insinyur DevOps?

  1. Baca Buku Panduan Proyek Phoenix dan DevOps. Ini adalah pilar sebenarnya dari filosofi DevOps, yang pertama adalah karya fiksi.
  2. Pelajari teknologi dari daftar di atas: sendiri atau melalui kursus online.
  3. Bergabunglah sebagai insinyur DevOps untuk proyek sumber terbuka.
  4. Berlatih dan tawarkan praktik DevOps pada proyek pribadi dan pekerjaan Anda.

Sumber: www.habr.com

Tambah komentar