Quali sono le buone pratiche per progettare un'architettura in stile Microservices?
Come rendere evolutiva un'applicazione Frontend senza che invecchi dopo poco tempo?
Come organizzare più team che lavorano su una Piattaforma che ha centinaia di Microservices e decine di Frontend?
A queste tre domande risponderò durante il talk con esempi pratici e casi di vita vissuta.
2. expectations
time
discovery learn improve real world new culture
We told our story.
Feedbacks: “This is
not agile. Agile is …
bla bla”
This is my Culture.
Agile or not Agile it
works for us :-)
Agile at Scale, Agile
Buzzwords, the
“TRUE Agile” is ...
Real life is
hard but we
can do it
I understood
the theory.
Really nice!
This is not correct…
you are not Agile…
(again!)
Starting from here we build
our business! Values,
Principles, Culture, Tools
and Individuals are all
ingredients for our success.
Now we are aware!
Now we are satisfied!
Now we are ready to
improve continuously!
I hate Agile!
We are in production!
It was hard but we’ve
learnt a lot!
Restart from Basics.
Values, Principles,
XP, Improvement
Now it’s clear! Agile is
a mindset, my
mindset, our mindset!
Hey guy, I found my
way! I’m happy and it
works (for us)
WOW!
The first
conference
We are going in production. Not all
moments are easy as were during
the project
Thanks to
retrospectives we
are able to
improve!
3. Balance
Business objectives
● Wow effect features
● Time-to-marker
● Customer satisfaction
● Upselling/Cross selling
● Profitability
Technical objectives
● Reduce Technical Debt
● Simplicity
● Innovation
● Learning
● Team working
● Talent retention
● Happiness
4. A Modern approach to create IT systems can
favorite this balance
The balance it’s not so easy to reach.
Technical debt and time-to-market are factors that affect this balance.
Which are the key factors to build Modern Applications?
5. 3 pilastri dei sistemi IT moderni
• Pongono i dati al centro: Big Data, Fast Data
• Interconessi: API as a Product
• Hanno capacità di evolvere: stili architetturali (es: Microservices)
Gestite
• Organizzativo: Agile, Lean
• Pperations e Business Continuity: DevOps
7. Technology
The Modern Application Ecosystem
Non esiste un’architettura definitiva. Esistono stili, visioni e modi di pensare ed evolvere!
Stimulus
Big Data
Analytics/Machine Learning
Event Based Integration Layer
Service Integration
Layer
Decoupling High Performance Data Store
APIs
Microservices/Miniservices
Microfrontends (App, Web, Bot, Voice)
System of Record Applications and DBs
User Experience (Click, Touch, Speak, Chat, Watch)
Dev Tools
Ops Tools
Analytics Tools
9. “Any organization that
designs a system … will
inevitably produce a
design whose structure is
a copy of the
organization's
communication
structure.”
Melvin Conway, 1968
http://www.melconway.com/research/committees.html
11. Team and Culture
Il “noi” e “loro” rallenta le decisioni e aumenta i costi. Riorganizzarsi e allinearsi con le esigenze dei clienti finali
diventa più efficace e riduce costi aumentando la velocità di delivery.
Ispirato dal libro Monolith to Microservices - Sam Newman.
Team Team Team
PMO
Tech Leadership
(CTO, CIO) Customers
Land of
confusion
POs
Communicationwall
Fabbrica Software Business
Feature Team
Customers Customers
Tech Leadership
(CTO, CIO)
Digital Hub
Team PO
Feature Team
Team PO
Support
12. Feature teams
Un feature team non è creato in modo temporaneo per fare una o più funzionalità e poi si scioglie.
Un feature team è stabile e gestisce tutto il ciclo di vita dell’insieme delle features che sono di sua responsabilità.
Approfondimenti su less.works – CC BY-ND
14. Diversamente dai component team è in grado di toccare tutti i componenti e completare uno o più features.
Approfondimenti su less.works – CC BY-ND
Component teams Feature teams
16. Trenord 2014-2019
Integration Layer
APIs
Services
App, Website, Moovit, Google
External Systems: timetable, pricing model, live data
Trenord in 5 anni ha costruito una piattaforma
digitale in modo incrementale agganciando
man mano nuovi canali e facendo evolvere
l’architettura in base allo scaling degli utenti.
Fast
Data
17. Trenord – La storia
Anni 2015
API req/sec 10
Team Scrum 4
Stile
architetturale
Microkernel+
Fast Data
Hosting OnPrem
Backend
Languages
Node.js
Mobile
Languages
Node.js+
ObjectiveC+
Java Android
18. Trenord – La storia
Anni 2015 2016
API req/sec 10 40
Team Scrum 4 4
Stile
architetturale
Microkernel+
Fast Data
Microkernel+
Fast Data
Hosting OnPrem OnPrem
Backend
Languages
Node.js Node.js
Mobile
Languages
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
19. Trenord – La storia
Anni 2015 2016 2017
API req/sec 10 40 300
Team Scrum 4 4 5
Stile
architetturale
Microkernel+
Fast Data
Microkernel+
Fast Data
Microkernel+
Miniservice+
Fast Data
Hosting OnPrem OnPrem OnPrem
Backend
Languages
Node.js Node.js Node.js
Mobile
Languages
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
20. Trenord – La storia
Anni 2015 2016 2017 2018
API req/sec 10 40 300 1500
Team Scrum 4 4 5 6
Stile
architetturale
Microkernel+
Fast Data
Microkernel+
Fast Data
Microkernel+
Miniservice+
Fast Data
Microkernel+
Microservices+
Fast Data
Hosting OnPrem OnPrem OnPrem OnPrem
Backend
Languages
Node.js Node.js Node.js Node.js
Mobile
Languages
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Swift+
Java Android+
Kotlin Android
21. Trenord – La storia
Anni 2015 2016 2017 2018 2019
API req/sec 10 40 300 1500 4000
Team Scrum 4 4 5 6 6
Stile
architetturale
Microkernel+
Fast Data
Microkernel+
Fast Data
Microkernel+
Miniservice+
Fast Data
Microkernel+
Microservices+
Fast Data
Miniservices+
Fast Data
Hosting OnPrem OnPrem OnPrem OnPrem Cloud
Backend
Languages
Node.js Node.js Node.js Node.js Node.js+
Kotlin
Mobile
Languages
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Java Android
Node.js+
ObjectiveC+
Swift+
Java Android+
Kotlin Android
Node.js+
ObjectiveC+
Swift+
Java Android+
Kotlin Android
22. Trenord – Da Microkernel a Microservizi
Integration Layer
API Gateway
Microkernel
Mobile App
External Systems: timetable, pricing model, live data
Fast
Data
M53 Trip Plan
Train
Status
Push
Tickets
Passes
Paymens Favorites Settings News Stations
Integration Layer
API Gateway
Microkernel
Mobile App
External Systems: timetable, pricing model, live data
Fast
Data
M53 Trip Plan
Train
Status
Push
Tickets
Passes
Paymens Favorites Settings News Stations
Microservices
Un
passaggio
graduale con
l’attenzione
di sempre
avere il
fallback
Trip Plan
23. Trenord – Canary Releases
Integration Layer
External Systems: timetable, pricing model, live data
API Gateway
App v1/v2
100%
Train Status v5.5
Microservices
100%
Fast
Data
Ogni rilascio di nuove features è
effettuato con Canary Releases sia
lato APP che lato Microservices.
Le API sono quasi sempre
retrocompatibili. In 5 anni hanno
avuto una volta sola una breaking
change su una sotto parte
24. Trenord – Canary Releases
Integration Layer
App v3
External Systems: timetable, pricing model, live data
API Gateway
App v1/v2
5% 95%
Train Status v5.5
Microservices
100%
Fast
Data
Ogni rilascio di nuove features è
effettuato con Canary Releases sia
lato APP che lato Microservices.
Le API sono quasi sempre
retrocompatibili. In 5 anni hanno
avuto una volta sola una breaking
change su una sotto parte
25. Trenord – Canary Releases
Integration Layer
App v3
External Systems: timetable, pricing model, live data
API Gateway
App v1/v2
5% 95%
Train Status v5.5
Microservices
Train Status v6
20% 80%
Fast
Data
Ogni rilascio di nuove features è
effettuato con Canary Releases sia
lato APP che lato Microservices.
Le API sono quasi sempre
retrocompatibili. In 5 anni hanno
avuto una volta sola una breaking
change su una sotto parte
26. Trenord – Il team e l’organizzazione
Caratteristiche
● Un team unico Scrum
● Sprint da 1 settimana
● Rilasci continui
● 3 Ambienti: integration, beta, prod
Responsabilità
● Uptime 24/7 di tutto il sistema
end-to-end
● Customer care app
● Analisi analitici e proposta
features
● Coding, Testing, Ops, …
27. Mia-Platform – Il team e l’organizzazione 2017
API Gateway
Microservices
(Node.js)
Angular
Core Team
Customers
Tech Leadership
(CTO, CIO)
Team PO
Mia-Platform Products
28. Mia-Platform – Accelerazione (+servizi, +FE capabilities)
Microservices
(Java, Node.js, Kotlin, Python, Go)
React
Core Team
Customers
Tech Leadership
(CTO, CIO)
Team PO
Contributors Team
Team PO
API Gateway
Angular
I contributors team lavorano su progetti cliente e fanno evolvere il prodotto in stile open source
Mia-Platform Products
29. Mia-Platform – Microfrontends
React
Core Team
Team PO
Node.js Microservices
Java/Kotlin Microservices
Go Microservices
Contributors Team
Team PO
Angular
Contributors Team
Team PO
React
• Un insieme di regole comuni sulla
gestione dei feature branch, merge
request e code design.
• Pipelines automatizzate in diversi
ambieti per conituous Delibery.
• Kata, Mob Programming, Pair
Programming per condividere la
conoscenza.
Librerie comuni per
JavaScript per
integrare diversi
Framework e Librerie
31. Culture is your asset!
Don’t copy and paste from other companies
but build your own!
This is the real competitive advantage for
your business!
Giulio Roggero
CTO and Founder Mia-Platform
Chief Strategist and Partner Intré
Advisor and Founder Agile Reloaded