Entrevista Verity Devops MLOPS
Introdução e Apresentações
Abertura da Reunião
- Conversa inicial entre Guilherme e Cáio, com a habilitação da transcrição para facilitar o resumo posterior.
- Participantes se cumprimentam e confirmam a presença na reunião.
Apresentação de Cáio
- Cáio se apresenta como SRE e DevOps na Vert, destacando sua especialidade em cloud.
- Ele menciona que está atuando como tech lead em uma squad de um cliente da Verity.
Experiência Profissional de Guilherme
Resumo das Atividades em Cloud
- Guilherme é solicitado a resumir suas experiências nos últimos 5 anos na área de cloud e DevOps.
- Ele compartilha seu background em infraestrutura, evoluindo para funções relacionadas a DevOps, SRE e arquitetura.
Trabalhos Anteriores
- Menciona ter trabalhado em equipes cross-funcionais, principalmente no setor bancário.
- Destaca que trabalhou com múltiplas squads, variando entre 3 a 30 squads ao longo do tempo.
Pilares do SRE
Abordagem Técnica
- Guilherme fala sobre os pilares do SRE que ele utilizou nas suas atuações: esteira, segurança, escalabilidade e observabilidade.
- Enfatiza seu foco principal na observabilidade dentro dos projetos.
Desafios Enfrentados
- Discute desafios relacionados à documentação e automação nos processos existentes nas empresas onde trabalhou.
Tecnologias Utilizadas
Ambientes de Trabalho
- Guilherme menciona o uso de Kubernetes no ambiente on-premises, especificamente OpenShift no Santander.
Transição para Cloud
- Fala sobre sua experiência com projetos de rehost e refactor durante a migração para ambientes cloud.
Casos Desafiadores
Projetos Complexos
- Compartilha um caso desafiador envolvendo mainframe legado que exigiu busca por arquiteturas de referência.
Discussão sobre Arquitetura e Tecnologias em Nuvem
Arquitetura de Microserviços e Lâmbida
- O entrevistado menciona o uso de uma arquitetura "driven" com serviços quase totalmente lâmbida, onde a lâmbida é utilizada para processar eventos através de filas MSA.
- A stack da AWS foi amplamente utilizada, incluindo serviços como MSK e S3, destacando os desafios enfrentados durante o projeto.
Experiência com Diferentes Nuvens
- O entrevistado trabalhou com Azure no Santander, onde a divisão era 80% Azure e 20% AWS, mencionando um ambiente multicloud.
- No C6 Bank, utilizou GCP para DR ativo-passivo e MFA, evidenciando a importância da replicação entre nuvens.
Pipelines e Ferramentas DevOps
- A discussão se volta para as pipelines utilizadas na atuação como DevOps, mencionando ferramentas como GitHub Actions.
- O entrevistado destaca que trabalhou com pipelines novas utilizando YAML, mas não participou da implantação do zero.
Conhecimento em DevOps
- O foco principal do entrevistado é em DevOps; ele menciona que seus conhecimentos em CI/CD foram fundamentais para sua atuação.
- Ele cita pilares importantes do DevOps como entrega ágil e priorização das pessoas sobre tecnologia.
Testes Automatizados
- Durante a conversa sobre automação no processo de CI/CD, o entrevistado explica as etapas principais: build e teste.
- Ele detalha sua experiência com testes unitários e de integração usando JMER, enfatizando a importância dos testes na pipeline.
Experiência em Testes e Frameworks
Discussão sobre frameworks e linguagens de programação
- O entrevistado menciona sua experiência com Java, Python e outras linguagens, destacando que trabalhou com testes utilizando Cypress e Selenium.
- Ele explica que os testes eram realizados localmente em suas máquinas antes de serem enviados para a pipeline, onde não havia interface gráfica disponível.
Cultura DevOps e Disseminação de Conhecimento
- O entrevistado discute a importância da cultura DevOps, mencionando que muitas vezes ele teve que atuar como disseminador do conhecimento em equipes formadas do zero.
- Ele observa a resistência encontrada ao implementar novas tecnologias em empresas conservadoras, especialmente quando se trata de gestão.
Abordagem Prática na Implementação
- O entrevistado prefere uma abordagem colaborativa ao invés do modelo top-down, levando exemplos prontos para facilitar o aprendizado dos colegas.
- Ele utiliza demonstrações práticas para mostrar os benefícios das novas ferramentas, quebrando barreiras iniciais de resistência.
Rastreabilidade e Monitoramento
Gerenciamento de Alterações
- Após a implementação das pipelines, foi estabelecido um sistema de rastreabilidade através do envio automático de emails sempre que uma alteração era feita no ambiente.
- Antes da implementação das pipelines, não havia rastreabilidade; após isso, cada ação era registrada por usuário.
Monitoramento da Aplicação
- O entrevistado fala sobre a importância do monitoramento contínuo das aplicações após o deploy e como isso se relaciona com as práticas SRE (Site Reliability Engineering).
- As novas esteiras foram atualizadas para incluir bibliotecas específicas para monitoramento diretamente no código.
Integração com Desenvolvimento
- Para personalizar métricas nas aplicações desenvolvidas em Java ou Python, o entrevistado colabora diretamente com os desenvolvedores.
- Ele destaca a necessidade de trabalhar junto aos devs para definir quais métricas são relevantes e como implementá-las corretamente.
Infraestrutura como Código (IaC)
Ferramentas Utilizadas
- O entrevistado menciona sua experiência com Terraform e Wensbol na integração da infraestrutura como código no ambiente cloud.
Portabilidade e Configuração de Infraestrutura em Nuvem
Situação da Virgínia e a Transição para GCP
- A situação mencionada envolve a queda da Virgínia na AWS, levando à necessidade de subir a infraestrutura em outra nuvem, especificamente no Google Cloud Platform (GCP).
- As esteiras de infraestrutura estavam integradas com Terraform, permitindo que o processo de deploy fosse ativado ou não conforme necessário.
- Testes regulares de recuperação de desastres (DR) foram realizados mensalmente, garantindo que a infraestrutura estivesse replicada e validada antes do incidente.
- Após a queda, foi possível rapidamente implantar toda a infraestrutura no GCP utilizando ferramentas como o Enball para importar os serviços do EKS para o GKE.
- Apesar dos desafios enfrentados durante o processo, a transição foi realizada com sucesso ao subir todos os componentes necessários.
Questões sobre Governança e Modularização no Azure
- O foco agora se volta para ambientes Azure, onde são discutidas as práticas de governança em projetos que utilizam Infrastructure as Code (IaC).
- A modularização do Terraform é crucial para permitir que múltiplas equipes provisionem recursos sem comprometer as políticas de segurança da empresa.
- Estratégias devem ser implementadas para garantir que times não possam implantar recursos fora das diretrizes estabelecidas pela corporação.
Segurança e Controle em Projetos Terraform
- A modularização permite trabalhar com diferentes clouds enquanto mantém controle sobre quais recursos podem ser provisionados por cada equipe.
- Um exemplo prático é restringir equipes a apenas tipos específicos de instâncias validadas previamente, evitando implantações indevidas.
- O uso do AWS permite definir módulos específicos onde apenas instâncias já aprovadas podem ser criadas, mantendo um estado controlado no S3 ou Terraform Cloud.
Avaliação de Riscos e Permissões Mínimas
- É importante implementar controles rigorosos para evitar que usuários subam serviços potencialmente inseguros ou indesejados na nuvem.
- O conceito de "mínimo acesso" é fundamental; usuários não devem ter permissões além do necessário para suas funções específicas dentro da organização.
- Uma vez mapeadas as necessidades, acessos específicos são concedidos somente após validação adequada das permissões necessárias.
Uso do IAM e Estrutura de Projetos no GCP
Integração do IAM com Recursos Específicos
- O uso do IAM na AWS é discutido, enfatizando a parceria com políticas específicas para recursos, como buckets.
- A abordagem de projetos em Terraform é mencionada, onde cada núcleo de negócio possui seu próprio projeto e infraestrutura provisionada.
Restrições de Acesso em Ambientes Multi-Projetos
- Como um administrador ou SRE, pode ser necessário restringir o acesso a recursos globalmente dentro da organização.
- Estratégias para aplicar regras de permissão globalmente são exploradas, evitando configurações individuais por usuário.
Configuração Global via AWS Organizations
- A configuração na AWS Organizations permite replicar permissões nas contas subordinadas a partir da conta raiz.
- É mencionado que existe uma esteira para aplicar regras em toda a nuvem, colaborando entre equipes de governança e segurança.
Estruturação de Pipelines e Imutabilidade
Criação de Pipelines Eficientes
- Discussão sobre como estruturar uma pipeline que utilize sempre a mesma imagem de contêiner validada antes da produção.
- Importância da imutabilidade e rastreabilidade das imagens dentro das pipelines é destacada.
Registro e Homologação de Imagens
- Utilização do Amazon ECR (Elastic Container Registry) para armazenar imagens homologadas pela equipe de segurança.
- Estratégia para garantir que apenas imagens homologadas sejam utilizadas nas pipelines, evitando downloads não autorizados.
Atualizações e Manutenção das Imagens
- Processo descrito para atualizar versões das imagens no ECR através de pipelines dedicadas.
- Discussão sobre como configurar a imutabilidade nas imagens dentro dos ambientes cloud.
Observabilidade em Ambientes Cloud
Definição e Implementação de SLI
- Pergunta sobre como definir e implementar SLI (Service Level Indicators), focando na perspectiva SRE.