Microservices

790 visualizações

Publicada em

Microservices, SOA, distributed architecture

Publicada em: Software

Microservices

  1. 1. MicroServices @diego_pacheco Software Architect | Agile Coach
  2. 2. Microservices
  3. 3. Monoliticos
  4. 4. MSA veio depois de SOA
  5. 5. Microservices: Cases - Benchmark ~600 microservices ~150 microservices para uma página
  6. 6. Microservices: Fine-Grained Business
  7. 7. Microservices: Independent + Re-usable
  8. 8. MSA é SOA! http://martinfowler.com/articles/microservices.html
  9. 9. Unix Philosophy: Dumb Pipes & Smart Endpoints
  10. 10. Remover o “Middleware”
  11. 11. Descentralização ESB Microservices
  12. 12. Isolamento
  13. 13. Isolamento: Beneficios Times Recursos Gestão
  14. 14. Isolamento: Beneficios Times  Ter multiplos times trabalhando ao mesmo tempo em coisas diferente, sem merge   É possível ter times por serviços  Cada time pode trabalhar com técnologias diferentes  Cada time pode trabalhar de formas diferentes por a dependencia dos times vira por serviços e não pro pessoas.  É possível ter times fazendo delivery de business e outros atualizando tecnologias ou fazendo melhorias de performance.
  15. 15. Isolamento: Beneficios Recursos  Hardware diferente por serviço  Serviços podem usar mais ou menos recursos  Serviços não afetam os outros em runtime, tem mais resiliencia.  Isolamento de banco permite atualizaçoes no modelo e tecnolgoia de dados sem impactos e outros serviços.  Isolamento de CPU, Threads, Memoria, Rede faz com que o serviço sejá autocontido e indepente assim tendo mais facilidade para portar de um lugar para outro até mesmo do DS local para Cloud ou vice-versa.
  16. 16. Isolamento: Beneficios Gestão  Diferentes prioridades do negócio podem ser feitas ao mesmo tempo de um jeito melhor.  Releases podem acontecer em simultaneo, sem necessidade de tanta coordenação e bloqueio como em outros modelos.  Podem se priorizar melhor: Bugs, Débitos Técnicos, melhorias de tecnologias e migrações.  Times tem mais produtividade e menos dependencias. Velocidade de deploy e test / experimentação de funcionalidades.
  17. 17. Balanceamento
  18. 18. Anti-Patterns: Entendimentos Errados, Ideias Ruins entre outros…
  19. 19. ANTI-Pattern: 1 Serviço para cada coisa. EX: 1 WS pro operação.
  20. 20. ANTI-Pattern: 1 Serviço tem que ser sempre pequeno.
  21. 21. ANTI-Pattern: MSA é SOA, não ignore os principios. SOC Backward Compatibility Contracts Versioning Governance
  22. 22. ANTI-Pattern: NanoServices <= 10..100 LOC. “nem todos concordam” NanoService or Function as a Service?
  23. 23. Case: Netflix
  24. 24. Case: Twitter
  25. 25. Case: HailO
  26. 26. Case: Gilt
  27. 27. DDD: Domain Driven Design
  28. 28. Usando REST para Microservices
  29. 29. Spring Boot + REST
  30. 30. Node The JS way
  31. 31. Dropwizard+ REST
  32. 32. Netflix OSS - IPC
  33. 33. Akka as Microservice solution
  34. 34. Actors VS RPC
  35. 35. Colossus: nio + akka
  36. 36. Spray: Akka + HTTP
  37. 37. Muitas requests? Mobile? API Gateway Model
  38. 38. API Gateway Model: Como fica a UI?
  39. 39. IPC-ish, point-2-point, Brokerless solutions. Ribbon Quasar
  40. 40. Lightweight Servers
  41. 41. Big Fat Jar: $ java –jar service.jar | OneJar, Assembler, Packager, RPM…
  42. 42. Isolamento Físico
  43. 43. Tudo é sobre processos baratos.
  44. 44. Requisitos: DevOps
  45. 45. Requisitos: Monitoramento
  46. 46. Requisitos: Design Boundaries
  47. 47. Multiples DBs & TX Users Service Images Service Comments Service
  48. 48. Eventual Consistency  Alternativa a TX distribuidas  Trabalha com eventos  Os Serviços tem que ouvir esses eventos e aplicar as mudanças nos dados.  Soluções:  CQRS + Event Sourcing  Topicos / Pub-Sub (JMS)  Akka  É Possível ter TX local
  49. 49. Eventual Consistency: ES
  50. 50. Log Centralizado – ELK Stack
  51. 51. Log Centralizado – Graphite + Grafana http://grafana.org/
  52. 52. Log Centralizado – Graylog https://www.graylog.org/overview/
  53. 53. Back Pressure / Throttling / Spooling
  54. 54. Runtime Isolation + Metrics
  55. 55. Runtime Isolation: Hystrix
  56. 56. Runtime Isolation: Circuit Breaker
  57. 57. https://github.com/Netflix/SimianArmy Runtime Testing
  58. 58. Todos os microservicos tem que ter o seu proprio pipeline.
  59. 59. Sistema como um organismo vivo.
  60. 60. MicroServices @diego_pacheco Software Architect | Agile Coach Obrigado! Thank you!

×