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

Microservices, SOA, distributed architecture

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!

×