Continuous Integration, delivery and deployment
Essa semana eu palestrei no meetup microservices e docker (foi um evento só, mas as fotos e comentários estão espalhados nos dois) sobre o tema "Continuous Integration, delivery and deployment" - Integração / Entrega / implantação contínua.
A missão foi falar de alguns cases, exemplos de código de como fazer isso com docker compose e técnicas para entregar mais rápido e com qualidade para produção.
Para quem foi no evento
Estou disponibilizando os slides no slides.com e google drive. O exemplo de código já está no github.
Algumas das coisas demonstradas:
-
Ferramentas
-
Sobre exemplos de código com groovy e spock
-
Um exemplo de API rest pode ser visto no OrderView. Exemplo usando Spark Java, que é baseado no Sinatra do Ruby, similar ao express do node e flask / bottle do python. Testes no OrderSpec
-
Business rule engine ou "motor de regra de negócios" pode ser visto no BusinessRulesSpec
-
Circuit Breaker no CircuitService
-
-
E sobre outros exemplos
E sobre as referências / técnicas?
-
Conceitos: Integração Contínua, Entrega Contínua, Implantação Contínua e Operação Contínua. Diferenças podem ser vistar nos posts da codeship e scmQuest. E o certificado de CI do Martin Fowler
-
Cases: o principal é o do Stack Overflow, descrito no hispters.tech (podcast). Spoiler : eles não usam microservices, cloud ou testes
-
Feature toggles, ver a apresentação do Sacha no TDC. E Canary Release
-
Podcast do Gomex que ele fala de TDD nos componentes do google. Na real o tema principal é "qual o futuro do sysadmin?"
-
Microserviços: Microlitos, monorepos e testes em microserviços
-
Monitoring: acabei não falando na apresentação, mas fiz um exemplo com influxdb + grafana. Coloquei no github já.
-
Databases: ver técnicas de migração no DZone. Já vi projetos com liquibase e mongo-migrate
-
Service Discovery: foi falado no meetup sobre o consul e eureka. Eu achei legal esse approach do Derek Slager, de ambiente de desenvolvimento compartilhado (mais ou menos em 29 mins). Imagina poder testar a API em prod junto com as outras APIs, só passando a info da API escolhida no http header?
-
ChatOps: o Heroku disponibilizou o dele essa semana.
-
Sobre o approach de testes (priorizar serviços e não unitário), ver o post do Diogo Lucas
-
12 factors, os requisitos para cloud native criados pelo Heroku. O Gomex fez exemplos em docker de cara um dos items no github dele.
Dúvidas sobre o Heroku? Dá uma olhada nesse post
Próximos passos
-
Se o deploy é complicado, faça com mais frequência. Ver esse artigo
-
Como vender CD para o Business. Foco no
Each year, businesses lose $3 trillion dollars in failed IT projects
Agradecimentos especiais ao pessoal da Zenvia que fez um podcast de CI/CD interno.
Sobre algumas perguntas / comentários do evento
-
"Como ir rápidamente para outros projetos?" - Eu uso o Z
-
"Ah, você gosta de automatizar tudo?" - Sim. Tenho 22 aplicações pessoais no Heroku. Screen Scrapers para coletar dados de carros e imóveis, wiki, tasks, reports do trello… E até um módulo para rodar scripts dos devs (que chamamos carinhosamente de "estagiário"). Algumas UIs para APIs. Coisas desse tipo.
-
"Como você criou o mindmap?" - usei o xmind. Posso mandar o arquivo em pvt
-
"Quanto tempo levou para aprender tudo isso?" - esse item dá um post. Eu curto o que eu faço, aprendo coisas novas todos os dias.
Comentários? Sugestões? Algo que eu possa melhorar para próximas talks? Algo para continuar? Deixe um comentário aí embaixo!