Blog
Quello che imparo, lo scrivo. 51 articoli.
ListObjects in Produzione: Caching, Pre-materializzazione e BatchCheck
Perché ListObjects diventa il collo di bottiglia in OpenFGA, e come risolverlo: caching con Redis, read model pre-materializzato, BatchCheck e strategie di invalidazione.
Gerarchie Profonde, Query Inverse e il Problema WHERE
Come gestire gerarchie a N livelli in OpenFGA, ottimizzare ListObjects con fast/slow path, e implementare Dynamic Data Masking come pattern complementare.
Multitenancy con OpenFGA: Isolamento Senza Moltiplicare la Complessità
Due strategie per multitenancy con OpenFGA: store-per-tenant e type-per-tenant. Come ottenere isolamento strutturale senza WHERE tenant_id ovunque.
OpenFGA + Keycloak: Identità e Permessi si Parlano
Come integrare OpenFGA con Keycloak: sincronizzazione utenti, JWT come ponte, contextual tuples e strategie per tenere identità e autorizzazione allineate.
Micro-frontend in Vue 3 con Module Federation: Shell, Contratto e Deploy Indipendente
Module Federation in Vue 3 con Vite: contratto shell/remote, dipendenze singleton e deploy indipendente per team.
Vedere LINQ in Azione: Tracing con OpenTelemetry e Grafana Tempo
Rendiamo visibile l'esecuzione di LINQ con OpenTelemetry e Grafana Tempo. Extension methods per tracciare pipeline, multiple enumeration e nesting esplosivo su una dashboard.
Zanzibar per Tutti: Concetti e Modello di Autorizzazione
Da RBAC a Zanzibar: come funziona il modello a tuple di OpenFGA, il DSL per le relazioni, e le tre domande fondamentali dell'autorizzazione.
Cosa Genera il Compilatore Quando Scrivi una Where() — State Machine, Iteratori e IL
Dietro ogni .Where() c'è una state machine generata dal compilatore. Esploriamo extension methods, lambda, yield return e le specializzazioni di Enumerable.Where in .NET 8.
Keycloak Federation: Integrare Utenti da LDAP, Okta, Google e Altri Identity Provider
Come Keycloak integra identità esterne con due meccanismi distinti: User Federation per directory come LDAP/AD, e Identity Brokering per provider come Okta, Google e altri Keycloak.
Playwright: Page Object Model per Test Manutenibili
Come organizzare i test E2E con il Page Object Model: classi riusabili, fixture Playwright, composizione con mock e refactoring guidato
Playwright: Network Mocking e API Interception per Test Affidabili
Come usare page.route() per mockare API, simulare errori e testare edge case senza dipendere dai servizi reali
Playwright: Mock Fixture, HAR Replay e Composizione per Test Scalabili
Come scalare il network mocking con fixture riusabili, HAR replay e composizione di scenari complessi
Playwright: Authentication Testing con storageState e Keycloak
Come gestire l'autenticazione nei test E2E: storageState per evitare login ripetuti, ruoli multipli, session management e composizione con mock
Playwright: Diagnosticare e Risolvere Test Flaky
Come identificare le cause dei test flaky e risolverle: trace viewer, retry strategico, pattern anti-flaky e checklist diagnostica
Playwright: Visual Regression Testing per Catturare Bug Invisibili
Come usare toHaveScreenshot() per catturare bug visivi che i test funzionali non vedono: masking, stati mockati, cross-browser e CI
Schema Registry con Apache Kafka: da JSON selvaggio ad Avro con Apicurio
Migrazione da JSON senza schema ad Avro con Apicurio Registry: infrastruttura, producer Node.js, consumer Python, schema evolution
Kafka crash recovery: tre strategie per tre tipi di stato
Tre strategie di recovery per consumer Kafka con stato diverso: replay completo per idempotenti, checkpoint per additivi, nessun recovery per stateless
Akka è morto, lunga vita a Pekko
Guida pratica alla migrazione da Akka a Apache Pekko in produzione: checklist completa, gotcha reali e lezioni apprese dal campo
Da blocking poll a stream reattivi con Pekko Connectors Kafka
Refactoring da attori bloccanti a Source.queue e consumer threads dedicati: pattern pratici con Pekko Streams e Kafka per sistemi di telemetria
Quanto Costa Davvero LINQ? Benchmark su .NET 8 con i Numeri
Benchmark reali con BenchmarkDotNet su .NET 8: List vs HashSet, scan vs GroupBy, allocazioni LINQ vs foreach, e il costo nascosto di AsParallel su collezioni piccole.
3 pattern (+1 anti-pattern) per eliminare la duplicazione in Vue 3
Tre pattern Vue 3 per eliminare la duplicazione nelle SPA enterprise, più un anti-pattern su quando fermarsi
Login con Keycloak: Authorization Code + PKCE in MockMart
Setup pratico di Authorization Code Flow con PKCE: configurazione Keycloak, integrazione frontend React e validazione backend Express.
Da EventBus a Pinia: migrazione progressiva dello stato in Vue 3
Pattern concreti per sostituire EventBus con Pinia in un progetto Vue 3: cache con deduplication, persistenza selettiva, approccio ibrido
OpenLayers e Vue 3: integrazione con composables e TypeScript
Pattern concreti per integrare OpenLayers in Vue 3 con shallowRef, composables tipizzati e lifecycle management
OpenTelemetry in Produzione: Routing dei Dati per Compliance e Costi
Separare log audit da log tecnici con il routing connector dell'OTel Collector. Demo, compliance GDPR/SOC 2 e retention differenziata.
Controller Kubernetes: Come Funziona il Cuore di K8s
Guida al funzionamento dei controller Kubernetes, dal reconciliation loop alla costruzione di un controller custom con controller-runtime
Keycloak: Cos'è e Perché Usarlo per la Tua Web App
Cos'è Keycloak, come funziona il login delegato e perché un Identity Provider centralizzato semplifica la vita.
Da console.log a Grafana: logging strutturato e centralizzato con Node.js
Come passare da console.log a un sistema di logging strutturato e centralizzato con Pino, OpenTelemetry, Loki e Grafana su Node.js in tre step incrementali
Dal test E2E al debug del backend: Playwright + OpenTelemetry
Come correlare test E2E Playwright con trace OpenTelemetry per identificare il microservizio colpevole quando un test fallisce
Keycloak in Pratica: 6 Problemi Reali nell'Integrazione di un E-Commerce
6 problemi concreti nell'integrazione Keycloak con microservizi Node.js: issuer mismatch, audience mancante, service account fragili e race condition M2M.
Autorizzazione Granulare con OPA e Keycloak: Separare Autenticazione e Autorizzazione
Come integrare Open Policy Agent con Keycloak in un'app Express per separare autenticazione e autorizzazione. Tre pattern concreti: RBAC, deny list e ownership.
Keycloak M2M: Autenticare Servizi Senza Utente
Come autenticare chiamate tra microservizi con Keycloak Client Credentials. Setup, codice e errori comuni.
OpenTelemetry in Produzione: Tail Sampling e Retention
Come ridurre il volume dati del 90% senza perdere visibilità sugli errori. Guida pratica con config template e scenario demo.
PII Filtering in OpenTelemetry: Proteggere i Dati Sensibili di Keycloak
Come instrumentare Keycloak e servizi third-party con dati sensibili, riducendo il rischio PII tramite filtering nell'OTel Collector. Tecniche GDPR-compliant.
Tutorial: Distributed Tracing con OpenTelemetry e LGTM Stack
Guida pratica al distributed tracing con OpenTelemetry e LGTM stack. Tre scenari di debug: silent failure, latency spike, fan-out.
Playwright: Testing E2E Moderno e Affidabile
Guida completa a Playwright per test end-to-end affidabili e veloci. Architettura, pattern avanzati e integrazione CI/CD
CAPI Parte 5: Ubuntu su Proxmox - Image Builder e Deploy
Guida completa al deployment di cluster Kubernetes su Proxmox utilizzando Ubuntu, Image Builder e Cluster API - Dalla creazione dell'immagine al cluster funzionante
Da port-forward a Ingress: Come configurare un ambiente Kubernetes locale professionale con NGINX
Guida completa alla configurazione di un Ingress Controller NGINX su un cluster Kubernetes locale (kind) per esporre servizi in modo stabile e professionale.
CAPI Parte 1: Dal Chaos all'Automazione
Guida completa al deployment e gestione di cluster Kubernetes utilizzando Cluster API (CAPI) per l'automazione dell'infrastruttura
CAPI Parte 3: Talos Linux - Il Sistema Operativo per Kubernetes
Guida completa al deployment e gestione di cluster Kubernetes utilizzando Cluster API (CAPI) per l'automazione dell'infrastruttura
CAPI Parte 2: Anatomia di Cluster API - Componenti e Meccanismi
Guida completa al deployment e gestione di cluster Kubernetes utilizzando Cluster API (CAPI) per l'automazione dell'infrastruttura
CAPI Parte 4: Setup Pratico - Day 1 Operations
Guida completa al deployment iniziale di cluster Kubernetes utilizzando Cluster API (CAPI) - Da Zero a Cluster Funzionante
Kafka in Pratica 1: Architettura di un Flusso di Eventi
Le fondamenta di Apache Kafka, dalla struttura delle partizioni al ruolo della chiave, con esempi pratici in Node.js e Python.
DevContainers: Ambiente di Sviluppo Portatile e Riproducibile
Esploriamo i DevContainers, come funzionano e perché sono essenziali per moderni flussi di lavoro di sviluppo, specialmente in ambienti distribuiti
Observability nei Sistemi Distribuiti: Dal Monitoraggio alla Comprensione
Perché metriche, log e trace non bastano più. Un cambio di paradigma per comprendere e dominare la complessità dei sistemi moderni.
OpenTelemetry: Anatomia dell'Observability nei Sistemi Distribuiti
Struttura, funzionamento e best practice di OpenTelemetry per l’implementazione dell’observability end-to-end in ambienti complessi.
Lo Stack LGTM e OpenTelemetry: Osservabilità Completa per Sistemi Distribuiti
Esplora lo stack LGTM (Loki, Grafana, Tempo, Mimir) e scopri come si integra con OpenTelemetry per un'osservabilità end-to-end di log, metriche e tracce.
Introduzione all'analisi delle performance: dalla teoria alla pratica
Fondamenta teoriche e pratiche del performance testing: dalle metriche RED ai percentili, una guida completa per iniziare
Deploy Self-Hosted di n8n in Homelab
Automazione personale con n8n deploy, configurazione e integrazione in un ambiente casalingo
Docker Internals: Namespaces e CGroups Spiegati
Guida completa ai meccanismi interni di Docker e all'isolamento dei container
Playwright in CI/CD: Sharding, Mobile Testing e Automazione Agent-Driven
Come integrare Playwright nella pipeline CI/CD con sharding, emulazione mobile e API testing per suite E2E veloci, affidabili e pronte per l'automazione agent-driven