O documento discute microsserviços e malhas de serviço. Primeiro, explica o que são microsserviços e como eles podem resolver problemas de escalabilidade em aplicações monolíticas. Em seguida, define malhas de serviço como uma rede que conecta microsserviços, permitindo descoberta, balanceamento de carga e segurança nas comunicações entre serviços. Por fim, apresenta Istio como uma opção popular de malha de serviço open source.
7. “Microsserviços é uma maneira particular de
desenvolver aplicações de maneira que cada
módulo do software é um serviço
independente.
7
Retirado de um artigo que apareceu originalmente no
website do Martin Fowler.
19. Componentes do
Service Mesh
Container orchestration
framework
Com o volume de containers na
aplicação a gestão deve ser
automatizada.
Services and instances
Uma instância nessa visão pode
ser um grupo de pequenas
instâncias “pods” dentro da
instância.
Sidecar proxy
É uma intância carona a intância
principal que é gerenciada pelo
framwork de orquestração.
19
Service discovery
Para encontrar instâncias ativas
e saudáveis, funciona como um
DNS.
Load balancing
Provê um balanciamento de
carga de Camada 7 (rede) mais
sofisticado.
Encryption
A comunicação entre os pods
deve ser segura e confiável.
20. Authentication and
authorization
É possivel gerenciar a
comunicação interna e
externa dos pods enviado
requisições válida.
Componentes do
Service Mesh
Support for the circuit
breaker pattern
Ele da suporte a
implmentação do padrão
para gerantir que só
existam instâncias
saudáveis no caminho.
20
Devemos implementar microserviços em tudo?
Mencionar o StackOverflow que é um monolito
Se você tem um grande monólito
Dificuldade de gerir, implantar, manter...
Se você dividir isso mesmo problemas e mais!
A pratica base de Dev
única responsabilidade[ aberto/fechado substituição de Liskov segregação de Interface[ inversão de dependência
Baixo acoplamento, Alta Coesão
agnóstico de tecnologia
não é um serviço que tem um número pequeno de linhas de código ou que faz ‘micro tarefas’
não tem de ser sempre programado do zero.
Deployment Independence - updates to an individual microservice have no negative
impact to any other component of the system. Optimized for Replacement
2. Organized around business capabilities
3. Products not Projects
4. API Focused
5. Smart endpoints and dumb pipes
6. Decentralized Governance
7. Decentralized Data Management
8. Infrastructure Automation (infrastructure as code)
9. Design for failure
10. Evolutionary Design
Stop Digging
Split Frontend and Backend
Presentation layer
Components that handle HTTP requests and implement either a (REST) API or an HTML‑based web UI.
Business logic layer
Data‑access layer
A good approach is to start with a few modules that are easy to extract.
Domain Model pattern
Estrategia de “Ir pelas beiradas” até tudo estar ok.
Reduz risco
The control plane in a service mesh distributes configuration across the sidecar proxies in the data plane
Service Mesh È uma rede de microsserviÁos que oferece,
de forma consistente: seguranÁa, service discovery,
application tracing, monitoring e toler‚ncia a falhas,
sem a necessidade de um recurso compartilhado como,
por exemplo, um API Gateway.
Micrisoft Service Fabric
HashCorp - Cosul
Netflix OSS
Solo.io
Bouyant
Pilot - Responsible for configuring the Envoy and Mixer at runtime.
Proxy / Envoy - Sidecar proxies per microservice to handle ingress/egress rich layer-7 routing, circuit breakers
Mixer - rate limits, quotas, authentication, request tracing and
Citadel / Istio CA -
Pilot - Responsible for configuring the Envoy and Mixer at runtime.
Proxy / Envoy - Sidecar proxies per microservice to handle ingress/egress traffic between services in the cluster and from a service to external services. The proxies form a secure microservice mesh providing a rich set of functions like discovery, rich layer-7 routing, circuit breakers, policy enforcement and telemetry recording/reporting functions.
Mixer - Create a portability layer on top of infrastructure backends. Enforce policies such as ACLs, rate limits, quotas, authentication, request tracing and telemetry collection at an infrastructure level.
Citadel / Istio CA - Secures service to service communication over TLS. Providing a key management system to automate key and certificate generation, distribution, rotation, and revocation.
Ingress/Egress - Configure path based routing for inbound and outbound external traffic.
Control Plane API - Underlying Orchestrator such as Kubernetes or Hashicorp Nomad.