Python para engenheiros - curso 65.000 rublos. do Slurm, treinamento de 3 meses, data 15 de janeiro de 2024.
Miscelânea / / November 27, 2023
Techlead, engenheiro de dados na Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Engenheiro de software em Teste, Auriga, ex ISPsystem
Nº 1: Sintaxe e estruturas básicas do Python
Porquê: aprender a compreender a lógica dos programas Python, bem como escrever programas simples, é a tarefa mais importante. “Ótimo” se você não estiver familiarizado com a sintaxe do Python.
- Tipos de dados e variáveis, tipos de dados mutáveis/imutáveis e simples/compostos, técnicas de depuração.
- Instrução condicional - operadores lógicos, condições simples, condições aninhadas e substituição de instrução switch.
- Loops básicos - loops while e for, iteradores, interrupções de loop.
- Funções, métodos de strings, listas e dicionários.
- Gerando e tratando exceções.
Prática: um conjunto de pequenas microtarefas para cada aula.
Nº 2: Proficiência aprimorada em Python: otimizações e OOP
Por que: vamos dominar os recursos do Python - é por causa deles que ele é tão simples e prático. Também revelaremos o significado dessas três letras (estamos falando de OOP) sem teoria acadêmica e com um propósito claro
- Trabalho avançado com loops - instrução de rendimento e geradores, insights sobre loops em Python, instrução else em um loop, otimização de loops de compreensão, etc.
- Tipos especiais de estruturas: frozendict, defaultdict, etc.
- Conceitos básicos de OOP: classes, instâncias de classes, encapsulamento, herança e polimorfismo.
- Criando gerenciadores de contexto para seus tipos: a construção with.
Prática: um conjunto de pequenas microtarefas para cada aula.
Prática Avançada: Auditoria de Uso de Serviço.
O CTO começou a suspeitar que alguns serviços não estavam mais sendo utilizados pelas equipes. O problema é que o módulo de monitoramento dos serviços utilizados não é atualizado há dez anos: não pode fazer upload de dados agregados e o formato dos valores retornados não corresponde aos geralmente aceitos padrões. Você foi escolhido para extrair as métricas capturadas, agregá-las por tipo e equipe e fornecer essas informações ao CTO para uma avaliação inicial do escopo do problema.
Nº 3: Conexões de rede
Por quê: Quase todos os serviços possuem uma interface para conexão por meio de algum protocolo de rede. E sem conexão a interação é impossível. Felizmente, o ecossistema Python possui módulos clientes para quase todos os protocolos.
- Pacote Pip e instalação de módulos de terceiros.
- Módulo Paramiko para execução de comandos via ssh.
- O módulo de solicitações para fazer solicitações HTTP.
- Visão geral dos módulos para trabalhar com bancos de dados e corretores de mensagens.
Prática. A equipe de desenvolvimento está introduzindo uma nova metodologia: se você permitir que um alerta ocorra, você receberá uma tarefa. O subsistema analítico procura apenas erros selecionados e envia mensagens sobre eles ao corretor de mensagens Kafka. Sua tarefa é completar o ciclo de retorno de bugs aos desenvolvedores: seu consumidor deverá criar automaticamente tarefas com a descrição e prioridade exigidas no Trello.
Nº 4: Trabalhando com texto em vários formatos
Por quê: conectar-se ao serviço é apenas metade da batalha. A outra metade é o compartilhamento de informações. E a informação geralmente é um conjunto de caracteres de texto em um determinado formato. Os módulos ajudarão você a decodificar e codificar. Não precisa de todas as informações? Expressões regulares irão ajudá-lo a extrair o que é importante e descartar o resto.
- O módulo re e expressões regulares.
- Módulos para trabalhar com dados em diversos formatos: valores separados, json, yaml, xml.
- Usando argumentos de linha de comando: módulo argparse.
Prática: Criando uma fonte de dados de uso de serviço.
Durante a auditoria de utilização dos serviços, você identificou informações importantes para o negócio, até o CEO se interessou. Decidiu-se analisar o dinheiro perdido e não permitir que tais situações se repetissem. Para fazer isso, é necessário fornecer aos analistas uma ferramenta de aquisição de dados para que possam preparar relatórios. O problema é que o módulo de monitoramento retorna limites de serviço para uma solicitação separada em formato yaml, e os preços dos serviços são retornados pelo sistema de cobrança em formato xml. É necessário combinar dados de carga atual com limites e preços. O departamento de análise solicitou informações agregadas no formato JSON com a capacidade de especificar um intervalo de tempo e uma etapa de agregação.
Nº 5: Interação com o sistema operacional
Por quê: A importância da interação com o sistema operacional não precisa ser explicada mais detalhadamente. Como conectá-lo com Python está nesta lição.
- Lendo e gravando arquivos.
- módulo os - lendo variáveis de ambiente, trabalhando com diretórios e direitos, trabalhando com processos.
- O módulo de subprocesso para interação interativa com processos.
Prática: fornecimento automático de acesso aos servidores.
Durante a campanha de abandono de serviços não utilizados, surgiu uma situação curiosa: um atendente de mercearia equipes desligaram, mas a equipe de infraestrutura o usou periodicamente como host para encenação. Acontece que a equipe do produto não o utilizou porque periodicamente alguém sobrescrevia suas configurações pelas suas próprias. Foi decidido que agora o recurso será atribuído apenas aos membros de uma equipe, e a automação ajudará a evitar erros. Você, como aquele que iniciou essa bagunça, precisa escrever um agente que irá pesquisar periodicamente o sistema de gerenciamento de direitos e fazer alterações na configuração de direitos nos serviços instalados e, se necessário, dar aos serviços um comando para reler configurações.
Nº 6: Operador K8S em Python (stream de codificação ao vivo)
13 de outubro às 19h
Por quê: vamos expandir os recursos do K8S para atender às suas tarefas.
Nº 7: Escrevendo nosso próprio módulo para Ansible
Por quê: Ansible é um sistema de gerenciamento de configuração poderoso e até mesmo expansível com seus próprios módulos. Que coincidência que ele próprio e a maioria dos módulos sejam escritos em Python.
- Escrevendo seus próprios módulos para Ansible.
Prática: escrever um módulo de gerenciamento de direitos.
Há muito tempo atrás, em uma galáxia muito, muito distante, você já escreveu a um agente para conceder direitos a determinados serviços. É hora de mudar pull para push e o Ansible ajudará com isso. Tudo que você precisa é apenas de um módulo.
Nº 8: Criação e casos de uso de sua API
Por quê: preparar o código para implantação é uma das tarefas mais importantes. Nossos próprios scripts para pipelines de estágio ajudam a tornar esse processo mais flexível e conveniente.
- Criando uma API REST no Flask.
- Criando seu próprio exportador prometheus com Prometheus Python Client e Flask.
Prática: enviar dados para um sistema de monitoramento de terceiros.
Os custos dos equipamentos não utilizados superaram até as previsões pessimistas. Agora a equipe de engenharia tem outra área de responsabilidade - monitorar serviços não utilizados. Para fazer isso, você precisa pesquisar periodicamente o sistema de faturamento por meio de seu script e passar os dados para o Prometheus. O formato dos dados recebidos ainda não é adequado. Você precisa implementar um conector. E, ao mesmo tempo, escreva um endpoint para que o departamento de análise sempre tenha em mãos informações atualizadas no formato JSON.
Sessão AMA + reunião INFORMAL com palestrantes do curso
28 de outubro às 19h
Nós nos reunimos para discutir as preocupações dos participantes do curso.
Nº 9: Testando a API do seu aplicativo
Porquê: Às vezes é melhor não ter nenhum código do que um código instável. Para não ter medo de quebrar seu código, você precisa escrever testes.
- Tipos de testes: unitários, de integração e ponta a ponta.
- Visão geral do módulo pyhamcrest e seus correspondentes.
- Arquitetura e recursos do pytest.
- Usando pytest e pyhamcrest para escrever testes unitários.
Prática: escrevendo testes usando pytest e pyhamcrest para sua API.
Nº 10: Interação com sistemas CVS e DevOps
- Usando módulos de terceiros usando o exemplo de integração em pipelines do Gitlab.
- Usando pygit para obter informações sobre alterações de código.
Prática: gerando um log de alterações a partir de commits.
A equipe de engenharia gostou tanto de suas soluções que se inspirou nelas e começou a escrever as suas próprias. Mas as pessoas sempre se esquecem de escrever descrições para os lançamentos. Para conseguir isso, a equipe decidiu implementar convenções de commit e gerar changelogs diretamente dos commits quando mesclando o branch dev com o de lançamento, e se o nome do commit não estiver em conformidade com as convenções de commit, não permita a solicitação de mesclagem até mesclar.
Nº 11: Chatops com Errbot em Python
Por quê: Os principais problemas de negócios não são o desempenho do aplicativo ou mesmo erros que ocorrem no código. Os problemas mais sérios surgem quando a comunicação dos funcionários é ineficaz. Chatops é uma forma de resolver esse problema.
- Conceito Chatops: quais problemas o Chatops resolve?
- Framework Errbot: instalação, criação de um template básico de plugin, configuração e lançamento.
- Framework Errbot: criando seu próprio plugin para Chatops com diversas opções de processamento de mensagens.
Projeto final
Revisão de prazo e proteção aos interessados
Após o curso, você terá um projeto em Git: poderá automatizar sua tarefa de trabalho ou realizar uma das opções propostas.
O projeto finalizado pode ser usado como portfólio e mostrado na candidatura a um emprego.