Curs 6 - Service Mesh și Observability în System Design

În acest curs vom explora conceptele de Service Mesh și Observability, esențiale pentru gestionarea traficului și monitorizarea aplicațiilor în arhitecturile moderne bazate pe microservicii.

1. Ce este un Service Mesh?

Un Service Mesh este o infrastructură software care gestionează comunicarea între microservicii, asigurând securitate, observabilitate și control al traficului.

- Diferența dintre API Gateway, Load Balancer și Service Mesh: Un Service Mesh operează la nivelul traficului intern dintre microservicii.

- Exemple populare: Istio, Linkerd, Consul.

2. Componentele unui Service Mesh

- Data Plane vs. Control Plane: Control Plane gestionează configurarea, iar Data Plane controlează traficul.

- Sidecar Proxy: Fiecare microserviciu are un proxy (ex: Envoy) care intermediază traficul.

- Traffic Routing și Canary Deployments: Se pot implementa rute pentru testarea noilor versiuni ale unui serviciu înainte de rollout complet.

3. Observability și Monitorizare

Observability este capacitatea de a colecta, analiza și vizualiza date despre comportamentul aplicației.

- Logging: Stocarea evenimentelor generate de aplicație.

- Metrics: Colectarea de date despre utilizarea resurselor și performanța serviciilor.

- Tracing: Urmărirea cererilor într-un sistem distribuit pentru a identifica latențele.

- Instrumente pentru Observability:

- Prometheus & Grafana: Colectare și vizualizare metrici.

- Jaeger: Distribuirea tracking-ului requesturilor.

- ELK Stack (Elasticsearch, Logstash, Kibana): Analiză avansată a log-urilor.

4. Security și Zero Trust Architecture

Un Service Mesh permite implementarea de politici avansate de securitate.

- Mutual TLS (mTLS): Criptarea end-to-end a traficului între microservicii.

- Rate Limiting și Authentication: Restricționarea accesului pentru prevenirea atacurilor DDoS.

- Policy Management: Definirea regulilor de acces între microservicii.

5. Exemplu Practic - Observability într-o arhitectură de microservicii

Cum implementăm observability și controlul traficului într-o aplicație distribuită?

a) Implementarea Istio pentru traffic control

- Istio Sidecar Proxy: Interceptarea traficului între servicii.

- Traffic Routing pentru Canary Deployments.

b) Integrarea Prometheus și Grafana pentru metrici

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: istio-metrics
  namespace: monitoring
spec:
  selector:
    matchLabels:
      istio: proxy
  endpoints:
    - port: http-metrics

Acest exemplu definește un ServiceMonitor pentru colectarea metricilor Istio cu Prometheus.

c) Folosirea Jaeger pentru tracing

- Distribuirea tracking-ului requesturilor pentru a diagnostica latențele între servicii.

Resurse suplimentare: