Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices em Python: desafios e soluções

554 views

Published on

Introdução de Microserviços e uso deles com Python

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Microservices em Python: desafios e soluções

  1. 1. Microservices e Python Desafios e soluções Guilherme Vierno
  2. 2. About me • Físico por formação • Pythonista desde 2010 • Mineiro agora morando no Rio • Desenvolvedor na • Plataformas de publicação
  3. 3. Por que falar de microservices? Interesse ao longo do tempo Fonte: google trends
  4. 4. Por que falar de microservices? • Tendência do mercado • Implementado nos líderes de tecnologia do mundo (Amazon, eBay, Netflix, Apple…) • Resolve bem problemas de desenvolvimento em larga escala
  5. 5. Intro: Um pouco de história
  6. 6. globo.com (Monolito) pré micro-serviços IN OUT
  7. 7. globo.com (Monolito) pré micro-serviços • Um grande projeto em Django • ∞ linhas de código e milhares de testes • Banco MySQL superinflado • Vários times desenvolvendo o mesmo codebase
  8. 8. Monolito
 Principais problemas 1. Baixa velocidade de entregas • Existe um “time de deploy” e “dia do deploy” • Dificuldade de refatorar / imprevisibilidade 2. Escalabilidade • Ruim de medir uso de recursos por módulo • Dificuldade de fazer cache dos dados 3. Resiliência • Novos releases deixando todo o sistema instável
  9. 9. Separação em serviços Migrando partes da
 aplicação para
 serviços isolados
  10. 10. Micro-serviços
  11. 11. Micro-serviços Time 1 Time 3 Time 2 Time 4 IN OUT IN OUT
  12. 12. Micro-serviços Velocidade das entregas • Domínio do time sobre o serviço • Deploy individual • Automação e conteinerização • Testes
  13. 13. DB centralizado Micro-serviços Escalabilidade Monolito
  14. 14. Micro-serviços Escalabilidade
  15. 15. Micro-serviços Resiliência OUT IN
  16. 16. Micro-serviços Características comuns • Pequenos em tamanho • Limitados por contexto • Desenvolvidos autonomamente • Deploys independentes • Descentralizado • Automatização de processos (build, release, monitoração…)
  17. 17. Nem tudo são flores • Complexidade de desenvolvimento/operacional • Duplicação de dados • Latência adicional • Desuniformidade • Refatoração cross-módulo
  18. 18. Python
  19. 19. • Prototipagem e desenvolvimento rápidos • Facilidade de instrumentar continuous delivery / DevOps • Uso bem difundido de Microframeworks μservices em Python Vantagens de usar Python
  20. 20. • Poder combinar com outras linguagens • Manutenção barata • Uma boa hora de introduzir Python[3] na stack μservices em Python Vantagens de usar Python
  21. 21. • Tornado: Network I/O não bloqueante • Flask: Zero ao deploy em pouco tempo • Django: Tastypie, django rest framework, channels • Nameko: Feito para microservices • aiohttp: asyncio nativo com network μservices em Python Frameworks
  22. 22. Considerações Finais • A maior mudança é cultural • Monolith-first • O momento certo é quando sentir a necessidade • Atenção aos requisitos: Provisionamento de infra, monitoração, automação…
  23. 23. We’re hiring! talentos.globo.com Guilherme Vierno

×