Python per ingegneri: corso 65.000 rubli. da Slurm, formazione 3 mesi, data 15 gennaio 2024.
Miscellanea / / November 27, 2023
Techlead, Data Engineer presso Skyeng / ex Slurm, ISPsystem, Grid Dynamics
sr. Ingegnere informatico in Test, Auriga, ex ISPsystem
#1: Sintassi e strutture di base di Python
Perché: imparare a comprendere la logica dei programmi Python, così come scrivere programmi semplici, è il compito più importante. "Ottimo" se non hai familiarità con la sintassi Python.
- Tipi di dati e variabili, tipi di dati mutabili/immutabili e semplici/compositi, tecniche di debugging.
- Dichiarazione condizionale: operatori logici, condizioni semplici, condizioni nidificate e sostituzione di istruzioni switch.
- Cicli di base: cicli while e for, iteratori, interruzioni di loop.
- Funzioni, metodi delle stringhe, liste e dizionari.
- Generazione e gestione delle eccezioni.
Pratica: una serie di piccoli microcompiti per ogni lezione.
N. 2: Miglioramento della competenza in Python: ottimizzazioni e OOP
Perché: impariamo a padroneggiare le funzionalità di Python: è grazie a loro che è così semplice e pratico. Riveleremo anche il significato di quelle tre lettere (stiamo parlando di OOP) senza teoria accademica e con uno scopo chiaro
- Lavoro avanzato con i loop: istruzioni e generatori di rendimento, approfondimenti sui loop in Python, istruzioni else in un ciclo, ottimizzazione dei cicli di comprensione, ecc.
- Tipi speciali di strutture: frozendict, defaultdict, ecc.
- Concetti base dell'OOP: classi, istanze di classi, incapsulamento, ereditarietà e polimorfismo.
- Creazione di gestori di contesto per i tuoi tipi: il costrutto with.
Pratica: una serie di piccoli microcompiti per ogni lezione.
Pratica avanzata: verifica dell'utilizzo del servizio.
Il CTO cominciò a sospettare che alcuni servizi non venissero più utilizzati dalle squadre. Il problema è che il modulo per il monitoraggio dei servizi utilizzati non viene aggiornato da dieci anni: non è così può caricare dati aggregati e il formato dei valori restituiti non corrisponde a quelli generalmente accettati standard. Sei stato scelto per estrarre le metriche acquisite, aggregarle per tipologia e team e fornire queste informazioni al CTO per una valutazione iniziale della portata del problema.
N. 3: connessioni di rete
Perché: quasi tutti i servizi dispongono di un'interfaccia per la connessione tramite un protocollo di rete. E senza connessione l’interazione è impossibile. Fortunatamente, l’ecosistema Python dispone di moduli client per quasi tutti i protocolli.
- Pacchetto Pip e installazione di moduli di terze parti.
- Modulo Paramiko per l'esecuzione di comandi tramite ssh.
- Il modulo delle richieste per effettuare richieste HTTP.
- Panoramica dei moduli per lavorare con database e broker di messaggi.
Pratica. Il team di sviluppo sta introducendo una nuova metodologia: se consenti che si verifichi un avviso, riceverai un'attività. Il sottosistema analitico cerca solo gli errori selezionati e invia messaggi al riguardo al broker di messaggi Kafka. Il tuo compito è completare il ciclo di restituzione dei bug agli sviluppatori: il tuo consumatore dovrebbe creare automaticamente attività con la descrizione e la priorità richieste in Trello.
N. 4: Lavorare con testo in vari formati
Perché: connettersi al servizio è solo metà dell'opera. L’altra metà è la condivisione delle informazioni. E le informazioni sono spesso un insieme di caratteri di testo in un determinato formato. I moduli ti aiuteranno a decodificare e codificare. Non ti servono tutte le informazioni? Le espressioni regolari ti aiuteranno a estrarre ciò che è importante e a scartare il resto.
- Il modulo re e le espressioni regolari.
- Moduli per lavorare con dati in diversi formati: valori separati, json, yaml, xml.
- Utilizzo degli argomenti della riga di comando: modulo argparse.
Esercizio: Creare un'origine dei dati sull'utilizzo del servizio.
Durante l'audit sull'utilizzo dei servizi avete individuato informazioni importanti per l'azienda, anche l'amministratore delegato si è interessato. Si è deciso di analizzare il denaro perso e di non permettere che situazioni del genere si ripetano. Per fare questo è necessario fornire agli analisti uno strumento di acquisizione dati in modo che possano preparare dei report. Il problema è che il modulo di monitoraggio restituisce i limiti di servizio per una richiesta separata in formato yaml e i prezzi per i servizi vengono restituiti dal sistema di fatturazione in formato xml. È necessario combinare i dati sul carico attuale con limiti e prezzi. Il reparto di analisi ha richiesto informazioni aggregate in formato JSON con la possibilità di specificare un intervallo di tempo e una fase di aggregazione.
N. 5: Interazione con il sistema operativo
Perché: non è necessario spiegare ulteriormente l'importanza dell'interazione con il sistema operativo. Come collegarlo con Python è in questa lezione.
- Lettura e scrittura di file.
- modulo os: lettura delle variabili di ambiente, utilizzo delle directory e dei diritti, utilizzo dei processi.
- Il modulo sottoprocesso per l'interazione interattiva con i processi.
Pratica: fornitura automatica dell'accesso ai server.
Durante la campagna per l'abbandono dei servizi non utilizzati, si è verificata una situazione curiosa: un cameriere di generi alimentari i team vengono chiusi, ma il team dell'infrastruttura lo utilizza periodicamente come host messa in scena. Si è scoperto che il team del prodotto non lo utilizzava perché periodicamente qualcuno sovrascriveva le proprie impostazioni con le proprie. È stato deciso che ora la risorsa verrà assegnata solo ai membri di una squadra e l'automazione aiuterà a evitare errori. Tu, come colui che ha iniziato questo pasticcio, devi scrivere un agente che effettuerà periodicamente il polling del sistema di gestione dei diritti e apportare modifiche alla configurazione dei diritti all'interno dei servizi installati e, se necessario, dare ai servizi un comando di rilettura configurazioni.
N. 6: operatore K8S in Python (flusso di codifica live)
13 ottobre alle 19:00
Perché: espandiamo le capacità di K8S per adattarle alle vostre attività.
N. 7: scrivere il nostro modulo per Ansible
Perché: Ansible è un potente sistema di gestione della configurazione e persino espandibile con i propri moduli. Che coincidenza che esso stesso e la maggior parte dei moduli siano scritti in Python.
- Scrivere i propri moduli per Ansible.
Esercitazione: scrivere un modulo di gestione dei diritti.
Molto tempo fa, in una galassia lontana lontana, hai già scritto a un agente per concederti i diritti su determinati servizi. È ora di cambiare pull in push e Ansible ti aiuterà in questo. Tutto ciò di cui hai bisogno è solo un modulo.
N. 8: Creazione e casi d'uso della tua API
Perché: preparare il codice per la distribuzione è una delle attività più importanti. I nostri script per le pipeline di fase contribuiscono a rendere questo processo più flessibile e conveniente.
- Creazione di un'API REST in Flask.
- Creazione del tuo esportatore Prometheus con Prometheus Python Client e Flask.
Pratica: caricare i dati su un sistema di monitoraggio di terze parti.
I costi delle attrezzature inutilizzate hanno superato anche le previsioni pessimistiche. Ora il team di ingegneri ha un'altra area di responsabilità: monitorare i servizi inutilizzati. Per fare ciò, è necessario interrogare periodicamente il sistema di fatturazione tramite il proprio script e passare i dati a Prometheus. Il formato dei dati ricevuti non è ancora adatto. È necessario implementare un connettore. E allo stesso tempo scrivi un endpoint in modo che il reparto di analisi abbia sempre a portata di mano informazioni aggiornate in formato JSON.
Sessione AMA + incontro INFORMALE con i relatori del corso
28 ottobre alle 19:00
Ci incontriamo per discutere le preoccupazioni dei partecipanti al corso.
N. 9: testare l'API della tua applicazione
Perché: a volte è meglio non avere codice piuttosto che codice instabile. Per non aver paura di infrangere il tuo codice, devi scrivere dei test.
- Tipologie di test: unitario, di integrazione ed end-to-end.
- Panoramica del modulo pyhamcrest e dei suoi abbinamenti.
- Architettura e funzionalità di pytest.
- Utilizzo di pytest e pyhamcrest per scrivere test unitari.
Esercizio: scrivere test utilizzando pytest e pyhamcrest per la tua API.
N. 10: Interazione con i sistemi CVS e DevOps
- Utilizzo di moduli di terze parti utilizzando l'esempio di integrazione nelle pipeline Gitlab.
- Utilizzo di pygit per ottenere informazioni sulle modifiche al codice.
Esercizio: generare un registro delle modifiche dai commit.
Al team di ingegneri sono piaciute così tanto le tue soluzioni che ne sono stati ispirati e hanno iniziato a scriverne di proprie. Ma le persone dimenticano sempre di scrivere le descrizioni dei rilasci. Per raggiungere questo obiettivo, il team ha deciso di implementare le convenzioni di commit e generare log delle modifiche direttamente dai commit quando unendo il ramo dev con quello di rilascio e, se il nome del commit non è conforme alle convenzioni di commit, non consentire la richiesta di unione fino a quando unire.
#11: Chatops con Errbot in Python
Perché: i principali problemi aziendali non sono le prestazioni dell'applicazione o addirittura gli errori che si verificano nel codice. I problemi più seri sorgono quando la comunicazione tra i dipendenti è inefficace. Chatops è un modo per risolvere questo problema.
- Il concetto di Chatops: quali problemi risolve Chatops?
- Framework Errbot: installazione, creazione di un template plugin base, configurazione e lancio.
- Framework Errbot: creazione del proprio plugin per Chatops con varie opzioni per l'elaborazione dei messaggi.
Progetto finale
Revisione delle scadenze e tutela degli interessati
Dopo il corso, avrai un progetto su Git: potrai automatizzare il tuo compito lavorativo o svolgere una delle opzioni proposte.
Il progetto finito può essere utilizzato come portfolio case e mostrato quando si fa domanda per un lavoro.