4-6 September, di St. Petersburg, di ruang konferensi Selectel, DevOps Slurm tiga hari akan diadakan.

Kami membangun program berdasarkan ide bahwa setiap orang dapat membaca karya teoretis di DevOps, seperti manual untuk alat, secara mandiri. Hanya pengalaman dan praktik yang menarik: penjelasan tentang bagaimana melakukannya itu perlu dan tidak perlu, dan sebuah cerita tentang bagaimana kita melakukannya.
Setiap perusahaan, setiap administrator atau pengembang memiliki level DevOps sendiri. Beberapa menyalahgunakan Git, yang lain menerapkan SRE. Kursus ini diselenggarakan sehingga semua orang menemukan sesuatu yang relevan yang dapat diterapkan di sini dan sekarang.
Kita mulai dengan Git, kemudian melihat pengembangan aplikasi, interaksi kode dan infrastruktur, membangun CI / CD, menggambarkan infrastruktur sebagai kode (IaC), menguji solusi yang dihasilkan, mengatur pemantauan, mengumpulkan dan mempelajari log, dan akhirnya sampai ke SRE: putar keandalan menjadi cerita yang terukur dan dikelola.
Git
Sekarang Geet tidak hanya digunakan oleh orang yang membeli laptop pertama kemarin. Ini adalah alat yang sepele dan ada di mana-mana, dan bagaimanapun, kita sering menghadapi penyalahgunaannya: dari push paksa ke master, dan diakhiri dengan menyalin file dari Gita ke server melalui Ctrl-C, Ctrl-V.
Kami memberi tahu Anda bagaimana melakukannya tidak perlu, bagaimana melakukannya, bagaimana melakukannya di Southbridge.
Kami lulus latihan: dasar-dasar Gita, kerja tim.
Topik # 1: Dasar-Dasar Git
- Perintah dasar git init, komit, tambahkan, perbeda, log, status, tarik, tekan
- Alur, cabang, dan tag, gabungkan strategi
- Bekerja dengan beberapa repo jarak jauh
Topik # 2: Kerja Sama Tim dengan Git
- Aliran github
- Fork, remote, tarik permintaan
- Konflik, rilis, sekali lagi tentang Gitflow dan aliran lain terkait dengan tim
Materi tersebut diatur sehingga administrator dan pengembang dapat segera menerapkan semua praktik dalam pekerjaan.
Dari sudut pandang DevOps, kerja yang tepat dengan Git mengatur dan mengotomatiskan proses pengembangan dan administrasi, menghilangkan sejumlah masalah berulang, dan meningkatkan produktivitas tenaga kerja.
Pengembang DevOps
Kami melihat DevOps melalui mata pengembang: kami meluncurkan lingkungan lokal, menulis aplikasi, mengkonfigurasi pemantauan dan pencatatannya, mengujinya secara lokal, mengatur penyimpanan variabel / rahasia dan penemuan layanan, dan menonton penelusuran (opentracing).
Tema โ3: Bekerja dengan aplikasi dari sudut pandang pengembangan
- Menyiapkan Lingkungan Lokal Anda: Praktik Terbaik
- Kami menulis microservice dengan Python (termasuk tes)
- Menggunakan docker-compose dalam pengembangan
Tema # 4: Kode dan Interoperabilitas Infrastruktur
Akibatnya, pengembang akan melihat bagaimana kode harus mengirim log, cara mengujinya, bagaimana kode itu akan di-debug di masa mendatang. Administrator akan memahami kebutuhan pengembang: kesalahan apa yang terjadi dalam kode, cara mengatur pengujian untuk pengembang, dan cara menguji proyek sendiri.
Pada tahap ini, tugas utama DevOps diselesaikan: saling pengertian dan kolaborasi antara perawan dan ops dibangun. Ini adalah langkah kunci dalam bergerak dari peluncuran tugas ke keterlibatan yang bertanggung jawab.
Hasilnya, kecepatan dan kualitas pekerjaan semakin meningkat.
CI / CD
Otomasi modern melibatkan CI / CD. Kita akan mulai dengan melihat otomatisasi manual: makefiles, githukes, scripts. Kami akan menganalisis kapan alat ini masih relevan, dan kapan mereka tidak boleh digunakan.
Kemudian, mari kita lihat praktik terbaik CI modern menggunakan Gitlab sebagai contoh.
Topik # 5: CI / CD Pengantar Otomasi
- Pengantar Otomasi
- Alat (bash, make, gradle)
- Menggunakan git-hooks untuk mengotomatisasi proses
- Jalur perakitan konveyor pabrik dan penerapannya dalam TI
- Contoh membangun pipa "umum"
- Perangkat lunak CI / CD modern: Drone CI, Pipa BitBucket, Travis, dll.
Topik # 6: CI / CD: Bekerja dengan Gitlab
- Gitlab CI - Umum
- Gitlab Runner, jenis dan aplikasinya
- Gitlab CI, fitur kustomisasi, praktik terbaik
- Tahapan Gitlab CI
- Variabel Gitlab CI
- Perakitan, pengujian, penyebaran
- Batasan kontrol dan eksekusi: hanya, saat
- Bekerja dengan artefak
- Templat di dalam .gitlab-ci.yml, menggunakan kembali tindakan pada bagian pipa yang berbeda
- Sertakan - bagian
- Manajemen terpusat dari gitlab-ci.yml (satu file dan push otomatis ke repositori lainnya)
Kerja bersama dari administrator dan pengembang menuju ke tingkat yang baru: administrator menulis template CI, dan pengembang memperbaikinya dengan membangun CI mereka secara independen dari administrator.
Ketergantungan pengembang pada administrator berkurang, jumlah pekerjaan manual berkurang, masalah "satu-satunya orang yang tahu cara bekerja dengan file make-up" dihilangkan. Peluncuran terjadi dengan andal dan cepat.
IaC
Subjek Infrastruktur sebagai Kode pada contoh Terraform akan memberi tahu administrator cloud Selectel Alexei Stepanenko. Ini akan menunjukkan cara menyebarkan dan meningkatkan server secara cepat dan otomatis, cara mengemas gambar secara otomatis, cara menggunakan templat konfigurasi untuk segera menerima mesin yang dikustomisasi.
Orang yang membuat ribuan solusi IaC akan memberi tahu Anda bagaimana melakukannya dengan benar dan bagaimana melakukannya.
Solusi Selectel Cloud Minimal Edit cocok untuk Google dan cloud Amazon.
Seorang karyawan di Southbridge Nikolay Mesropyan akan menunjukkan cara menggunakan aplikasi yang berfungsi tanpa downtime dan menguji fungsinya.
Jika Anda mengedit infrastruktur dengan tangan (mengkonfigurasi server, menginstal perpustakaan, paket sesuai kebutuhan), ketika Anda mencoba untuk meningkatkan salinan lingkungan, Anda perlu mengingat dan mereproduksi semua tindakan Anda. Tugas ini dengan mudah memakan waktu 3-5 hari. Bekerja dengan infrastruktur sebagai kode memastikan bahwa Anda memiliki deskripsi terkini tentang lingkungan yang dapat digunakan dalam hitungan menit.
Nikolay akan memberi tahu Anda cara menulis buku pedoman, kesalahan apa yang terjadi, mengapa terkadang buku pedoman bekerja lambat atau tidak seperti yang diharapkan. Ini adalah pengalaman bertahun-tahun menggunakan IaC di Southbridge.
Topik # 7: Infrastruktur sebagai Kode
- IaC: pendekatan infrastruktur sebagai kode
- Penyedia cloud sebagai penyedia infrastruktur
- Alat inisialisasi sistem, perakitan gambar (pengepak)
- IaC pada contoh Terraform
- Penyimpanan konfigurasi, kolaborasi, otomasi aplikasi
- Berlatih membuat buku pedoman yang memungkinkan
- Idempotency, declarativeness
- Itu tidak mungkin
- Database sebagai Kode / PostgreSQL Failover
Infrastruktur menjadi deklaratif dan idempoten.
Administrator belajar untuk mengelola infrastruktur yang kompleks: dengan cepat menciptakan lingkungan baru, mempertahankan kesatuan semua lingkungan, melihat sejarah perubahan, yang sangat penting ketika beberapa tim mengerjakan proyek.
Pengembang dapat mempelajari infrastruktur, secara mandiri menyebarkan lingkungan mereka.
Bagian bonus - membuat dan mengonfigurasi cluster database PostgreSQL yang toleran terhadap kesalahan. Kami akan memberikan buku pedoman yang sudah jadi yang kami gunakan di Southbridge, Anda akan menggunakan cluster di tempat pelatihan dan Anda dapat menggunakan solusi ini di perusahaan Anda.
Pengujian dan Pemantauan Infrastruktur
Otomasi memungkinkan Anda untuk segera meluncurkan kesalahan ke seribu server. Setiap perubahan membutuhkan pengujian. Di sisi lain, pengujian manual membutuhkan banyak waktu sehingga meniadakan manfaat otomatisasi.
Kami akan menunjukkan dalam praktiknya bagaimana menulis pengujian peran. Akibatnya, Anda dapat menulis tes untuk perusahaan Anda. Anda tidak perlu lagi mengingat pengaturan yang dibuat, menggambarkannya dalam pengujian dan secara otomatis memeriksa bahwa semua keputusan dan kruk sebelumnya sudah ada.
Kemudian kita akan belajar cara menambahkan semua server baru secara otomatis ke pemantauan. Pertimbangkan secara terpisah memonitor infrastruktur dan aplikasi. Kami menunjukkan praktik buruk dan baik.
Topik # 8: Menguji Infrastruktur
- Pengujian dan integrasi berkesinambungan dengan Molekul dan Gitlab CI
- Aplikasi Vagrant
Topik # 9: Memantau Infrastruktur dengan Prometheus
- Mengapa pemantauan dibutuhkan
- Jenis pemantauan
- Pemberitahuan dalam sistem pemantauan
- Cara membangun sistem pemantauan yang sehat
- Pemberitahuan yang dapat dibaca manusia, untuk semua orang
- Pemeriksaan Kesehatan: apa yang harus dicari
- Otomasi berdasarkan data pemantauan
Pemantauan yang tidak tepat adalah kurangnya pemantauan. Untuk bisnis tidak masalah bahwa halaman utama toko online tersedia jika bentuk pembayaran memberikan kesalahan.
Pengembang dan administrator sama-sama terlibat dalam pengaturan pemantauan dan pemecahan masalah. Selain itu, secara tradisional, tugas pemantauan jatuh pada administrator. Kursus kami akan menunjukkan kepada pengembang peran apa yang mereka mainkan dalam menciptakan pemantauan yang efektif. Administrator akan menerima praktik terbaik Southbridge. Akibatnya, jumlah kerugian yang disebabkan oleh crash dan rem situs atau aplikasi akan cepat menurun.
Bagian bonus: otomatisasi berbasis pemantauan. Misalnya, memantau laporan bahwa beban telah tiba di situs, dan penskalaan server web dimulai secara otomatis.
Penebangan
Kesalahan utama dalam bekerja dengan log adalah bahwa administrator dan pengembang melihatnya secara langsung di server. Jika Anda memiliki lebih dari satu server, ini adalah waktu yang lama. Ini bukan sekuler: pengembang memasuki server di mana ia seharusnya tidak berada.
DevOps membutuhkan pengumpulan, pemrosesan, dan analisis log terpusat.
Topik # 10: Pencatatan Aplikasi dengan ELK
- Aplikasi utama dan fitur elastis (pencarian, penyimpanan, fitur penskalaan, fleksibilitas konfigurasi)
- Gambaran umum kibana (fitur utama, bahasa permintaan, manajemen dasbor, pembuatan bagan)
- Tinjauan umum produk elastis dan aplikasinya
- Mengumpulkan metrik dalam APM (penelusuran aplikasi)
- Ekstra: Tinjauan Produk Baru - SIEM
Implementasi pendekatan ini akan membuat log menjadi alat yang sederhana dan mudah dipahami untuk analisis, konfigurasi dan penyesuaian aplikasi dan infrastruktur.
SRE
Dan kita sampai pada topik yang baru saja dilihat Southbridge dan yang ingin disampaikan oleh pembicara lain pada hari terakhir Slurm. Kami senang bahwa Ivan Kruglov dari Booking.com setuju untuk membacanya.
Sebuah proyek hidup di dunia nyata, di mana keandalan tidak pernah absolut, dan setiap solusi membutuhkan biaya.
Apa itu SLA untuk proyek yang kompleks? Katakanlah bagaimana mengevaluasi bahwa situs tersebut tersedia, tetapi gambarnya dimuat dengan penundaan. Apa metrik SLA, di mana untuk menembak mereka, bagaimana menembak mereka?
Bagaimana cara menginstal SLA? Bagaimana cara menahan mereka?
Tema # 11: SRE
Definisi SLA, SLO, Anggaran Kesalahan dan istilah menakutkan lainnya dari dunia SRE
SRE: Praktik Memantau SLI dan SLO
SRE: Praktek Anggaran Kesalahan
SRE: Manajemen beban interupsi dan operasional (apigateway, service mesh, circuit brackers)
Bisnis menginginkan SRE. Paling tidak pada tingkat paling sederhana: ambil server cadangan atau naikkan dari cadangan? Satu database atau cluster? Apakah perlindungan DDoS proaktif atau hanya pada saat serangan?
Direktur tidak puas dengan cerita bahwa "situs berfungsi" ketika klien memanggilnya dan menginformasikan bahwa formulir pemesanan tidak terbuka.
Oleh karena itu, penting bagi seorang insinyur DevOps untuk setidaknya memahami SRE secara dangkal agar dapat berbicara dengan bisnis mengenai kebutuhannya secara memadai.
Ringkasan
Selama Slurm DevOps, administrator dan pengembang akan belajar:
- bekerja dengan benar dengan Git;
- mengatur pembangunan lokal;
- mengkonfigurasi (administrator) dan menggunakan (pengembang) CI / CD;
- bekerja dengan infrastruktur sebagai kode;
- menguji infrastruktur;
- memantau infrastruktur dan aplikasi;
- mengkonfigurasi logging;
- mengerti, dan idealnya - gunakan SRE.
Untuk pembaca yang penuh perhatian - dengan kode promo habrapost, diskon 15%.
Untuk semua poin, kami sedang mempersiapkan latihan dan peralatan. Jadi, setiap peserta sekembalinya dari Slurm akan dapat membawa perusahaannya ke tingkat DevOps berikutnya.
Untuk bisnis, ini berarti administrasi dan pengembangan yang lebih murah, pengurangan waktu henti, peningkatan keandalan, pengiriman fitur yang lebih cepat dan penghapusan bug.