October 2016 Blog Posts

4+1 architectural view model

Tempo fa ho scritto un post che titolava “Architettura: una ed una sola…?!?!” in cui, stringendo stringendo, dicevo che se abbiamo un’architettura a servizi abbiamo il vantaggio che ogni servizio può fare le sue scelte architetturali e/o tecnologiche. Espandiamo per un momento il concetto e chiediamoci se guardando uno solo di questi servizi vediamo una ed una sola architettura. O ancora se guardando uno solo di questi servizi l’ architettura è la risultanza di diversi approcci architetturali che sinergicamente hanno prodotto quello che stiamo osservando. Probabilmente ci rendiamo conto che il risultato è determinato dall’interazione di quattro “punti...

posted @ Monday, October 31, 2016 8:15 AM | Feedback (0)

“Non smettere mai di lamentarti”

In azienda abbiamo una regola non scritta che recita più o meno: Lamentati, ma ogni volta che ti lamenti proponi almeno 3 possibili soluzioni. Quello che sottintende è che gli stimoli sono vitali per evolvere, e ovviamente gli stimoli non devono essere fini a se stessi ma devono essere propositivi e quindi arrivare accompagnati da possibili strade per migliorare. Accompagnato a questo facciamo di tutto anche per stimolare il cosiddetto “avvocato del diavolo”, ci impegniamo molto per mettere in discussione proposte e processi. Se notate non ho detto decisioni, ma solo proposte e...

posted @ Friday, October 28, 2016 9:39 AM | Feedback (1)

Serverless

In tutta sincerità non comprendo tutto questa eccitazione per “serverless”, dove sta la novità o la cosa per cui è necessario eccitarsi? Dal mio punto di vista il metallo è un mero problema di deploy, e come tale ci penso quando penso al deploy. Che ci sia qualcuno che mi offre IAAS, PAAS, o FAAS (Function as a Service, me lo sono inventato adesso) non ha un gran impatto sull’architettura.O dipende da che punto di vista guardiamo l’architettura? :-)

posted @ Thursday, October 27, 2016 4:26 PM | Feedback (0)

CQRS: “N” come “notifiche”

Questo me l’ero perso per strada tempo fa. Ne è passata di acqua sotto i ponti da quella serie su CQRS: “C” come CQRS: una possibile implementazione dei comandi CQRS: eventualmente consistente “QRS” come CQRS CQRS: “A” come de-normalizzazione asincrona CQRS: “C” come “Conversation Id” Siccome il tema mi sembra ancora attuale ha comunque senso darvi un paio di risorse per approfondire: Powering front end apps with NServiceBus Connect frontend to backend using SignalR and...

posted @ Wednesday, October 26, 2016 11:56 AM | Feedback (0)

Comandi, Messaggi ed Eventi, ovvero: perché le parole sono importanti

L’ho già detto quando ho parlato della distinzione tra Evento ed Evento di Dominio (qui e qui) e quando abbiamo approfondito i “fat event” (qui e qui). Quando approcciamo SOA e decliniamo l’architettura usandone una basati su messaggi ci troviamo di fronte a tre tipologie di messaggi: Comandi I comandi sono diretti ad un destinatario, uno solo (ripetete con me: uno solo), e portano con se tutte le informazioni che permettono al destinatario di portare il sistema in un nuovo stato consistente. I comandi tipicamente sono “fat command” e siccome per loro natura creano forte accoppiamento i...

posted @ Tuesday, October 25, 2016 7:10 AM | Feedback (0)

In uno scenario CQRS…

Parto da questo commento di Fabio, perché merita un post a se. Alcune considerazioni: CQRS non implica Event Sourcing e non implica eventi per sincronizzare gli aggregati con i modelli in lettura, è una possibile strada (irta e con tante piccole insidie) ma non è obbligatorio, e il piccolo esperimento che è Radical.CQRS lo dimostra. Se anche decidessimo di percorrere la strada CQRS + Event Sourcing e quindi abbiamo bisogno di produrre le projection, dato che queste ultime vivono nello stesso bounded context dell’aggregato il problema “fat event” non si...

posted @ Friday, October 21, 2016 8:55 AM | Feedback (3)

“fat event”: cosa sono e perché crediamo ci servano

Abbiamo toccato per la prima volta il problema quando abbiamo parlato della differenza tra eventi ed eventi di dominio per tornarci, grazie a Roberto, con un approfondimento e infine per lanciare la stoccata finale: I fat event non esistono. Non abbiamo però mai detto che cosa sia un fat event. Cosa sono Un esempio vale mille parole, nel mondo Pub/Sub delineato da SOA un evento è (in pseudo codice json) una cosa del tipo: {    Id: ‘invoicePaidEvent/some-weird-unique-id’,    InvoiceId: ‘the paid...

posted @ Wednesday, October 19, 2016 10:17 AM | Feedback (6)

Services UI Composition: GraphQL

Quando abbiamo parlato di tecniche di recupero delle informazioni abbiamo introdotto il concetto di proxy. GraphQL sembra essere la soluzione di tutti i mali :-) permettendovi di fare due cose, che voglio approfondire: Implementare il concetto di “proxy” come lo abbiamo descritto liberarvi del male assoluto che rappresentato dal versioning delle API REST pubbliche Mentre il primo punto continua a farmi storce il naso, il secondo è in linea con la mia convinzione che i fat events non esistono. Appena iniziamo a parlare di scritture in un modello distribuitoci ritorneremo....

posted @ Monday, October 17, 2016 8:00 AM | Feedback (7)

Il self-management non funziona, lunga vita al self-management

Ne ho parlato ai Community Days e ad un certo punto ho usato questa slide: Il messaggio che volevo far passare, e di cui ho parlato è che Self-Managment non significa anarchia, ma se preso alla lettera porta all’anarchia. Il che potete bene immagine che non è un bene. Ci sono due ordini di problemi Self-Management è il peggior termine che si potesse usare, perché implica autogestione, quindi tutti-tutto. E questo è il primo problema. Il secondo è che l’autogestione, funziona, ma non scala. Ci abbiamo provato e abbiamo fallito, finché il numero di attori...

posted @ Friday, October 14, 2016 11:09 AM | Feedback (0)

Squad, Guild e TaskForce

Dunque, argomento tosto che non so se riesco (e voglio) esaurire in un singolo post. In Particular la struttura è fluida, molto fluida, con tutte le conseguenze del caso. Ho già introdotto il concetto di Maintainer Group ma ovviamente è una delle tante strutture/processi che in un modello molto fluido sono necessarie, perché l’anarchia non funziona. Le strutture principali che abbiamo sono in questo momento 4: Squad Task force Guild Maintainer Group Lasciamo da parte per un secondo i Maintainer, di cui ho già...

posted @ Wednesday, October 12, 2016 12:04 PM | Feedback (2)

Future Decoded, aka Communcity Days, il giorno dopo.

Per la prima volta ieri ho mancato un post, dato l’impegno preso con me stesso circa 4 mesi fa. Ieri giornata un filino convoluta, se così si può dire. Poco male, recuperiamo. In realtà dal punto di vista della data ci siamo, lo sto scrivendo sempre di lunedì, ma sono senza connettività e quindi sarà online martedì, 11 ottobre. Giovedì, e purtroppo non venerdì per piacevoli impegni personali con la moglie, ho avuto il l’onore, e il piacere, di tenere una sessione a Future Decoded (aka Community Days). Sono ampiamente soddisfatto del risultato, soprattutto se penso che l’argomento non...

posted @ Tuesday, October 11, 2016 7:02 AM | Feedback (0)

Join the Expert - Web Day

L’autunno si sta arricchendo di eventi alla grande :-) e cosa ancora più bella UGI sta tornando! L’agenda è ancora in divenire, ma la location e l’atmosfera sono già ben definite: Join the Expert - Web Day. La tematica principale sarà il mondo web in tante sfaccettature diverse. Io nel mio piccolo vi racconterò di Single Sign On con IdentityServer. Ci si vede il 18 Novembre a Milano! .m

posted @ Friday, October 7, 2016 10:48 AM | Feedback (0)

La tecnologia mi annoia a morte.

Ormai è un dato di fatto, ho un quasi totale disinteresse per la tecnologia in quanto tale. Non sono mai stato quello che in generale viene definito un geek, ma negli ultimi anni ho perso anche quel poco interesse che avevo per gli aspetti prettamente tecnologici. Credo che il bandolo della matassa sia semplicemente riconducibile al “dettaglio” che, dal mio punto di vista, la tecnologia è semplicemente l’ultimo passo del processo di soluzione del problema, e spesso non è il più importante. Mettiamoci poi che la tecnologia evolve con una rapidità notevole e il disinteresse è servito. ...

posted @ Wednesday, October 5, 2016 8:31 AM | Feedback (4)

"Microservices development deep dive" @CodemotionIT in Milan: IT/Ops

Volete capire come gestire il processo di integrazione con sistemi legacy o di terze parti in un mondo basato su Microservices in maniera affidabile ed efficace? Workshop: Microservices development deep dive. Il programma, parte 3: IT/Ops Il workshop è diviso in 4 macro-blocchi, ogni blocco corredato da esempi ed esercizi. La quarta, ed ultima, parte evolve dalla sessione precedente analizzando le problematiche legate all’integrazione tra sistemi diversi; affronteremo quindi, dal punto di vista architetturale prima e tecnologico poi, concetti come Command e IT/Ops al fine di comprendere a fondo come far comunicare sistemi diversi in...

posted @ Tuesday, October 4, 2016 4:13 PM | Feedback (0)

“How to build a business that lasts 100 years”

Notevole: Martin Reeves: How to build a business that lasts 100 years La domanda del secolo al minuto 11 e qualche cosa, adoro :-)

posted @ Monday, October 3, 2016 1:26 PM | Feedback (0)

Croce e delizia del lavoro remoto - Community Days 2016

Come ho già avuto modo di anticipare questa settimana avrò l’onore, per la decima volta, di presentare una sessione ai Community Days. Se siete curiosi di scoprire, e perché no approfondire, il lungo, tortuoso e affascinante percorso che stiamo facendo in Particular nella migrazione da una struttura organizzativa tradizionale a quella che (erroneamente) potremmo definire self-management segnatevi sul calendario: Croce e Delizia: Storia di un lavoratore remoto Giovedì 6 ottobre, ore 15.15 – Sala 2 (Teatro 4) Maggiori informazioni: http://milestone.topics.it/events/cdays-2016-milano.html Un problema! Ho un’interessante conflitto personale in corso,...

posted @ Monday, October 3, 2016 7:52 AM | Feedback (7)