Problem Space vs Solution Space

Capire i problemi e/o trovare le soluzioni Tra le tante frasi attribuite in modo apocrifo ad Albert Einstein, c’è quella che dice: “Se avessi a disposizione un’ora per salvare il mondo, utilizzerei 55 minuti per definire il problema e solo 5 minuti per trovare le soluzioni”. Volendo “tradurre” in poche parole questa affermazione, potremmo dire […]

DDD, microservizi e architetture evolutive: uno sguardo d’insieme

Oltre la scrittura di codice Sviluppare software, di per sé, non è complicato. O meglio… dipende! Se con il termine sviluppare ci limitiamo all’azione di scrivere codice, allora l’affermazione è corretta. Per scrivere del buon codice, oltre che imparare un linguaggio e tutte le best practice per applicare le sue regole, mi basta leggere qualche buon libro sul Clean Code e […]

Si fa presto a dire Coupling

Definiamo l’accoppiamento software come il numero di connessioni inter-modulo nei sistemi software, ed è spesso considerato la chiave di lettura per identificare la difficoltà nel mantenere, scalare, e spesso anche migliorare, l’applicativo stesso. Più l’accoppiamento è elevato, maggiore sarà il costo necessario per implementare nuove funzioanlità, perchè il rischio di rompere ciò che già esiste […]

DDD nel mondo dei Dati

Ma come? Ho sempre detto che DDD ha nei suoi principi base il modo di affrontare il problema partendo dalle esigenze del business, ed ora mi ritrovo a scrivere che DDD si occupa di come raccogliere dati? Parlando di architetture moderne uno dei pattern strategici chiave del DDD, il Bounded Context, è da sempre legato […]

MQTT vs AMQP

Non c’è ombra di dubbio che parlando di protocolli per lo scambio di messaggi fra applicazioni ci si imabatta a confrontarsi con questi due signori. Allora, perchè non cercare di capire che differenze ci sono fra due protocolli apparentemente molto simili? MQTT è stato progettato per l’Internet of Things (IoT), argomento a me molto caro. […]

Containers vs WebAssembly:

Che la sfida abbia inizio Non c’è ombra di dubbio sul fatto che i container Docker abbiano dominato la scena sul fronte cloud negli ultimi anni. Ora però, un’altra tecnologia si sta facendo largo ed è giunto il momento di capire se l’una può sostituire l’altra. Ma andiamo con ordine. Piccolo ripasso: cosa sono i […]

WebAssembly

WebAssembly, meglio conosciuto come Wasm, è certamente uno degli argomenti cool di noi dev ultimamante. Ma esattamente, di cosa si tratta? La prima definizione, e forse la più semplice, arriva direttamente dal consorzio W3C, ossia possiamo pensare a WebAssembly come un formato bytecode standardizzato per l’esecuzione di programmi. Magari indaghiamo un pò più a fondo. […]

.NET6 Incontra DDD

L’uscita della versione 6 del framework di casa Microsoft non è certo una novità a questo punto, e di articoli sulle novità introdotte da questa nuova versione ne è pieno il web, quindi, perchè un altro articolo su questo tema? Ho letto molto riguardo le minimal API, su come il team di Visual Studio abbia […]

Comunicazione fra Componenti in Blazor

Quando suddividiamo la nostra applicazione in diversi componenti, uno delle domande a cui dobbiamo subito rispondere è “come comunicano fra loro?”. Come sempre la risposta giusta è: dipende!I componenti in Blazor hanno a disposizione almeno tre tecniche per comunicare fra loro EventCallbacks Cascading Values State Container A mio avviso non esiste la tecnica migliore, ma […]

Gestione Route e Lazy Loading in Blazor

Quando i progetti cominciano a crescere è importante tenere il codice ordinato e ben suddiviso, magari suddividendo la solution in progetti che rispecchino i confini, o meglio i Bounded Context, della nostra applicazione. Già, ma come possiamo spostare componenti e pagine all’esterno di un progetto Blazor? Come facciamo a gestire le route di queste pagine? […]

Chaos Engineering – Seconda Parte

Chaos Engineering in pratica La prima cosa da fare per iniziare ad applicare Chaos Engineering è la definizione di un esperimento, che potrà poi essere eseguito manualmente, oppure eseguito automaticamente tramite un tool. Il passo successivo è la scelta dell’ambiente in cui eseguire l’esperimento: SandBox/Staging oppure Produzione? Se si considera di eseguire l’esperimento in produzione, è buona norma limitare […]

Chaos Engineering – Prima Parte

La complessità dei sistemi informatici Microservizi e architetture cloud distribuite stanno rendendo lo sviluppo per il web sempre più complesso. Creare sistemi affidabili è la vera sfida di noi sviluppatori moderni, e individuare le debolezze di questo genere di sistemi è sempre più difficile. Come se non bastasse, tutti noi ormai dipendiamo in maniera diretta da questi servizi, nessuno escluso. Ma è possibile stimare il costo dei guasti […]