apostila-devops
apostila-devops copied to clipboard
Apostila do curso de DevOps
Apostila do curso de DevOps da Caelum
Ementa:
Sobre o Curso
- DevOps
- O curso
- Código fonte
- Bibliografia complementar
DevOps
- O que é DevOps?
- A história do desenvolvimento de software
- A história do DevOps
- DevOps Anti-Patterns
- A cultura em um ambiente DevOps
- CALMS
- Mudanças culturais para adotar DevOps
- The Three Ways
- O papel das ferramentas em um ambiente DevOps
Lean
- O que é Lean
- Exercício: Lean Lego Game
- Sobre Lean: o método Toyota
- Push vs. Pull Systems
- Kanban
- Systems Thinking
- Work Cells
- Kaizen
- Lean e DevOps
O projeto do curso
- Alura Fórum: o fórum da plataforma Alura
- As funcionalidades da aplicação
- Como rodar a aplicação?
- Código fonte do projeto
- Exercício: download do código fonte da aplicação
- Build do projeto
- Exercício: build manual da aplicação
- Deploy do projeto
- Exercício: deploy manual da aplicação
Build automatizado
- Build
- Os problemas do build manual
- Automatização do processo de build
- Build tools
- Automatizando o build do fórum da Alura
- Exercício: Adicionando o Maven ao projeto
- Exercício: Isolando os datasources com profiles
- Realizando o build automatizado com Maven
- Exercício: Gerando o build automatizado do projeto
Controle de Versão
- Backup e colaboração
- Sistemas de Controle de Versão
- Git
- Utilizando o Git
- Exercício: Utilizando o Git na aplicação
- Mais detalhes do Git
- Hospedando o repositório no GitLab
- Exercício(opcional): Criando uma conta no GitLab
- Exercício: Criando um repositório no GitLab
- Sincronizando o repositório local com o GitLab
- Exercício: Enviando os commits para o repositório remoto
- Clonando um repositório já existente
- Exercício: Renomeando o repositório remoto
- E quanto ao time de Ops?
Testes Automatizados
- O processo de desenvolvimento de um software
- Funcionalidades e bugs
- Testes manuais e seus problemas
- Testes automatizados
- Exercício: Configurando o projeto para os testes automatizados
- Exercício: Escrevendo testes automatizados na aplicação
- Tipos de testes automatizados
- Exercício: Testes automatizados com Mockito
- Para saber mais: Pirâmide de Testes
- Para saber mais: TDD (Test Driven Development)
- Para saber mais: Refactoring
- Cobertura de testes
- Exercício: Code Coverage com JaCoCo
- Métrica: Change Failure Rate
Integração Contínua
- Trabalhando em time
- Integration hell
- Integração Contínua
- Princípios da integração contínua
- Jenkins
- Exercício: Instalação do Jenkins
- Integração contínua com Jenkins
- Exercício: Utilizando o Jenkins como servidor de integração contínua
- Plugins do Jenkins
- Exercício: Utilizando plugins do Jenkins
- Branches
- Feature-Branch vs. Trunk-Based
Entrega Contínua
- O trauma do deploy
- Janela de deploy
- Continuous Delivery
- Os pilares da Continuous Delivery
- Deployment Pipeline
- Os problemas do deploy manual
- Automatizando o deploy
- Vagrant
- Exercício: Automatizando a infra da aplicação com Vagrant
- One-Click deploy
- Exercício: One-click deployment com Jenkins
- Immutable Infrastructure
- Zero Downtime Deployment
- Blue-Green Deployment
- Canary Release
- Métrica: Lead Time
- Métrica: Deployment Frequency
- O valor das métricas
- Accelerate: State of DevOps Report
Deploy Contínuo
- Continuous Deployment
- Vantagens e desvantagens do continuous deployment
- Feature Toggle
- Exercício: Continuous Deployment com Jenkins
Monitoramento
- O problema: Sistema fora do ar
- A má prática: Apagar incêndios
- A solução: Monitoramento Contínuo
- Ferramentas de monitoramento
- O que devemos monitorar?
- Monitoramento de negócios
- Exercício: Monitoramento com Glowroot
- Métrica: Mean Time To Recover
Para mais informações sobre o curso, acesse: https://www.caelum.com.br/curso-devops
Licença
Este obra está licenciado com uma Licença Creative Commons Atribuição-NãoComercial-SemDerivações 4.0 Internacional.