Resources

Risorse tecniche

Engineering, explained — with real code

Short, practical guides on the tools I work with every day. Ready to copy.

Codice utile, quattro linguaggi

The same building block — a retry with exponential backoff and jitter — in the languages I use most. A call fails? It waits a little longer each time, with a pinch of randomness.

Docker

A container packages the app with everything it needs. The multi-stage build compila in un’immagine grande e spedisce solo il binario in una minima e sicura (distroless, non-root).

Infrastructure as Code (IaC)

Describing infrastructure in declarative, versioned files instead of clicking in a console.

  • Riproducibile: lo stesso file ricostruisce un ambiente identico, ovunque.
  • Versionata: every change is a pull request, with history and rollback.
  • Strumenti: Terraform / OpenTofu, Pulumi — dichiarativi e idempotenti.

Kubernetes

You declare the desired state and Kubernetes works to make reality match: it restarts crashed pods, reschedules them, scales on demand. Here a web API in 3 replicas exposed by a Service.

And to scale automatically under load:

Istio — i due piani dati

A service mesh adds mTLS, traffic control and observability between services, without touching their code. Today it comes in two variants.

1 · Sidecar: an Envoy proxy next to every pod. Full L7, mature — but one proxy per pod.

2 · Ambient: niente sidecar; uno ztunnel per nodo (L4 + mTLS) e un waypoint opzionale per L7. Più leggero.

Traffic control is identical — here a 90/10 canary release:

CI/CD

Every push is built, tested and — if green — released automatically. No more “works on my machine”, no more Friday-night manual deploys.

DevSecOps

Security shifts a sinistra: the checks live inside the pipeline and block the build when something is wrong.

  • SAST on the code, scanning of dipendenze, immagini e IaC.
  • SBOM + firma dell’immagine (cosign): sai cosa gira, ed è tuo.

Sicurezza

La sicurezza non è una funzione da aggiungere — sono le impostazioni di default: zero-trust, privilegio minimo, cifratura ovunque (mTLS), segreti che non toccano mai il repository.

Observability

Monitoring tells you what qualcosa si è rotto; l’osservabilità ti fa capire why. Tre pilastri — metriche, log, tracce — idealmente via OpenTelemetry.

And you alert on the symptoms the user feels, not on every CPU spike:

RAG & LLM

An LLM is brilliant but doesn’t know your data. RAG retrieves the relevant pieces from your knowledge base and passes them to the model: grounded, citable answers, not hallucinations.

🔎 Provalo dal vivo: a real embedding model runs in your browser and finds, among my services, the ones most relevant to your question. It is the “retrieve” step of RAG.