Python pro inženýry - kurz 65 000 rub. ze Slurmu, školení 3 měsíce, Datum 15. ledna 2024.
Různé / / November 27, 2023
Techlead, Data Engineer ve společnosti Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Softwarový inženýr v Test, Auriga, ex ISPsystem
#1: Základní syntaxe a struktury Pythonu
Proč: naučit se rozumět logice programů v Pythonu, stejně jako psát jednoduché programy, je nejdůležitější úkol. „Skvělé“, pokud nejste obeznámeni se syntaxí Pythonu.
- Datové typy a proměnné, proměnlivé/neměnné a jednoduché/složené datové typy, techniky ladění.
- Podmíněný příkaz - logické operátory, jednoduché podmínky, vnořené podmínky a nahrazení příkazu switch.
- Základní smyčky - smyčky while a for, iterátory, přerušení smyčky.
- Funkce, metody řetězců, seznamů a slovníků.
- Generování a zpracování výjimek.
Cvičení: sada malých mikroúkolů pro každou lekci.
#2: Vylepšená znalost Pythonu: Optimalizace a OOP
Proč: Pojďme si osvojit vlastnosti Pythonu – díky nim je tak jednoduchý a praktický. Prozradíme také význam oněch tří písmen (mluvíme o OOP) bez akademické teorie a s jasným účelem
- Pokročilá práce s cykly - příkaz a generátory výnosů, přehled o cyklech v Pythonu, příkaz else v cyklu, optimalizace smyček s porozuměním atd.
- Speciální typy struktur: frozendict, defaultdict atd.
- Základní koncepty OOP: třídy, instance tříd, zapouzdření, dědičnost a polymorfismus.
- Vytváření kontextových manažerů pro vaše typy: konstrukce with.
Cvičení: sada malých mikroúkolů pro každou lekci.
Pokročilá praxe: Audit využití služeb.
ČTÚ začal mít podezření, že některé služby již týmy nevyužívají. Problém je, že modul pro sledování využívaných služeb nebyl posledních deset let aktualizován: není může nahrávat agregovaná data a formát vrácených hodnot neodpovídá obecně uznávaným hodnotám standardy. Byli jste vybráni, abyste extrahovali zachycené metriky, agregovali je podle typu a týmu a poskytli tyto informace CTO pro počáteční posouzení rozsahu problému.
#3: Síťová připojení
Proč: Téměř každá služba má rozhraní pro připojení přes nějaký síťový protokol. A bez spojení je interakce nemožná. Naštěstí má ekosystém Pythonu klientské moduly pro téměř jakýkoli protokol.
- Pip balíček a instalace modulů třetích stran.
- Modul Paramiko pro provádění příkazů přes ssh.
- Modul požadavků pro vytváření požadavků HTTP.
- Přehled modulů pro práci s databázemi a zprostředkovateli zpráv.
Praxe. Vývojový tým zavádí novou metodiku: Pokud povolíte výskyt výstrahy, obdržíte úkol. Analytický subsystém vyhledává pouze vybrané chyby a zasílá o nich zprávy zprostředkovateli zpráv Kafka. Vaším úkolem je dokončit cyklus vracení chyb vývojářům: váš spotřebitel by měl v Trello automaticky vytvářet úlohy s požadovaným popisem a prioritou.
č. 4: Práce s textem v různých formátech
Proč: Připojení ke službě je jen polovina úspěchu. Druhá polovina je sdílení informací. A informace je často soubor textových znaků v určitém formátu. Moduly vám pomohou dekódovat a kódovat. Nepotřebujete všechny informace? Regulární výrazy vám pomohou extrahovat to, co je důležité, a zbytek zahodit.
- Modul re a regulární výrazy.
- Moduly pro práci s daty v různých formátech: oddělené hodnoty, json, yaml, xml.
- Použití argumentů příkazového řádku: modul argparse.
Cvičení: Vytvoření zdroje dat o využití služby.
Při auditu využívání služeb jste zjistili důležité informace pro obchod, začal se zajímat i generální ředitel. Bylo rozhodnuto analyzovat ztracené peníze a nedovolit, aby se takové situace opakovaly. Chcete-li to provést, musíte dát analytikům nástroj pro sběr dat, aby mohli připravovat zprávy. Problém je v tom, že monitorovací modul vrací limity služeb pro samostatný požadavek ve formátech yaml a ceny za služby vrací fakturační systém ve formátu xml. Je nutné kombinovat údaje o aktuálním zatížení s limity a cenami. Analytické oddělení si vyžádalo agregované informace ve formátu JSON s možností určit časový interval a krok agregace.
č. 5: Interakce s operačním systémem
Proč: Důležitost interakce s operačním systémem není třeba dále vysvětlovat. Jak jej propojit s Pythonem je v této lekci.
- Čtení a zápis souborů.
- os modul - čtení proměnných prostředí, práce s adresáři a právy, práce s procesy.
- Modul subprocess pro interaktivní interakci s procesy.
Praxe: automatické poskytování přístupu k serverům.
Během kampaně za opuštění nevyužívaných služeb došlo ke kuriózní situaci: prodejna potravin týmy se vypnuly, ale tým infrastruktury jej pravidelně používal jako hostitele inscenování. Ukázalo se, že produktový tým to nepoužil, protože pravidelně někdo přepisuje jejich nastavení vlastním. Bylo rozhodnuto, že nyní bude zdroj přidělen pouze členům jednoho týmu a automatizace pomůže vyhnout se chybám. Vy, jako ten, kdo začal tento nepořádek, musíte napsat agenta, který bude pravidelně dotazovat systém správy práv a provést změny v konfiguraci práv v rámci nainstalovaných služeb a v případě potřeby dát službám příkaz k opětovnému načtení konfigurace.
č. 6: Operátor K8S v Pythonu (stream živého kódování)
13. října v 19:00
Proč: pojďme rozšířit možnosti K8S tak, aby vyhovovaly vašim úkolům.
č. 7: Psaní vlastního modulu pro Ansible
Proč: Ansible je výkonný systém správy konfigurace, který lze dokonce rozšířit o vlastní moduly. Jaká náhoda, že on sám a většina modulů je napsána v Pythonu.
- Psaní vlastních modulů pro Ansible.
Cvičení: psaní modulu správy práv.
Před dlouhou dobou, v předaleké galaxii, jste již napsali agenta, který by vydal práva na určité služby. Je čas změnit pull na push a Ansible s tím pomůže. Vše, co potřebujete, je pouze modul.
č. 8: Tvorba a případy použití vašeho API
Proč: Příprava kódu pro nasazení je jedním z nejdůležitějších úkolů. Naše vlastní skripty pro fázová potrubí pomáhají tento proces učinit flexibilnějším a pohodlnějším.
- Vytvoření REST API ve Flasku.
- Vytvoření vlastního exportéru prometheus pomocí klienta Prometheus Python a Flask.
Praxe: nahrávání dat do monitorovacího systému třetí strany.
Náklady na nevyužité vybavení překonaly i pesimistické prognózy. Nyní má inženýrský tým další oblast odpovědnosti – monitorování nevyužívaných služeb. Chcete-li to provést, musíte prostřednictvím skriptu pravidelně dotazovat fakturační systém a předávat data společnosti Prometheus. Formát přijímaných dat stále není vhodný. Musíte implementovat konektor. A zároveň napsat koncový bod, aby mělo analytické oddělení vždy po ruce aktuální informace ve formátu JSON.
Sezení AMA + NEFORMÁLNÍ setkání s přednášejícími kurzu
28. října v 19:00
Scházíme se, abychom probrali obavy účastníků kurzu.
#9: Testování API vaší aplikace
Proč: Někdy je lepší nemít žádný kód než kód, který je nestabilní. Abyste se nebáli prolomit svůj kód, musíte psát testy.
- Typy testů: jednotkové, integrační a end-to-end.
- Přehled modulu pyhamcrest a jeho párů.
- Architektura a možnosti pytestu.
- Použití pytest a pyhamcrest k psaní jednotkových testů.
Cvičení: psaní testů pomocí pytest a pyhamcrest pro vaše API.
č. 10: Interakce se systémy CVS a DevOps
- Použití modulů třetích stran na příkladu integrace do Gitlab pipeline.
- Použití pygit k získání informací o změnách kódu.
Cvičení: generování protokolu změn z potvrzení.
Inženýrskému týmu se vaše řešení natolik zalíbila, že se jimi inspiroval a začal psát svá vlastní. Ale lidé vždy zapomenou napsat popis k vydání. Aby toho dosáhl, tým se rozhodl implementovat konvence odevzdání a generovat protokoly změn přímo z odevzdání, když sloučení vývojové větve s verzí vydání, a pokud název odevzdání neodpovídá konvencím odevzdání, nepovolte požadavek na sloučení, dokud spojit.
#11: Chatopy s Errbotem v Pythonu
Proč: Hlavními obchodními problémy nejsou výkon aplikace nebo dokonce chyby vyskytující se v kódu. Nejzávažnější problémy nastávají, když je komunikace zaměstnanců neúčinná. Chatops je jedním ze způsobů, jak tento problém vyřešit.
- Koncept Chatops: jaké problémy řeší Chatops?
- Errbot framework: instalace, vytvoření základní šablony pluginu, konfigurace a spuštění.
- Errbot framework: vytvoření vlastního pluginu pro Chatops s různými možnostmi zpracování zpráv.
Konečný projekt
Kontrola termínu a ochrana pro zájemce
Po kurzu budete mít projekt na Git: můžete automatizovat svůj pracovní úkol nebo udělat jednu z navrhovaných možností.
Hotový projekt může být použit jako případ portfolia a zobrazen při žádosti o zaměstnání.