Slurm DevOps: do Git ao SRE com todas as paradas

De 4 a 6 de setembro, em São Petersburgo, no auditório da Selectel, ocorrerá uma conferência de três dias Slurm DevOps.

Slurm DevOps: do Git ao SRE com todas as paradas

Construímos o programa com a ideia de que trabalhos teóricos sobre DevOps, assim como manuais de ferramentas, podem ser lidos por conta própria. O que interessa é a experiência e a prática: explicações sobre como fazer ou não fazer, e relatos sobre como fazemos.

Em cada empresa, cada administrador ou desenvolvedor tem seu nível de DevOps. Alguns usam Git incorretamente, outros implementam SRE. O curso é organizado para que todos encontrem algo relevante que possam implementar aqui e agora.

Começamos com Git, depois olhamos para o desenvolvimento de aplicativos, interação entre código e infraestrutura, construímos CI/CD, descrevemos a infraestrutura como código (IaC), testamos a solução obtida, configuramos monitoramento, coletamos e analisamos logs, e, no final, chegamos ao SRE: transformamos a confiabilidade em uma história mensurável e gerenciável.

Git

Hoje, só não utiliza Git quem comprou seu primeiro laptop ontem. É uma ferramenta trivial e onipresente, e, ainda assim, frequentemente encontramos seu uso incorreto: começando com forçar push no master, até copiar arquivos do Git para o servidor através de Ctrl-C, Ctrl-V.

Mostramos como não fazer, como fazer corretamente e como fazem na Southbridge.
Realizamos prática: fundamentos do Git, trabalho em equipe.

Tema nº 1: Fundamentos do trabalho com Git

  • Comandos básicos git init, commit, add, diff, log, status, pull, push
  • Git flow, ramificações e tags, estratégias de merge
  • Trabalhando com vários repositórios remotos

Tema nº 2: Trabalho em equipe com Git

  • GitHub flow
  • Fork, remoto, pull request
  • Conflitos, lançamentos, novamente sobre Gitflow e outros fluxos aplicáveis a equipes

O material é organizado para que administradores e desenvolvedores possam implementar imediatamente todas as práticas no trabalho.

Do ponto de vista do DevOps, o uso correto do Git organiza e automatiza processos de desenvolvimento e administração, elimina uma série de problemas repetitivos e aumenta a produtividade.

Developer DevOps

Vemos o DevOps pelos olhos do desenvolvedor: lançamos um ambiente local, escrevemos um aplicativo, configuramos seu monitoramento e log, testamos localmente, organizamos o armazenamento de variáveis/segredos e descoberta de serviços, e observamos tracing (opentracing).

Tema nº 3: Trabalho com o aplicativo do ponto de vista do desenvolvimento

  • Configuração do ambiente local: recomendações práticas
  • Escrevendo um microsserviço em Python (incluindo testes)
  • Uso do docker-compose no desenvolvimento

Tópico nº 4: Interação entre código e infraestrutura

  • Prática de trabalho com configurações

Como resultado, os desenvolvedores verão como o código deve enviar logs, como testá-lo e como será depurado posteriormente. Os administradores entenderão as necessidades dos desenvolvedores: que erros de código podem ocorrer, como organizar testes para os desenvolvedores e como testar o projeto sozinho.

Neste estágio, resolve-se a principal tarefa do DevOps: estabelece-se a compreensão mútua e o trabalho conjunto entre desenvolvedores e operadores. Este é um passo crucial para passar de uma simples troca de tarefas para uma interação responsável.

Como resultado, aumenta a velocidade e a qualidade do trabalho.

CI/CD

A automação moderna implica CI/CD. Começaremos analisando a automação manual: Makefiles, hooks do Git, scripts. Vamos discutir quando essas ferramentas ainda são relevantes e quando não devem ser usadas.

Em seguida, veremos as melhores práticas modernas de CI usando como exemplo o Gitlab.

Tópico nº 5: CI/CD introdução à automação

  • Introdução à automação
  • Ferramentas (bash, make, gradle)
  • Uso de git-hooks para automação de processos
  • Linhas de montagem em fábricas e sua aplicação em TI
  • Exemplo de construção de um pipeline 'comum'
  • Software moderno para CI/CD: Drone CI, BitBucket Pipelines, Travis, etc.

Tópico nº 6: CI/CD: Trabalhando com Gitlab

  • Gitlab CI — Visão geral
  • Gitlab Runner, seus tipos e aplicações
  • Gitlab CI, peculiaridades de configuração, melhores práticas
  • Etapas do Gitlab CI
  • Variáveis do Gitlab CI
  • Compilação, teste, deploy
  • Controle e restrições de execução: only, when
  • Trabalhando com artefatos
  • Modelos dentro do .gitlab-ci.yml, reutilização de ações em diferentes partes do pipeline
  • Include — seções
  • Gerenciamento centralizado do gitlab-ci.yml (um arquivo e push automáticos em outros repositórios)

A colaboração entre administradores e desenvolvedores atinge um novo nível: o administrador escreve o modelo CI, enquanto os desenvolvedores editam, organizando seu CI independentemente do administrador.

Diminui a dependência dos desenvolvedores em relação aos administradores, reduz o trabalho manual e elimina o problema do ‘único que sabe como trabalhar com o Makefile’. As versões são liberadas de forma confiável e rápida.

IaC

O tema Infrastructure as Code, utilizando o Terraform, será apresentado pelo administrador de nuvem da Selectel, Alexey Stepanenko. Ele mostrará como implantar e escalar servidores de maneira rápida e automatizada, como empacotar imagens automaticamente e como usar modelos de configuração para obter máquinas configuradas imediatamente.

A pessoa que desenvolveu milhares de soluções IaC explicará como fazer corretamente e o que evitar.

A solução da Selectel, com mínimas alterações, é adequada para as nuvens do Google e da Amazon.

O funcionário da Southbridge, Nikolai Mesropyan, mostrará, usando o Ansible, como implantar um aplicativo em funcionamento sem tempo de inatividade e verificar sua funcionalidade.

Se você gerenciar a infraestrutura manualmente (configurando servidores, instalando bibliotecas e pacotes conforme necessário), ao tentar levantar uma cópia do ambiente, você precisará se lembrar e reproduzir todas as suas ações. Essa tarefa pode facilmente levar de 3 a 5 dias. Trabalhar com infraestrutura como código garante que você tenha uma descrição atual do ambiente que pode ser implantada em minutos.

Nikolai explicará como escrever playbooks, quais são os erros comuns, por que às vezes os playbooks funcionam lentamente ou não como esperado. Esta é a experiência de muitos anos de uso de IaC na Southbridge.

Tema nº 7: Infrastructure as Code

  • IaC: uma abordagem para a infraestrutura como código
  • Provedores de nuvem como fornecedores de infraestrutura
  • Ferramentas de inicialização de sistemas, criação de imagens (packer)
  • IaC utilizando Terraform
  • Armazenamento de configurações, colaboração, automação de aplicações
  • Prática de criação de playbooks Ansible
  • Idempotência, declaratividade
  • IaC utilizando Ansible
  • Database as Code / Alta disponibilidade do PostgreSQL

A infraestrutura adquire declaratividade e idempotência.
O administrador aprende a gerenciar uma infraestrutura complexa: criar rapidamente novos ambientes, manter a uniformidade de todos os ambientes, ver o histórico de mudanças, o que é crítico quando várias equipes trabalham em um projeto.
O desenvolvedor pode estudar a infraestrutura e implantar seus próprios ambientes de forma independente.

O bônus da seção será a criação e configuração de um cluster de banco de dados PostgreSQL de alta disponibilidade. Forneceremos um playbook pronto que usamos na Southbridge, você implantará o cluster em um ambiente de aprendizado e poderá usar essa solução em sua empresa.

Teste da infraestrutura e monitoramento

A automação permite que um erro seja replicado em mil servidores de uma só vez. A cada alteração, é necessário realizar testes. Por outro lado, os testes manuais consomem tanto tempo que anulam as vantagens da automação.

Vamos demonstrar na prática como escrever testes de papéis. Como resultado, você será capaz de escrever testes para sua empresa. Não será mais necessário memorizar as configurações realizadas; você as descreverá nos testes e verificará automaticamente se todas as soluções anteriores e gambiarras estão intactas.

Em seguida, aprenderemos a adicionar automaticamente todos os novos servidores à monitorização. Vamos abordar separadamente a monitorização da infraestrutura e das aplicações. Mostraremos práticas ruins e boas práticas.

Tema nº 8: Teste de Infraestrutura

  • Testes e Integração Contínua com Molecule e Gitlab CI
  • Uso do Vagrant

Tema nº 9: Monitorização de Infraestrutura com Prometheus

  • Por que a monitorização é necessária
  • Tipos de monitorização
  • Notificações no sistema de monitorização
  • Como construir um sistema de monitorização saudável
  • Notificações legíveis para humanos, para todos
  • Health Check: o que prestar atenção
  • Automação baseada em dados da monitorização

Monitorização que não funciona corretamente é como não ter monitorização. Para os negócios, não importa se a página principal da loja online está acessível se o formulário de pagamento gera um erro.

Na configuração da monitorização e resolução de problemas, desenvolvedores e administradores participam em igualdade. Tradicionalmente, as tarefas de monitorização recaem sobre os administradores. Nosso curso mostrará aos desenvolvedores qual é o papel deles na criação de uma monitorização eficaz. Os administradores obterão as melhores práticas do Southbridge. Como resultado, o número de perdas causadas por falhas e lentidões do site ou aplicação diminuirá rapidamente.

Bônus da seção: automação baseada em monitorização. Por exemplo, a monitorização informa que houve carga no site, e o escalonamento dos servidores web é iniciado automaticamente.

Registro

O principal erro ao trabalhar com logs é que administradores e desenvolvedores os visualizam diretamente nos servidores. Se você tiver mais de um servidor, isso leva tempo. Além disso, não é seguro: o desenvolvedor acessa um servidor onde não deveria estar.

O DevOps requer coleta, processamento e análise centralizados de logs.

Tema nº 10: Registro de Logs da Aplicação com ELK

  • Principais aplicações e funcionalidades do elastic (busca, armazenamento, características de escalabilidade, flexibilidade de configuração)
  • Visão geral do kibana (principais funcionalidades, linguagem de consultas, gerenciamento de painéis, criação de gráficos)
  • Visão geral dos produtos baseados em elastic e suas aplicações
  • Coletando métricas no APM (rastreamento de aplicações)
  • Adicional: Visão geral do novo produto — SIEM

A implementação dessa abordagem tornará os logs uma ferramenta simples e clara para análise, configuração e ajuste de aplicações e infraestrutura.

SRE

E chegamos ao tópico que a Southbridge está apenas observando e pelo qual outros palestrantes desejam permanecer até o último dia do Slurma. Estamos felizes que Ivan Kruglov da Booking.com concordou em apresentá-lo.

O projeto vive no mundo real, onde a confiabilidade nunca é absoluta, e cada decisão tem um custo.

O que é SLA aplicado a um projeto complexo? Vamos dizer, como avaliar que o site está disponível, mas as imagens estão carregando com atraso. Quais são as métricas de SLA, onde obtê-las, como obtê-las?

Como estabelecer um SLA? Como cumpri-los?

Tema nº 11: SRE
Definição de SLA, SLO, Error Budget e outros termos complexos do mundo SRE
SRE: Prática de monitoramento SLI e SLO
SRE: Prática de aplicação do Error Budget
SRE: Gerenciamento de interrupções e carga operacional (apigateway, service mesh, circuit breakers)
O negócio quer SRE. Mesmo em um nível básico: pegar um servidor de backup ou restaurar de um backup? Um banco de dados ou um cluster? Proteger contra DDoS preventivamente ou apenas no momento do ataque?

Os diretores não ficarão satisfeitos com a explicação de que "o site está funcionando", quando recebem uma ligação de um cliente informando que o formulário de pedido não está abrindo.

Portanto, é importante que o engenheiro de DevOps entenda pelo menos superficialmente o SRE para poder discutir adequadamente com o negócio suas necessidades.

Resultado

Durante o tempo Slurma DevOps administradores e desenvolvedores aprenderão:
— a trabalhar corretamente com Git;
— a organizar o desenvolvimento local;
— a configurar (administradores) e utilizar (desenvolvedores) CI/CD;
— a trabalhar com infraestrutura como código;
— a testar a infraestrutura;
— a monitorar a infraestrutura e a aplicação;
— a configurar logging;
— a entender, e idealmente — a utilizar SRE.

Para leitores atentos — usando o código promocional habrapost, desconto de 15%.

Para todos os tópicos, preparamos prática e ferramentas. Assim, cada participante que retornar do Slyerm poderá levar sua empresa para o próximo nível em DevOps.

Para os negócios, isso significa redução de custos na administração e desenvolvimento, diminuição do downtime, aumento da confiabilidade, entrega mais rápida de recursos e correção de bugs.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster