Mühendisler için Python - kurs 65.000 ruble. Slurm'dan, eğitim 3 ay, Tarih 15 Ocak 2024.
Miscellanea / / November 27, 2023
Techlead, Skyeng / ex Slurm'da Veri Mühendisi, ISPsystem, Grid Dynamics
Sr. Test, Auriga, eski ISPsystem'de yazılım mühendisi
#1: Temel Python Sözdizimi ve Yapıları
Nedeni: Basit programlar yazmanın yanı sıra Python programlarının mantığını anlamayı öğrenmek en önemli görevdir. Python sözdizimine aşina değilseniz “Harika”.
- Veri türleri ve değişkenler, değişken/değişmez ve basit/bileşik veri türleri, hata ayıklama teknikleri.
- Koşullu ifade - mantıksal operatörler, basit koşullar, iç içe koşullar ve anahtar ifadesinin değiştirilmesi.
- Temel döngüler - while ve for döngüleri, yineleyiciler, döngü kesintileri.
- Fonksiyonlar, string metotları, listeler ve sözlükler.
- İstisnaların oluşturulması ve işlenmesi.
Alıştırma: Her ders için bir dizi küçük mikro görev.
#2: Geliştirilmiş Python Yeterliliği: Optimizasyonlar ve OOP
Neden: Python'un özelliklerine hakim olalım - onlar sayesinde bu kadar basit ve pratiktir. Ayrıca bu üç harfin (OOP'tan bahsediyoruz) anlamını akademik teori olmadan ve net bir amaç ile ortaya koyacağız.
- Döngülerle ileri düzeyde çalışma - verim ifadesi ve oluşturucular, Python'daki döngüler hakkında bilgiler, döngüdeki else ifadesi, kavrama döngülerinin optimizasyonu vb.
- Özel yapı türleri: frozendict, defaultdict, vb.
- Temel OOP kavramları: sınıflar, sınıf örnekleri, kapsülleme, kalıtım ve polimorfizm.
- Türleriniz için bağlam yöneticileri oluşturma: with yapısı.
Alıştırma: Her ders için bir dizi küçük mikro görev.
İleri Uygulama: Hizmet Kullanımı Denetimi.
CTO, bazı hizmetlerin artık ekipler tarafından kullanılmadığından şüphelenmeye başladı. Sorun, kullanılan hizmetleri izlemeye yönelik modülün son on yıldır güncellenmemiş olmasıdır: toplu verileri yükleyebilir ve döndürülen değerlerin formatı genel kabul görmüş değerlere uymuyor standartlar. Yakalanan metrikleri çıkarmak, bunları türe ve ekibe göre toplamak ve bu bilgiyi sorunun kapsamına ilişkin ilk değerlendirme için CTO'ya sunmak üzere seçildiniz.
#3: Ağ bağlantıları
Nedeni: Hemen hemen her hizmetin bir ağ protokolü aracılığıyla bağlanmak için bir arayüzü vardır. Ve bağlantı olmadan etkileşim imkansızdır. Neyse ki Python ekosistemi hemen hemen her protokol için istemci modüllerine sahiptir.
- Pip paketi ve üçüncü parti modüllerin kurulumu.
- Komutları ssh aracılığıyla yürütmek için Paramiko modülü.
- HTTP istekleri yapmak için istekler modülü.
- Veritabanları ve mesaj aracılarıyla çalışmaya yönelik modüllere genel bakış.
Pratik. Geliştirme ekibi yeni bir metodoloji sunuyor: Bir uyarının oluşmasına izin verirseniz bir görev alırsınız. Analitik alt sistem yalnızca seçilen hataları arar ve bunlarla ilgili mesajları Kafka mesaj aracısına gönderir. Göreviniz, hataları geliştiricilere geri gönderme döngüsünü tamamlamaktır: Tüketiciniz, Trello'da gerekli açıklama ve önceliğe sahip görevleri otomatik olarak oluşturmalıdır.
No. 4: Çeşitli formatlardaki metinlerle çalışmak
Nedeni: Hizmete bağlanmak savaşın yalnızca yarısıdır. Diğer yarısı bilgi paylaşımıdır. Ve bilgi genellikle belirli bir formattaki bir dizi metin karakterinden oluşur. Modüller kod çözmenize ve kodlamanıza yardımcı olacaktır. Tüm bilgilere ihtiyacınız yok mu? Düzenli ifadeler, önemli olanı çıkarmanıza ve geri kalanını atmanıza yardımcı olacaktır.
- Yeniden modülü ve düzenli ifadeler.
- Farklı formatlardaki verilerle çalışmaya yönelik modüller: ayrılmış değerler, json, yaml, xml.
- Komut satırı bağımsız değişkenlerini kullanma: argparse modülü.
Alıştırma: Hizmet kullanım verilerinin kaynağının oluşturulması.
Hizmetlerin kullanımının denetimi sırasında işletme için önemli bilgiler tespit ettiniz, CEO bile ilgilenmeye başladı. Kaybedilen paranın analiz edilerek bu tür durumların bir daha yaşanmasına izin verilmemesine karar verildi. Bunun için analistlere rapor hazırlayabilecekleri bir veri toplama aracı vermeniz gerekiyor. Sorun, izleme modülünün ayrı bir istek için hizmet limitlerini yaml formatlarında döndürmesi ve hizmet fiyatlarının faturalandırma sistemi tarafından xml formatında döndürülmesidir. Mevcut yüke ilişkin verileri limitler ve fiyatlar ile birleştirmek gerekir. Analitik departmanı, bir zaman aralığı ve toplama adımı belirleme olanağına sahip, JSON formatında toplu bilgiler talep etti.
No. 5: İşletim sistemiyle etkileşim
Nedeni: İşletim sistemiyle etkileşimin öneminin daha fazla açıklanmasına gerek yok. Python'a nasıl bağlanacağı bu derste.
- Dosyaları okuma ve yazma.
- os modülü - ortam değişkenlerini okuma, dizinler ve haklarla çalışma, süreçlerle çalışma.
- Süreçlerle etkileşimli etkileşim için alt süreç modülü.
Alıştırma: sunuculara erişimin otomatik olarak sağlanması.
Kullanılmayan hizmetlerden vazgeçme kampanyası sırasında ilginç bir durum ortaya çıktı: Bir bakkal sunucusu ekipler kapandı, ancak altyapı ekibi bunu periyodik olarak sunucu olarak kullandı. sahneleme. Ürün ekibinin bunu kullanmadığı ortaya çıktı çünkü periyodik olarak birisi kendi ayarlarının üzerine kendi ayarlarını yazıyordu. Artık kaynağın yalnızca bir ekibin üyelerine atanmasına ve otomasyonun hataların önlenmesine yardımcı olmasına karar verildi. Bu karışıklığı başlatan kişi olarak siz, hak yönetimi sistemini periyodik olarak denetleyecek ve yüklü hizmetler içindeki hakların yapılandırmasında değişiklikler yapın ve gerekirse hizmetlere yeniden okuma komutu verin konfigürasyonlar.
No. 6: Python'da K8S operatörü (canlı kodlama akışı)
13 Ekim 19:00
Nedeni: K8S'in yeteneklerini görevlerinize uyacak şekilde genişletelim.
No. 7: Ansible için kendi modülümüzü yazmak
Nedeni: Ansible güçlü bir konfigürasyon yönetim sistemidir ve hatta kendi modülleriyle genişletilebilir. Kendisinin ve modüllerin çoğunun Python'da yazılmış olması ne tesadüf.
- Ansible için kendi modüllerinizi yazma.
Alıştırma: hak yönetimi modülü yazma.
Uzun zaman önce, çok çok uzak bir galakside, belirli hizmetlerin haklarını vermek için zaten bir temsilci yazmıştınız. Çekmeyi itmeye değiştirmenin zamanı geldi ve Ansible bu konuda yardımcı olacak. İhtiyacınız olan tek şey sadece bir modül.
No. 8: API'nizin oluşturulması ve kullanım örnekleri
Nedeni: Kodu dağıtıma hazırlamak en önemli görevlerden biridir. Sahne hatlarına yönelik kendi komut dosyalarımız bu sürecin daha esnek ve kullanışlı olmasına yardımcı olur.
- Flask'ta REST API oluşturma.
- Prometheus Python Client ve Flask ile kendi prometheus ihracatçınızı oluşturma.
Alıştırma: verileri üçüncü taraf bir izleme sistemine yükleme.
Kullanılmayan ekipmanın maliyetleri kötümser tahminleri bile aştı. Artık mühendislik ekibinin başka bir sorumluluk alanı daha var: kullanılmayan hizmetleri izlemek. Bunu yapmak için, faturalandırma sistemini komut dosyanız aracılığıyla periyodik olarak yoklamanız ve verileri Prometheus'a aktarmanız gerekir. Alınan verilerin formatı hâlâ uygun değil. Bir bağlayıcı uygulamanız gerekir. Aynı zamanda bir uç nokta yazın, böylece analiz departmanı her zaman JSON formatında güncel bilgilere sahip olsun.
AMA oturumu + kurs konuşmacılarıyla resmi olmayan toplantı
28 Ekim 19:00
Kurs katılımcılarının endişelerini tartışmak için bir araya geliyoruz.
#9: Uygulamanızın API'sini test etme
Nedeni: Bazen kararsız bir kod yerine hiçbir koda sahip olmamak daha iyidir. Kodunuzu kırmaktan korkmamak için testler yazmanız gerekir.
- Test türleri: birim, entegrasyon ve uçtan uca.
- Pyhamcrest modülüne ve eşleştiricilerine genel bakış.
- Pytest'in mimarisi ve yetenekleri.
- Birim testleri yazmak için pytest ve pyhamcrest'i kullanma.
Alıştırma: API'niz için pytest ve pyhamcrest kullanarak testler yazma.
No. 10: CVS ve DevOps sistemleriyle etkileşim
- Gitlab işlem hatlarına entegrasyon örneğini kullanarak üçüncü taraf modülleri kullanma.
- Kod değişiklikleri hakkında bilgi almak için pygit'i kullanma.
Alıştırma: taahhütlerden değişiklik günlüğü oluşturma.
Mühendislik ekibi çözümlerinizi o kadar beğendi ki onlardan ilham aldılar ve kendi çözümlerini yazmaya başladılar. Ancak insanlar her zaman sürümler için açıklama yazmayı unuturlar. Bunu başarmak için ekip, taahhüt sözleşmelerini uygulamaya ve aşağıdaki durumlarda doğrudan taahhütlerden değişiklik günlükleri oluşturmaya karar verdi: geliştirme dalını sürüm dalıyla birleştirmek ve taahhüdün adı taahhüt kurallarına uymuyorsa, birleştirme isteğine şu ana kadar izin vermeyin: birleştirmek.
#11: Python'da Errbot ile Chatop'lar
Nedeni: Temel iş sorunları uygulama performansı veya kodda meydana gelen hatalar değildir. En ciddi sorunlar çalışanlarla iletişimin etkisiz olduğu durumlarda ortaya çıkar. Chatops bu sorunu çözmenin bir yoludur.
- Chatops konsepti: Chatops hangi sorunları çözüyor?
- Errbot çerçevesi: kurulum, temel eklenti şablonunun oluşturulması, konfigürasyonu ve başlatılması.
- Errbot çerçevesi: Mesajları işlemek için çeşitli seçeneklerle Chatops için kendi eklentinizi oluşturma.
Bitirme projesi
İlgilenenler için son tarih incelemesi ve koruma
Kurstan sonra Git'te bir projeniz olacak: çalışma görevinizi otomatikleştirebilir veya önerilen seçeneklerden birini yapabilirsiniz.
Bitmiş proje bir portföy çantası olarak kullanılabilir ve bir işe başvururken gösterilebilir.