En els subcapítols anteriors vam veure les eines d'observabilitat d'AWS: CloudWatch (logs, mètriques) i X-Ray (traces). Funcionen molt bé, però tenen un inconvenient: són específiques d'AWS. I si vols una manera d'instrumentar les teves aplicacions que no depengui d'un proveïdor concret, per no quedar-hi lligat? Per això existeix OpenTelemetry, l'estàndard obert d'observabilitat que s'està convertint en el llenguatge comú de la indústria.

El problema: quedar lligat a les eines d'un proveïdor

Quan instrumentes la teva aplicació (és a dir, li afegeixes el codi perquè emeti logs, mètriques i traces) fent servir eines específiques d'un proveïdor, el teu codi queda acoblat a aquest proveïdor. Això comporta problemes:

  • Si vols canviar d'eina d'observabilitat (o fer-ne servir una de millor), has de reescriure la instrumentació.
  • En entorns multi-núvol o híbrids, cada núvol tindria la seva pròpia manera d'instrumentar: un embolic.
  • Quedes tancat (vendor lock-in): canviar costa tant que a la pràctica no pots.

Recorda el concepte de portabilitat que valorem tant quan parlem de contenidors (Capítol 17) i de Terraform multi-núvol (Capítol 10). El mateix s'aplica a l'observabilitat: seria ideal instrumentar una sola vegada i poder enviar aquestes dades a on vulguis.

Què és OpenTelemetry

OpenTelemetry (sovint abreujat OTel) és un estàndard obert per generar i recopilar dades d'observabilitat (logs, mètriques i traces) de manera independent del proveïdor. És un projecte de la comunitat (de la CNCF, la mateixa fundació que cuida Kubernetes) i s'ha convertit en l'estàndard de la indústria.

La idea central: instrumentes la teva aplicació una sola vegada fent servir OpenTelemetry, i després pots enviar aquestes dades a qualsevol eina d'observabilitat que entengui l'estàndard (CloudWatch, Grafana, Datadog, Jaeger... el que sigui).

   La teva aplicació instrumentada amb OpenTelemetry (UNA vegada)
                    │
                    ▼
            (dades en format estàndard)
                    │
        ┌───────────┼───────────┐
        ▼           ▼           ▼
   CloudWatch    Grafana    altra eina
   (canvies el destí sense tocar el teu codi)

Analogia: OpenTelemetry és com fer servir un endoll estàndard (tipus USB-C) en comptes d'un carregador propietari diferent per a cada aparell. Si tots els teus dispositius fan servir USB-C, els pots connectar a qualsevol carregador del món. Amb carregadors propietaris, cada aparell et lliga a la seva marca. OTel és l'«USB-C de l'observabilitat»: instrumentes amb un estàndard i connectes on vulguis.

Els dos grans avantatges

  1. Independència del proveïdor (no lock-in)

Com que instrumentes amb un estàndard, no quedes lligat a cap eina. Vols passar de CloudWatch a Grafana, o provar una altra solució? Només canvies on envies les dades, sense reescriure la instrumentació de la teva aplicació. La teva inversió en instrumentar el codi es conserva.

  1. Consistència (un sol estàndard per a tot)

Fas servir la mateixa manera d'instrumentar a totes les teves aplicacions, sense importar el llenguatge (OTel en suporta molts: Python, Java, Go, JavaScript...) ni on s'executin (AWS, un altre núvol, el teu propi centre de dades). Un únic estàndard per a tot el teu ecosistema, cosa que ho simplifica enormement.

OpenTelemetry a AWS: l'ADOT

AWS dona suport a OpenTelemetry i ofereix la seva pròpia distribució llesta per fer servir: AWS Distro for OpenTelemetry (ADOT). És la versió d'OpenTelemetry que AWS proporciona, provada i suportada per ells, que et permet:

  • Instrumentar les teves aplicacions amb l'estàndard OpenTelemetry.
  • Enviar aquestes dades a CloudWatch i X-Ray (per integrar-te amb l'ecosistema AWS).
  • O enviar-les a altres eines si ho prefereixes (mantenint la llibertat).
   App amb ADOT (OpenTelemetry) ──► CloudWatch / X-Ray  (integració AWS)
                                └──► o a Grafana, Datadog...  (llibertat)

Així obtens el millor dels dos mons: l'estàndard obert (llibertat, sense lock-in) i la integració còmoda amb AWS quan la vols.

Exemple del món real: una empresa instrumenta totes les seves aplicacions amb OpenTelemetry (via ADOT). Avui envien les dades a CloudWatch perquè són a AWS. Al cap d'un temps, decideixen adoptar una eina d'observabilitat més avançada que fan servir a tota la companyia. Com que van instrumentar amb l'estàndard, només han de canviar el destí de les dades: ni una línia del codi d'instrumentació de les seves aplicacions canvia. El que amb eines propietàries hauria estat mesos de reescriptura, amb OpenTelemetry és un canvi de configuració. L'empresa conserva la llibertat de triar sempre la millor eina.

Quan t'importa OpenTelemetry

  • Si vols evitar el lock-in i mantenir la llibertat de canviar d'eina d'observabilitat.
  • Si treballes en multi-núvol o entorns híbrids i vols una manera uniforme d'instrumentar.
  • Si la teva organització ja ha estandarditzat en OpenTelemetry (cada cop més empreses ho fan).

Si estàs començant i només fas servir AWS, CloudWatch i X-Ray directament són perfectes. Però conèixer OpenTelemetry et prepara per a entorns més grans i per al rumb que ha pres la indústria.

El que has de recordar

  • Instrumentar amb eines específiques d'un proveïdor acobla el teu codi a aquest proveïdor i dificulta canviar (vendor lock-in); falta portabilitat.
  • OpenTelemetry (OTel) és un estàndard obert per generar i recopilar logs, mètriques i traces de manera independent del proveïdor. És l'estàndard de la indústria.
  • Instrumentes una sola vegada amb OTel i envies les dades a qualsevol eina que entengui l'estàndard. Com l'USB-C de l'observabilitat.
  • Avantatges: independència del proveïdor (canvies el destí sense reescriure) i consistència (un mateix estàndard per a tots els llenguatges i entorns).
  • AWS ofereix ADOT (AWS Distro for OpenTelemetry): fer servir l'estàndard obert i integrar-te amb CloudWatch/X-Ray (o amb altres eines), el millor dels dos mons.
  • T'importa si vols evitar lock-in, treballes multi-núvol, o la teva organització ha estandarditzat en OTel.

A l'últim subcapítol del capítol veurem dos serveis gestionats molt potents per visualitzar i consultar mètriques: Managed Grafana i Managed Prometheus.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats