SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Copyright © 2012 NTT DATA Corporation
I N T R O D U C T I O N : C H I S I A M O
@simcellini
http://it.linkedin.com/pub/simone-cellini/61/574/313
@simone_gaddeo
https://it.linkedin.com/in/simone-gaddeo-8b5a22115
@CodemotionWorld @NTTDATA_IT #ce2017msa
I N T R O D U C T I O N : TA L K
Realizzare un’unica piattaforma che garantisce
«Omni-channel»
«Zero-downtime»
«Functional-decomposition»
«Auto-scaling»
E’ possibile?
S U M M A R Y
Business Opportunity
Introduction
Architectural Solution
Technology Solution
Demo
Conclusions
Q & A
B U S I N E S S O P P O R T U N I T Y : C U S T O M E R R E Q U I R E M E N T S
B U S I N E S S O P P O R T U N I T Y : C U S T O M E R E X P E C TAT I O N
Omni-channel
Monitoring
Flessibilità
Tempistiche
Diminuzione delle
tempistiche di
disservizio durante i
deployment
Flessibilità nel deployment e
nella manutenzione evolutiva
della piattaforma
Garanzia di
comportamenti
seamless. Si inizia un
customer journey su un
canale e si continua su
un altro
Monitoring applicativo
e supporto per il
troubleshooting
B U S I N E S S O P P O R T U N I T Y : C U S T O M E R C O N S T R A I N T S
Software Hardware
Business
Cloud
B U S I N E S S O P P O R T U N I T Y : P R O P O S A L
MicroService Architecture (MSA) è uno stile architetturale per lo sviluppo di una singola applicazione
come un insieme di microservizi. I microservizi sono dei servizi piccoli e autonomi, eseguiti come
processi distinti, che cooperano comunicando mediante meccanismi leggeri. La gestione centralizzata
è minima. Quindi ogni microservizio:
o Rappresenta una specifica capacità di business autocontenuta (bounded context)
o Presenta basso livello di accoppiamento con gli altri
o È progettato per sopravvivere al fallimento di altri servizi (Circuit Breaker)
o Deve avere interfaccia che facilita l’uso e massimizza il riuso (Smart endpoints and dumb pipes)
o È rilasciabile e scalabile indipendentemente dagli altri
o È assegnato ad un gruppo di lavoro piccolo (Two Pizza Team) e autonomo
o Può essere realizzato con tecnologie specifiche (polyglot programming) e avere la propria base dati
(polyglot persistence), con possibili migrazioni incrementali di natura diversa
A R C H I T E C T U R A L S O L U T I O N : O V E R V I E W
Desktop
Tablet Smartphone
Api Gateway
Caching Monitoring
Service Discovery
Legacy SystemLegacy System Legacy System
Microservices Microservices Microservices
Container
Api Management
Mantiene il registro di istanze in
esecuzione. Ogni istanza si
registra sul Service Discovery.
La richiesta viene instradata al
Microservices in base ad un
algoritmo bilanciato.
La soluzione proposta ha 3
livelli di cache:
• A livello di Api Gateway
• A livello di microservizio
composto
• A livello di singoli microservizi
Automatizzazione del
deployment e messa in
esercizio di una applicazione,
grazie alla astrazione dovuta
alla virtualizzazione del SO.
Componenti che permettono il
controllo ed il monitoraggio
dell’intera piattaforma. Il
monitoraggio è diviso in
monitoraggio applicativo e
monitoraggio di sistema.
Insieme di singoli servizi con
granularità molto fine. Questa
soluzione permette di avere
servizi indipendenti garantendo
un aumento dell’up-time grazie
all’independent deployment.
E’ il processo di pubblicazione,
documentazione e supervisione
di API in un ambiente sicuro e
scalabile. Informa l’Api Gateway
che è presente un nuovo
servizio.
Access point per diversi client
device-oriented. Le richieste
arrivano all’Api Gateway che
individua il servizio richiesto
applicando le policy configurate
(Autenticazione, ..)
API Gateway
Service Discovery Microservices
Caching
Monitoring
API Management
Container
A R C H I T E C T U R A L S O L U T I O N : D E TA I L
S C O U T I N G
API
Management
Omnichannel
Microservices
Containers
Trend commerciali, organizzativi,
architetturali, tecnologici e
infrastrutturali evolvono e si
intersecano.
Maturità non è ancora stata raggiunta
in alcuni ambiti, ma aziende di
successo adottano già da tempo
nuovi paradigmi e soluzioni
Aziende che intraprendono iniziative
di Digital Transformation devono
tener conto di questi trend.
T E C H N O L O G Y S O L U T I O N : A P I G AT E W AY
Per ogni richiesta viene controllata la possibilità di accedere alla risorsa
richiesta, in caso negativo la richiesta viene rigettata
In caso alcune risorse di Microservices siano in crisi, il carico viene
diminuito gradualmente fino al momento nel quale i sistemi ritornano in
piena efficienza
Vengono registrati diversi dati e metriche per il controllo del servizio in
produzione
E' possibile definire una capacità di richieste per singola risorsa e non
erogare tutte le richieste che superano questa quota
E' possibile ritornare direttamente risposte a livello di gateway senza
necessariamente effettuare routing verso i Microservices
Dinamicamente le richieste vengono ruotate ai diversi cluster di
Microservices con load balancing
Authentication
Authorization
Security
Routing
Resiliency
Monitoring
Quota
Caching
T E C H N O L O G Y S O L U T I O N : A P I G AT E W AY
F I LT E R S
Il ruolo centrale nel routing HTTP Request/Response è costituito dai filtri.
Ogni filtro possiede le seguenti caratteristiche:
• Type (fase di esecuzione all'interno del ciclo di vita della richiesta)
• PRE: Fase antecedente al routing verso la risorsa (ad es. Authentication, Authorization, Logging, etc...)
• ROUTING: Fase di routing della richiesta verso la risorsa (Es. via Apache HttpClient, Ribbon Netflix, etc...)
• POST: Fase di creazione della risposta (ad es. aggiunta di header alla response, statistiche e metriche,
etc...)
• ERROR: Fase eseguita se presente un errore in una delle precedenti fasi
• Execution Order (All'interno di un Type indica l'ordine di esecuzione del filtro)
• Criteria (Condizioni per le quali il filtro viene eseguito)
• Action(L'azione che deve essere eseguita se i Criteria sono rispettati)
SendResponse
CachePut
Stats
Post
Debug
Firewall
Validation
Authentication
Rewrite
CacheGet
Pre
Authorization
RouteRequest
Routing
HTTP
Request
Origin
Filters
T E C H N O L O G Y S O L U T I O N : A P I G AT E W AY
R E Q U E S T L I F E C Y C L E
HTTP
Response
T E C H N O L O G Y S O L U T I O N : S E R V I C E D I S C O V E R Y
EUREKA SERVER
Gestione del registro delle
istanze di servizi presenti
nell’architettura (Service
Registry)
Esposizione di API Rest
per le operazioni di
registrazione, de-
registrazione, fetching
informazioni istanze e
cancellazione
Propagazione delle
informazioni tra i diversi
nodi di Eureka Server
EUREKA CLIENT
Registra e de-registra
istanze di servizio su
Eureka Server
Mantiene la connessione
con il server Eureka
attraverso heartbeat
Recupera e mantiene
informazioni sui servizi dal
server Eureka
4. Get B
T E C H N O L O G Y S O L U T I O N : S E R V I C E D I S C O V E R Y
Service A or ApiGateway
Eureka Client
Service B
Eureka Client
Eureka Server
Ribbon
5. Call B
T E C H N O L O G Y S O L U T I O N : M I C R O S E R V I C E S
Caratteristiche principali
• Permette di sviluppare java stand-alone web applications
• Può utilizzare in modalità embedded diversi servlet
container: Tomcat, Jetty, etc
• Utilizza Spring Framework con configurazione automatica
• Offre funzionalità utili per l’ambiente di produzione: plugin
maven per packaging, possibilità di esternalizzare la
configurazione, possibilità di estrazione di varie metriche
Perché lo abbiamo scelto
• Permette di esporre facilmente servizi REST utilizzando
Spring MVC
• Utilizza Spring Framework che permette uno sviluppo
rapido seguendo le principali best-practices
• Possiede diversi adapters per integrare facilmente db
sql (mysql ,H2 ,Oracle) e no-sql (MongoDb, Cassandra,
ElasticSearch), ldap, cache (Redis , HazelCast), ecc.
Inoltre
• Abbiamo scelto di integrare manualmente Eureka Client senza utilizzare l’integrazione di Spring Cloud in modo da avere
una soluzione snella e indipendente che ci ha permesso di utilizzare Eureka Server e Zuul rilasciati direttamente da
Netflix
T E C H N O L O G Y S O L U T I O N : C O N TA I N E R
Build: Docker permette di comporre applicazioni, senza
preoccuparsi di inconsistenze tra vari ambienti
SHIP: Docker permette di progettare l’intero ciclo di
sviluppo dell’applicazione, e gestirlo con un’interfaccia
utente
Run: offre la possibilità di deployare servizi scalabili
I Container consentono di pacchettizzare
un’applicazione con tutte le parti necessarie (le librerie
e altre risorse correlate) e distribuirla come un unico
pacchetto. E’ un’applicazione eseguita in namespace
separati (network namespace, file system, users, IPC).
Livello di isolamento rafforzato da SELinux che
impedisce ai processi all’interno di un container di agire
all’esterno di esso. Condividono il kernel della
macchina host .
Le soluzioni per orchestrare i container sono
innumerevoli, Swarm è la proposta sviluppata dalla
startup Docker che si adatta facilmente ad ambienti
in cui già si opera con container Docker. Swarm
trasforma molti Docker Engine in un solo Docker
Engine virtuale. Le caratteristiche principali sono :
o Scheduling
o Re-Scheduling in caso di fallimento
o High Availability
o Discovery del servizio DNS-based
o Creazione master
o Aggiunta nodi al cluster
T E C H N O L O G Y S O L U T I O N : A P I M A N A G E M E N T
T E C H N O L O G Y S O L U T I O N : C A C H I N G
In memory data structure store che può essere utilizzato come Key-
Value nosql database, Caching system e Message broker.
Redis lavora con un dataset in memory che garantisce alte performance
High Availability via Redis Sentinel - Partitioning via Redis Cluster
E’ possibile eseguire più comandi in un’unica richiesta
Client per tutti i maggiori linguaggi di programmazione
Supporta varie strutture dati: Strings, Hashes, Lists, Sets, SortedSetsData Structures
High Performance
High Availability
Pipelining
Client
T E C H N O L O G Y S O L U T I O N : M O N I T O R I N G
Control
Asynchrony
Visualization
Key Features
• Data Collection
• Data Processing
• Data Aggregation
• Display Data
Application Output
Producer
Consumer
Data
Key Benefits
• Customer Marketing: analisi statistiche basate su User Experience
• IT-Operation: analisi statistiche sulle Performance
• Customer Product Manager: analisi applicative sul comportamento dello Stack’s
Soluzione completamente basata su pacchetti opensorce. I dati sono estratti dai Log Files senza nessun impatto sulle
performances. Fornisce statistiche, report e e supporto per analisi drill-down per la risoluzione dei malfunzionamenti
T E C H N O L O G Y S O L U T I O N : O V E R V I E W
Desktop
Tablet Smartphone
Api Gateway
Caching Monitoring
Service Discovery
Legacy SystemLegacy System Legacy System
Microservices Microservices Microservices
Container
Api Management
2323Copyright © 2015 NTT DATA Italia SpA
Development
process
Virtualized
environment
Skills
DevOps
• Communication
• Collaboration
• Integration
• Speed
• Efficiency
DevOps non è solo una
metodologia di sviluppo, ma
richiede anche un cambiamento
culturale. E’ basato su una stretta
collaborazione tra il Development
Team e IT Operation Team per
tutto il lifecycle del software, con
l’obiettivo di costruire, evolvere e
rendere resiliente il sistema ai
cambiamenti repentini ed
inaspettati.
“DevOps is a cross-disciplinary community of practice dedicated to the study of building,
evolving and operating rapidly-changing resilient systems at scale.”
T E C H N O L O G Y S O L U T I O N : L I F E C Y C L E A P P R O A C H
D E M O
B E N E F I T S
Fornisce un alto livello di QOS,
quando avviene il fallimento di un
singolo componente, questo non
impatta la stabilità dell’intero sistema
Assicura un alto livello di scalabilità
per ogni componente/servizio sulla
base delle variazioni del carico
Si possono utilizzare più linguaggi,
framework o tipi di data-storage
Poiché ogni servizio è autonomo, è
più facile effettuare hot deploy senza
creare disservizi
Avere online più versioni di uno
stesso servizio per garantire la retro-
compatibilità a tutti i client integrati
con la piattaforma
Facilità per mantenere e far evolvere
un sistema garantendo rapidità nei
cicli di Build/Test/Release per
aggiungere o modificare funzionalità
La soluzione è indipendente da
piattaforme complesse
La responsabilità di ogni singolo
microservizio è chiara e definita
C O N C L U S I O N S
C O N C L U S I O N S
Charles Darwin
Q & A
T H A N K Y O U

Weitere ähnliche Inhalte

Was ist angesagt?

Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App ServiceAndrea Dottor
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITYefry Figueroa
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functionsdotnetcode
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
kube-green | Davide Bianchi
kube-green | Davide Bianchikube-green | Davide Bianchi
kube-green | Davide BianchiKCDItaly
 
Nat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazioneNat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazioneGiuliano Latini
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware TrackUgo Landini
 
Real Time Monitoring and Analitycs : Customer Experience in Production
Real Time Monitoring and Analitycs : Customer Experience in ProductionReal Time Monitoring and Analitycs : Customer Experience in Production
Real Time Monitoring and Analitycs : Customer Experience in ProductionCodemotion
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the bossClaudio Cicali
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote ItalyMarco Parenzan
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
Monitoring Applications in AKS
Monitoring Applications in AKSMonitoring Applications in AKS
Monitoring Applications in AKSGiuliano Latini
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Natale Vinto
 

Was ist angesagt? (20)

Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App Service
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti IT
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
kube-green | Davide Bianchi
kube-green | Davide Bianchikube-green | Davide Bianchi
kube-green | Davide Bianchi
 
Nat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazioneNat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazione
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware Track
 
Real Time Monitoring and Analitycs : Customer Experience in Production
Real Time Monitoring and Analitycs : Customer Experience in ProductionReal Time Monitoring and Analitycs : Customer Experience in Production
Real Time Monitoring and Analitycs : Customer Experience in Production
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the boss
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
Monitoring Applications in AKS
Monitoring Applications in AKSMonitoring Applications in AKS
Monitoring Applications in AKS
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 

Ähnlich wie Moving from Monolithic to Microservice Architecture: an OSS based stack deployed in Production - Simone Cellini, Simone Gaddeo, Daniele Mannarino - Codemotion Rome 2017

API Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaAPI Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaProfesia Srl, Lynx Group
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLPar-Tec S.p.A.
 
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseRed Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseKiratech
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingfrancesco pesare
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziPar-Tec S.p.A.
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Par-Tec S.p.A.
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLPar-Tec S.p.A.
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?fcrippa
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: OpsviewBabel
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioPar-Tec S.p.A.
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...confluent
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsEmerasoft, solutions to collaborate
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLPar-Tec S.p.A.
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfFlorence Consulting
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazioneXPeppers
 

Ähnlich wie Moving from Monolithic to Microservice Architecture: an OSS based stack deployed in Production - Simone Cellini, Simone Gaddeo, Daniele Mannarino - Codemotion Rome 2017 (20)

API Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole ItaliaAPI Transformation in Crédit Agricole Italia
API Transformation in Crédit Agricole Italia
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
 
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseRed Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computing
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microservizi
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio Devops
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazione
 

Mehr von Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Moving from Monolithic to Microservice Architecture: an OSS based stack deployed in Production - Simone Cellini, Simone Gaddeo, Daniele Mannarino - Codemotion Rome 2017

  • 1. Copyright © 2012 NTT DATA Corporation
  • 2. I N T R O D U C T I O N : C H I S I A M O @simcellini http://it.linkedin.com/pub/simone-cellini/61/574/313 @simone_gaddeo https://it.linkedin.com/in/simone-gaddeo-8b5a22115 @CodemotionWorld @NTTDATA_IT #ce2017msa
  • 3. I N T R O D U C T I O N : TA L K Realizzare un’unica piattaforma che garantisce «Omni-channel» «Zero-downtime» «Functional-decomposition» «Auto-scaling» E’ possibile?
  • 4. S U M M A R Y Business Opportunity Introduction Architectural Solution Technology Solution Demo Conclusions Q & A
  • 5. B U S I N E S S O P P O R T U N I T Y : C U S T O M E R R E Q U I R E M E N T S
  • 6. B U S I N E S S O P P O R T U N I T Y : C U S T O M E R E X P E C TAT I O N Omni-channel Monitoring Flessibilità Tempistiche Diminuzione delle tempistiche di disservizio durante i deployment Flessibilità nel deployment e nella manutenzione evolutiva della piattaforma Garanzia di comportamenti seamless. Si inizia un customer journey su un canale e si continua su un altro Monitoring applicativo e supporto per il troubleshooting
  • 7. B U S I N E S S O P P O R T U N I T Y : C U S T O M E R C O N S T R A I N T S Software Hardware Business Cloud
  • 8. B U S I N E S S O P P O R T U N I T Y : P R O P O S A L MicroService Architecture (MSA) è uno stile architetturale per lo sviluppo di una singola applicazione come un insieme di microservizi. I microservizi sono dei servizi piccoli e autonomi, eseguiti come processi distinti, che cooperano comunicando mediante meccanismi leggeri. La gestione centralizzata è minima. Quindi ogni microservizio: o Rappresenta una specifica capacità di business autocontenuta (bounded context) o Presenta basso livello di accoppiamento con gli altri o È progettato per sopravvivere al fallimento di altri servizi (Circuit Breaker) o Deve avere interfaccia che facilita l’uso e massimizza il riuso (Smart endpoints and dumb pipes) o È rilasciabile e scalabile indipendentemente dagli altri o È assegnato ad un gruppo di lavoro piccolo (Two Pizza Team) e autonomo o Può essere realizzato con tecnologie specifiche (polyglot programming) e avere la propria base dati (polyglot persistence), con possibili migrazioni incrementali di natura diversa
  • 9. A R C H I T E C T U R A L S O L U T I O N : O V E R V I E W Desktop Tablet Smartphone Api Gateway Caching Monitoring Service Discovery Legacy SystemLegacy System Legacy System Microservices Microservices Microservices Container Api Management
  • 10. Mantiene il registro di istanze in esecuzione. Ogni istanza si registra sul Service Discovery. La richiesta viene instradata al Microservices in base ad un algoritmo bilanciato. La soluzione proposta ha 3 livelli di cache: • A livello di Api Gateway • A livello di microservizio composto • A livello di singoli microservizi Automatizzazione del deployment e messa in esercizio di una applicazione, grazie alla astrazione dovuta alla virtualizzazione del SO. Componenti che permettono il controllo ed il monitoraggio dell’intera piattaforma. Il monitoraggio è diviso in monitoraggio applicativo e monitoraggio di sistema. Insieme di singoli servizi con granularità molto fine. Questa soluzione permette di avere servizi indipendenti garantendo un aumento dell’up-time grazie all’independent deployment. E’ il processo di pubblicazione, documentazione e supervisione di API in un ambiente sicuro e scalabile. Informa l’Api Gateway che è presente un nuovo servizio. Access point per diversi client device-oriented. Le richieste arrivano all’Api Gateway che individua il servizio richiesto applicando le policy configurate (Autenticazione, ..) API Gateway Service Discovery Microservices Caching Monitoring API Management Container A R C H I T E C T U R A L S O L U T I O N : D E TA I L
  • 11. S C O U T I N G API Management Omnichannel Microservices Containers Trend commerciali, organizzativi, architetturali, tecnologici e infrastrutturali evolvono e si intersecano. Maturità non è ancora stata raggiunta in alcuni ambiti, ma aziende di successo adottano già da tempo nuovi paradigmi e soluzioni Aziende che intraprendono iniziative di Digital Transformation devono tener conto di questi trend.
  • 12. T E C H N O L O G Y S O L U T I O N : A P I G AT E W AY Per ogni richiesta viene controllata la possibilità di accedere alla risorsa richiesta, in caso negativo la richiesta viene rigettata In caso alcune risorse di Microservices siano in crisi, il carico viene diminuito gradualmente fino al momento nel quale i sistemi ritornano in piena efficienza Vengono registrati diversi dati e metriche per il controllo del servizio in produzione E' possibile definire una capacità di richieste per singola risorsa e non erogare tutte le richieste che superano questa quota E' possibile ritornare direttamente risposte a livello di gateway senza necessariamente effettuare routing verso i Microservices Dinamicamente le richieste vengono ruotate ai diversi cluster di Microservices con load balancing Authentication Authorization Security Routing Resiliency Monitoring Quota Caching
  • 13. T E C H N O L O G Y S O L U T I O N : A P I G AT E W AY F I LT E R S Il ruolo centrale nel routing HTTP Request/Response è costituito dai filtri. Ogni filtro possiede le seguenti caratteristiche: • Type (fase di esecuzione all'interno del ciclo di vita della richiesta) • PRE: Fase antecedente al routing verso la risorsa (ad es. Authentication, Authorization, Logging, etc...) • ROUTING: Fase di routing della richiesta verso la risorsa (Es. via Apache HttpClient, Ribbon Netflix, etc...) • POST: Fase di creazione della risposta (ad es. aggiunta di header alla response, statistiche e metriche, etc...) • ERROR: Fase eseguita se presente un errore in una delle precedenti fasi • Execution Order (All'interno di un Type indica l'ordine di esecuzione del filtro) • Criteria (Condizioni per le quali il filtro viene eseguito) • Action(L'azione che deve essere eseguita se i Criteria sono rispettati)
  • 15. T E C H N O L O G Y S O L U T I O N : S E R V I C E D I S C O V E R Y EUREKA SERVER Gestione del registro delle istanze di servizi presenti nell’architettura (Service Registry) Esposizione di API Rest per le operazioni di registrazione, de- registrazione, fetching informazioni istanze e cancellazione Propagazione delle informazioni tra i diversi nodi di Eureka Server EUREKA CLIENT Registra e de-registra istanze di servizio su Eureka Server Mantiene la connessione con il server Eureka attraverso heartbeat Recupera e mantiene informazioni sui servizi dal server Eureka
  • 16. 4. Get B T E C H N O L O G Y S O L U T I O N : S E R V I C E D I S C O V E R Y Service A or ApiGateway Eureka Client Service B Eureka Client Eureka Server Ribbon 5. Call B
  • 17. T E C H N O L O G Y S O L U T I O N : M I C R O S E R V I C E S Caratteristiche principali • Permette di sviluppare java stand-alone web applications • Può utilizzare in modalità embedded diversi servlet container: Tomcat, Jetty, etc • Utilizza Spring Framework con configurazione automatica • Offre funzionalità utili per l’ambiente di produzione: plugin maven per packaging, possibilità di esternalizzare la configurazione, possibilità di estrazione di varie metriche Perché lo abbiamo scelto • Permette di esporre facilmente servizi REST utilizzando Spring MVC • Utilizza Spring Framework che permette uno sviluppo rapido seguendo le principali best-practices • Possiede diversi adapters per integrare facilmente db sql (mysql ,H2 ,Oracle) e no-sql (MongoDb, Cassandra, ElasticSearch), ldap, cache (Redis , HazelCast), ecc. Inoltre • Abbiamo scelto di integrare manualmente Eureka Client senza utilizzare l’integrazione di Spring Cloud in modo da avere una soluzione snella e indipendente che ci ha permesso di utilizzare Eureka Server e Zuul rilasciati direttamente da Netflix
  • 18. T E C H N O L O G Y S O L U T I O N : C O N TA I N E R Build: Docker permette di comporre applicazioni, senza preoccuparsi di inconsistenze tra vari ambienti SHIP: Docker permette di progettare l’intero ciclo di sviluppo dell’applicazione, e gestirlo con un’interfaccia utente Run: offre la possibilità di deployare servizi scalabili I Container consentono di pacchettizzare un’applicazione con tutte le parti necessarie (le librerie e altre risorse correlate) e distribuirla come un unico pacchetto. E’ un’applicazione eseguita in namespace separati (network namespace, file system, users, IPC). Livello di isolamento rafforzato da SELinux che impedisce ai processi all’interno di un container di agire all’esterno di esso. Condividono il kernel della macchina host . Le soluzioni per orchestrare i container sono innumerevoli, Swarm è la proposta sviluppata dalla startup Docker che si adatta facilmente ad ambienti in cui già si opera con container Docker. Swarm trasforma molti Docker Engine in un solo Docker Engine virtuale. Le caratteristiche principali sono : o Scheduling o Re-Scheduling in caso di fallimento o High Availability o Discovery del servizio DNS-based o Creazione master o Aggiunta nodi al cluster
  • 19. T E C H N O L O G Y S O L U T I O N : A P I M A N A G E M E N T
  • 20. T E C H N O L O G Y S O L U T I O N : C A C H I N G In memory data structure store che può essere utilizzato come Key- Value nosql database, Caching system e Message broker. Redis lavora con un dataset in memory che garantisce alte performance High Availability via Redis Sentinel - Partitioning via Redis Cluster E’ possibile eseguire più comandi in un’unica richiesta Client per tutti i maggiori linguaggi di programmazione Supporta varie strutture dati: Strings, Hashes, Lists, Sets, SortedSetsData Structures High Performance High Availability Pipelining Client
  • 21. T E C H N O L O G Y S O L U T I O N : M O N I T O R I N G Control Asynchrony Visualization Key Features • Data Collection • Data Processing • Data Aggregation • Display Data Application Output Producer Consumer Data Key Benefits • Customer Marketing: analisi statistiche basate su User Experience • IT-Operation: analisi statistiche sulle Performance • Customer Product Manager: analisi applicative sul comportamento dello Stack’s Soluzione completamente basata su pacchetti opensorce. I dati sono estratti dai Log Files senza nessun impatto sulle performances. Fornisce statistiche, report e e supporto per analisi drill-down per la risoluzione dei malfunzionamenti
  • 22. T E C H N O L O G Y S O L U T I O N : O V E R V I E W Desktop Tablet Smartphone Api Gateway Caching Monitoring Service Discovery Legacy SystemLegacy System Legacy System Microservices Microservices Microservices Container Api Management
  • 23. 2323Copyright © 2015 NTT DATA Italia SpA Development process Virtualized environment Skills DevOps • Communication • Collaboration • Integration • Speed • Efficiency DevOps non è solo una metodologia di sviluppo, ma richiede anche un cambiamento culturale. E’ basato su una stretta collaborazione tra il Development Team e IT Operation Team per tutto il lifecycle del software, con l’obiettivo di costruire, evolvere e rendere resiliente il sistema ai cambiamenti repentini ed inaspettati. “DevOps is a cross-disciplinary community of practice dedicated to the study of building, evolving and operating rapidly-changing resilient systems at scale.” T E C H N O L O G Y S O L U T I O N : L I F E C Y C L E A P P R O A C H
  • 24. D E M O
  • 25. B E N E F I T S Fornisce un alto livello di QOS, quando avviene il fallimento di un singolo componente, questo non impatta la stabilità dell’intero sistema Assicura un alto livello di scalabilità per ogni componente/servizio sulla base delle variazioni del carico Si possono utilizzare più linguaggi, framework o tipi di data-storage Poiché ogni servizio è autonomo, è più facile effettuare hot deploy senza creare disservizi Avere online più versioni di uno stesso servizio per garantire la retro- compatibilità a tutti i client integrati con la piattaforma Facilità per mantenere e far evolvere un sistema garantendo rapidità nei cicli di Build/Test/Release per aggiungere o modificare funzionalità La soluzione è indipendente da piattaforme complesse La responsabilità di ogni singolo microservizio è chiara e definita
  • 26. C O N C L U S I O N S
  • 27. C O N C L U S I O N S Charles Darwin
  • 28. Q & A
  • 29. T H A N K Y O U