Python voor ingenieurs - cursus 65.000 wrijven. uit Slurm, training 3 maanden, Datum 15 januari 2024.
Gemengde Berichten / / November 27, 2023
Techlead, Data Engineer bij Skyeng / ex Slurm, ISPsystem, Grid Dynamics
sr. Software-ingenieur in Test, Auriga, ex ISPsystem
#1: Basis Python-syntaxis en -structuren
Waarom: het leren begrijpen van de logica van Python-programma's, evenals het schrijven van eenvoudige programma's, is de belangrijkste taak. “Geweldig” als je niet bekend bent met de Python-syntaxis.
- Gegevenstypen en variabelen, veranderlijke/onveranderlijke en eenvoudige/samengestelde gegevenstypen, foutopsporingstechnieken.
- Voorwaardelijke instructie - logische operatoren, eenvoudige voorwaarden, geneste voorwaarden en vervanging van switch-instructies.
- Basislussen - while- en for-lussen, iterators, lusonderbrekingen.
- Functies, methoden van strings, lijsten en woordenboeken.
- Uitzonderingen genereren en afhandelen.
Oefenen: een reeks kleine microtaken voor elke les.
#2: Verbeterde Python-vaardigheid: optimalisaties en OOP
Waarom: Laten we de functies van Python onder de knie krijgen - het is dankzij hen dat het zo eenvoudig en praktisch is. We zullen ook de betekenis van die drie letters onthullen (we hebben het over OOP) zonder academische theorie en met een duidelijk doel
- Geavanceerd werken met lussen - opbrengstverklaring en generatoren, inzichten over lussen in Python, else-verklaring in een lus, optimalisatie van begripslussen, enz.
- Speciale soorten structuren: frozendict, defaultdict, enz.
- Basis OOP-concepten: klassen, klasse-instanties, inkapseling, overerving en polymorfisme.
- Contextmanagers maken voor uw typen: de with-constructie.
Oefenen: een reeks kleine microtaken voor elke les.
Geavanceerde praktijk: audit van servicegebruik.
De CTO begon te vermoeden dat sommige diensten niet langer door de teams werden gebruikt. Het probleem is dat de module voor het monitoren van gebruikte diensten de afgelopen tien jaar niet is bijgewerkt: dat is niet het geval kan geaggregeerde gegevens uploaden en het formaat van de geretourneerde waarden komt niet overeen met algemeen aanvaarde waarden normen. U bent gekozen om de vastgelegde statistieken te extraheren, deze per type en team samen te voegen en deze informatie aan de CTO te verstrekken voor een eerste beoordeling van de omvang van het probleem.
#3: Netwerkverbindingen
Waarom: Bijna elke service heeft een interface om verbinding te maken via een bepaald netwerkprotocol. En zonder verbinding is interactie onmogelijk. Gelukkig heeft het Python-ecosysteem clientmodules voor vrijwel elk protocol.
- Pip-pakket en modules van derden installeren.
- Paramiko-module voor het uitvoeren van opdrachten via ssh.
- De verzoekenmodule voor het maken van HTTP-verzoeken.
- Overzicht van modules voor het werken met databases en message brokers.
Oefening. Het ontwikkelingsteam introduceert een nieuwe methodiek: Als u een waarschuwing laat plaatsvinden, ontvangt u een taak. Het analytische subsysteem zoekt alleen naar geselecteerde fouten en stuurt hierover berichten naar de Kafka-berichtenmakelaar. Jouw taak is om de cyclus van het retourneren van bugs aan ontwikkelaars te voltooien: jouw consument moet automatisch taken met de vereiste beschrijving en prioriteit in Trello aanmaken.
Nr. 4: Werken met tekst in verschillende formaten
Waarom: verbinding maken met de service is slechts het halve werk. De andere helft is het delen van informatie. En informatie bestaat vaak uit een reeks teksttekens in een bepaald formaat. Modules helpen u bij het decoderen en coderen. Heeft u niet alle informatie nodig? Met reguliere expressies kunt u eruit halen wat belangrijk is en de rest weggooien.
- De re-module en reguliere expressies.
- Modules voor het werken met gegevens in verschillende formaten: gescheiden waarden, json, yaml, xml.
- Opdrachtregelargumenten gebruiken: argparse module.
Oefening: Een bron van servicegebruiksgegevens maken.
Tijdens de audit van het gebruik van diensten identificeerde u belangrijke informatie voor het bedrijf, zelfs de CEO raakte geïnteresseerd. Er werd besloten het verloren geld te analyseren en te voorkomen dat dergelijke situaties zich opnieuw zouden voordoen. Om dit te doen, moet u analisten een hulpmiddel voor gegevensverzameling geven, zodat zij rapporten kunnen opstellen. Het probleem is dat de monitoringmodule servicelimieten retourneert voor een afzonderlijk verzoek in yaml-formaten, en dat prijzen voor services door het factureringssysteem in xml-formaat worden geretourneerd. Het is noodzakelijk om gegevens over de huidige belasting te combineren met limieten en prijzen. De analyseafdeling vroeg om geaggregeerde informatie in JSON-formaat, met de mogelijkheid om een tijdsinterval en aggregatiestap op te geven.
Nr. 5: Interactie met het besturingssysteem
Waarom: Het belang van interactie met het besturingssysteem hoeft niet verder uitgelegd te worden. Hoe je het met Python kunt verbinden, vind je in deze les.
- Bestanden lezen en schrijven.
- os-module - omgevingsvariabelen lezen, werken met mappen en rechten, werken met processen.
- De subprocesmodule voor interactieve interactie met processen.
Praktijk: automatisch toegang verlenen tot servers.
Tijdens de campagne om ongebruikte diensten stop te zetten, deed zich een merkwaardige situatie voor: een boodschappenserver teams stopten ermee, maar het infrastructuurteam gebruikte het af en toe als host enscenering. Het bleek dat het productteam het niet gebruikte omdat iemand af en toe zijn instellingen overschreef met zijn eigen instellingen. Er werd besloten dat de bron nu alleen aan leden van één team wordt toegewezen en dat automatisering fouten zal helpen voorkomen. Jij, als degene die deze puinhoop heeft veroorzaakt, moet een agent schrijven die periodiek het rechtenbeheersysteem zal bevragen en wijzigingen aanbrengen in de configuratie van rechten binnen geïnstalleerde services en, indien nodig, de services een opdracht geven om opnieuw te lezen configuraties.
Nr. 6: K8S-operator in Python (live-coderingsstream)
13 oktober om 19:00 uur
Waarom: laten we de mogelijkheden van K8S uitbreiden zodat deze bij uw taken passen.
Nr. 7: Het schrijven van onze eigen module voor Ansible
Waarom: Ansible is een krachtig configuratiebeheersysteem, en zelfs uitbreidbaar met eigen modules. Wat een toeval dat het zelf en de meeste modules in Python zijn geschreven.
- Zelf modules schrijven voor Ansible.
Oefenen: het schrijven van een rechtenbeheermodule.
Lang geleden, in een sterrenstelsel ver, ver weg, schreven jullie al een agent om rechten te verlenen voor bepaalde diensten. Het is tijd om van pull naar push te veranderen en Ansible helpt hierbij. Het enige wat je nodig hebt is slechts een module.
Nr. 8: Creatie en gebruiksscenario's van uw API
Waarom: code voorbereiden voor implementatie is een van de belangrijkste taken. Onze eigen scripts voor fasepijplijnen helpen dit proces flexibeler en gemakkelijker te maken.
- Een REST API maken in Flask.
- Creëer uw eigen prometheus-exporteur met Prometheus Python Client en Flask.
Oefenen: gegevens uploaden naar een monitoringsysteem van derden.
De kosten van ongebruikte apparatuur overtroffen zelfs de pessimistische voorspellingen. Nu heeft het technische team een ander verantwoordelijkheidsgebied: het monitoren van ongebruikte services. Om dit te doen, moet u het factureringssysteem periodiek via uw script ondervragen en de gegevens doorgeven aan Prometheus. Het formaat van de ontvangen gegevens is nog steeds niet geschikt. U moet een connector implementeren. En schrijf tegelijkertijd een endpoint zodat de analytics-afdeling altijd up-to-date informatie in JSON-formaat bij de hand heeft.
AMA-sessie + INFORMELE bijeenkomst met cursussprekers
28 oktober om 19:00 uur
We komen bijeen om de zorgen van de cursisten te bespreken.
#9: De API van uw applicatie testen
Waarom: Soms is het beter om geen code te hebben dan code die instabiel is. Om niet bang te zijn om je code te breken, moet je tests schrijven.
- Soorten tests: unit, integratie en end-to-end.
- Overzicht van de pyhamcrest-module en zijn matchers.
- Architectuur en mogelijkheden van pytest.
- Pytest en pyhamcrest gebruiken om unit-tests te schrijven.
Oefenen: tests schrijven met pytest en pyhamcrest voor uw API.
Nr. 10: Interactie met CVS- en DevOps-systemen
- Modules van derden gebruiken met behulp van het voorbeeld van integratie in Gitlab-pijplijnen.
- Pygit gebruiken om informatie te krijgen over codewijzigingen.
Oefening: een changelog genereren van commits.
Het technische team vond uw oplossingen zo leuk dat ze erdoor geïnspireerd raakten en hun eigen oplossingen begonnen te schrijven. Maar mensen vergeten altijd beschrijvingen voor releases te schrijven. Om dit te bereiken besloot het team commit-conventies te implementeren en changelogs rechtstreeks vanuit commits te genereren wanneer het mergen van de dev branch met de release one, en als de naam van de commit niet voldoet aan de commit conventies, sta dan geen merge-request toe totdat samenvoegen.
#11: Chatops met Errbot in Python
Waarom: De belangrijkste bedrijfsproblemen zijn niet de applicatieprestaties of zelfs fouten die in de code voorkomen. De ernstigste problemen ontstaan wanneer de communicatie met medewerkers niet effectief is. Chatops is een manier om dit probleem op te lossen.
- Chatops-concept: welke problemen lost Chatops op?
- Errbot-framework: installatie, creatie van een basisplug-insjabloon, configuratie en lancering.
- Errbot framework: je eigen plugin maken voor Chatops met diverse mogelijkheden voor het verwerken van berichten.
Laatste project
Deadlinebeoordeling en bescherming voor geïnteresseerden
Na de cursus heb je een project op Git: je kunt je werktaak automatiseren of een van de voorgestelde opties uitvoeren.
Het voltooide project kan als portfoliocase worden gebruikt en worden getoond bij het solliciteren.