Don’t Share Your Domain Events!

Progettare per l’evoluzione Il primo passo per poter progettare un’architettura evolutiva è disegnare il nostro software in modo che possa evolvere facilmente. Già, facile a dirsi, non proprio facile a farsi. Cosa significa disegnare un sistema che possa evolvere facilmente con le continue richieste del Cliente? Proviamo a partire dal classico codice legacy. Spesso sento associare il […]

Fitness function-driven development – Prima Parte

Una delle principali attività a carico di un software architect è la creazione di una architettura che possa evolvere con le esigenze del Cliente. Il nostro software, una volta rilasciato, è destinato ad evolvere continuamente, ad adeguarsi alle esigenze dei nostri Clienti, alle continue richieste di nuove funzionalità inizialmente non previste, ma deve anche garantire […]

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? […]