tsuru para quem sabe tsuru

tsuru para quem sabe tsuru

apresentação feita sobre tsuru para quem já tem experiência com tsuru

B11eec4cb13d50de922479fcc5e2e803?s=128

Andrews Medina

September 08, 2016
Tweet

Transcript

  1. tsuru para quem sabe tsuru

  2. whoami

  3. Objetivo Diminuir o tempo que uma aplicação entra em produção

  4. Premissas • Boas práticas • Simplicidade • Extensibilidade • Escalabilidade

    • Multilinguagem • Open source • No vendor lock-in
  5. Premissas

  6. tsuru na globo.com • 767 apps • 1,760 units •

    ~300 deploys por dia
  7. tsuru na globo.com • globoplay.globo.com • cartolafc.globo.com • ...

  8. Deploy

  9. Deploy docker node tsuru api router

  10. Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de

    dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
  11. E se algo falhar no processo de deploy? •

  12. Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de

    dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
  13. E se algo falhar no processo de deploy? • o

    deploy é interrompido automaticamente • A aplicação continua no estado em que estava antes do deploy
  14. Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de

    dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
  15. Deploy • https://docs.tsuru.io/master/using/tsuru.yaml.html#healthcheck

  16. Deploy healthcheck: path: /healthcheck method: GET status: 200 match: .*OKAY.*

    allowed_failures: 0 use_in_router: false
  17. Algo errado em produção?

  18. Algo errado em produção? $ tsuru app-deploy-rollback

  19. Algo errado em produção? $ tsuru app-deploy-rollback

  20. Algo errado em produção? $ tsuru app-deploy-rollback

  21. Instabilidades na aplicação?

  22. Acessando uma app docker node router request

  23. Instabilidades na aplicação? healthcheck: path: /healthcheck method: GET status: 200

    match: .*OKAY.* allowed_failures: 0 use_in_router: true
  24. Unit = Container Node = VM (com Docker)

  25. Container Scheduling • Lib em Go para clusterização de nós

    de Docker • https://github.com/tsuru/docker-cluster • Managed vs Unmanaged Nodes
  26. Container Scheduling • Distribuição de containers • Disponibilidade • Otimização

    de recursos
  27. Container Scheduling App1 - 8 units

  28. Container Scheduling App1 - 8 units

  29. Container Scheduling App1 - 8 units App2 - 1 unit

  30. Container Scheduling App1 - 8 units App2 - 1 unit

  31. Managed nodes • Nodes criados com integração com IaaS (aws

    / Cloudstack)
  32. Node auto scaling • Detecta sobrecarga de recursos (units/memoria)

  33. Unit auto scaling • Serviço externo • Baseado em métricas

    • Regras definidas pelo usuário
  34. Healing • Managed nodes • Detecta que um nó caiu

    e substitui
  35. Healing

  36. Healing

  37. Healing

  38. Healing

  39. • Multi provisioner • Integração com Docker Swarm e Kubernetes

    • Suporte a units com file system persistente Futuro
  40. Perguntas?