SlideShare a Scribd company logo
Architetture a Microservizi con
Docker Container
Seminario
Ordine Ingegneri Lecco
Ing. Roberto Messora
Lecco, 24/10/2016
2
– @robymes
– robymes@gmail.com
– roberto.messora@valuelab.it
– robymes
Contatti
www.ugidotnet.org
3
Presentare Docker e i suoi concetti di base, una delle tecnologie
con il trend di crescita e adozione più alto
Definire quali sono i contesti architetturali in cui Docker si
colloca al fine di fornire elementi di valutazione circa la sua
eventuale adozione
Presentare l’ecosistema di Docker e le tecnologie/prodotti ad
esso legati
Fornire alcuni elementi legati al ciclo di vita di sviluppo di una
soluzione basata su Docker
Presentare una soluzione demo basata su Docker
Obiettivi
4
Riferimenti
Demo
–https://github.com/robymes/OrdinglcDocker
Presentazione
–http://www.slideshare.net/RobertoMessora/architetture-a-
microservizi-con-docker-container
5
Docker
–“It works on my machine”
–Docker Container e dintorni
–Consolidare il deploy: Virtual vs Container
–Scalare Docker: Docker Swarm (et al.)
–Ciclo di sviluppo di una soluzione Docker
Architetture basate sui servizi
–Microservices vs SOA
Demo
Agenda
8
“Docker containers wrap a piece of software in a
complete filesystem that contains everything needed to
run: code, runtime, system tools, system libraries –
anything that can be installed on a server. This
guarantees that the software will always run the same,
regardless of its environment.”
https://www.docker.com/what-docker
Cos’è un Container
9
Da Wikipedia
–Docker è un progetto open-source che automatizza il deployment di
applicazioni all'interno di container software, fornendo un'astrazione
addizionale grazie alla virtualizzazione a livello di sistema operativo di
Linux
–Utilizza le funzionalità di isolamento delle risorse del kernel Linux per
consentire a container indipendenti di coesistere sulla stessa istanza di
Linux, evitando l'installazione e la manutenzione di una macchina virtuale
–Le risorse possono essere isolate, i servizi limitati ed i processi avviati in
modo da avere una prospettiva completamente privata del sistema
operativo, col loro proprio identificativo, file system ed interfaccia di rete
• Namespace del kernel: isolano ciò che l'applicazione può vedere dell'ambiente
operativo (l'albero dei processi, la rete, gli ID utente ed i file system montati)
• Cgroups del kernel: isolamento delle risorse (CPU, memoria, I/O a blocchi, rete)
• Libreria libcontainer: uso delle funzionalità di virtualizzazione del kernel
Docker in pillole
10
Docker Container: uno stack di immagini
11
Con Windows Server 2016 Docker è disponibile nativamente anche su Windows
I principi di base sono gli stessi di Linux: accesso limitato e controllato alle risorse del
kernel
Un container Linux NON può essere ospitato su un host Windows e viceversa: i
kernel sono differenti, le API utilizzate dal container sono specifiche per i due sistemi
operativi (API Windows e API Linux)
Un client Docker è in grado di supportare entrambe le API: un solo prodotto per
enrambi i sistemi operative
I container Windows sono di due tipi
– Windows Container: i container condividono il kernel con il sistema operativo host
(Windows Server 2016), altamente efficienti, ma adatti per ambienti trusted
– Hyper-V Container: ad ogni container è assegnato un kernel virtualizzato e le
relative risorse (CPU, memoria, …), meno efficienti, ma isolamento totale
Docker for Windows
12
Sviluppato inizialmente come progetto interno in dotCloud, una
società che si occupa di PaaS (Platform as a Service)
Pubblicato su github come open source nel Marzo del 2013
Nel Marzo del 2014 viene rilasciata la sua principale libreria
libcontainer, sviluppata in Go
Ad oggi l’adozione di Docker da parte dei maggiori player di
PaaS e cloud è praticamente totale: Amazon Web Services,
Google Cloud Platform, IBM Bluemix, Microsoft Azure,
OpenStack Nova, Vagrant, VMware vSphere, …
Fra i maggiori contributori del progetto ci sono: il team di
Docker, Cisco, Google, Huawei, IBM, Microsoft, Red Hat
Docker, un po’ di storia
13
Consolidare il deploy: Virtual vs Container
14
Docker Survey 2016
15
Docker Survey 2016
16
Docker Survey 2016
17
L’ecosistema Docker è composto da una serie di
elementi
–Docker Engine
–Docker Machine
–Docker Compose
–Docker Swarm
–Docker Hub
Docker Container e dintorni
18
Docker Engine e Docker Machine
Docker Engine
Docker Machine
19
Tempo di andare in produzione:
–Scalabilità
–Affidabilità
–Facilità di deploy
–Dev once run everywhere
Scalare Docker: Docker Swarm
20
Apache Mesos
Marathon
Mesosphere DC/OS
Kubernetes
…
Scalare Container: non solo Docker Swarm
21
Ciclo di sviluppo con Docker
Hub
Push
Dockerfile
Pull
Dockerfile Pull
Image
Pull
Image
22
Container e Architettura: Microservices?
23
Modello OASIS
– Servizio: A mechanism to enable access to one or more capabilities, where the
access is provided using a prescribed interface and is exercised consistent with
constraints and policies as specified by the service description
Generalmente topologicamente distribuite
– Accesso ai servizi è remoto (REST, SOAP, AMQP, ...)
Pro
– Scalabilità
– Disaccoppiamento
– Controllo dello sviluppo, testing, deployment
– Riscrittura invece che manutenzione
Contro
– Gestione dei contratti
– Accesso remoto
Architetture basate sui servizi
24
Contratto
– Service-based: contratto gestito dal solo servizio
– Consumer-driven: contratto gestito in collborazione fra servizio e consumer
– Attenzione al versioning
Disponibilità
– Capacità di un servizio di essere raggiunto (connettività)
Responsività
– Capacità di un servizio di rispondere alla chiamata
Sicurezza
– Approccio Microservices: sicurezza gestita indipendentemente da ogni servizio
senza mediazione di un middleware (altrimenti ci sarebbe troppo "traffico" e la
sicurezza uscirebbe dal buonded context introducendo troppe dipendenze esterne)
– Approccio tradizionale: sicurezza gestita tramite middleware infrastrutturale
Transazioni
Architetture basate sui servizi: ATTENZIONE
Blog Mauro Servienti
http://blogs.ugidotnet.org/topics
25
Transazioni tradizionali
–ACID (atomicity, consistency, isolation, durability): in un contesto
transazionale se una azione fallisce, fallisce l’intera transazione e si esegue
un rollback
In una architettura distribuita è praticamente impossibile mantenere un
contesto transazionale: in genere una singola richiesta di business viene
gestita da n servizi
Transazioni distribuite
–BASE (basic availability, soft state, eventual consistency): workflow, saga
Nel caso in cui sia necessario assicurare ACID a livello di business la
soluzione è rendere i servizi più "grossi" al fine di includere tutte le
operazioni coinvolte
Per rafforzare BASE è possibile utilizzare gli eventi
–Miglior tracciamento di che cosa sta accadendo nel sistema al costo di una
maggiore complessità di gestione della messaggistica
Architetture basate sui servizi: Transazioni
26
Limitata tassonomia dei servizi
– Servizi Funzionali
– Servizi di Infrastruttura
• non esposti verso l’esterno
• Gestiti come servizi condivisi privati ad uso dei Servizi Funzionali
Tassonomia: Microservices
27
Ampia tassonomia dei servizi
– Servizi di Business
– Servizi di Infrastruttura
– Servizi Enterprise
– Servizi Applicativi
Tassonomia: SOA
28
Granularità
Microservices SOA
Una sola completa funzionalità di
business
Dimensione molto piccola
Necessità di comunicazione diretta
fra servizi
Difficoltà di implementazione
transazioni tradizionali
Una intera funzionalità di business
implementata da più servizi
Dimensioni variabili fino anche ad
un intero sotto Sistema
Comunicazione fra servizi tramite
middleware (ESB)
Possibilità di utilizzo transazioni
tradizionali
“Start with a small number o larger services first”
Sam Newman
Building Microservices, O’Really
29
Architetture di riferimento
Microservices
– Domain Driven Design (DDD)
– Bounded Context
– Dipendenze ridotte al minimo
(infrastruttura)
– Service chaining (attenzione a
catene troppo lunghe)
SOA
– Service component sharing
– Enterprise services
– Dipendenze gestite introducendo
altri livelli di servizi
– Service orchestration
30
Interoperabilità fra servizi
Microservices
– REST
– Accesso diretto al servizio
– Semplificazione dei protocolli e
delle implementazioni
SOA
– REST, AMQP, SOAP, …
– Accesso ai servizi tramite
middleware (ESB)
– Protocol transformation, Message
transformation, Contract
decoupling
31
Demo Docker
32
Contatti
Roberto Messora
ESRI & Microsoft Specialist
– @ Value Lab Spa
Speaker & Collaborator
– @ UGIDotNET
Recapiti
Value Lab Spa
Piazza A. Diaz 2, 20123 Milano
(+39) 348-5138717
roberto.messora@valuelab.it
robymes@gmail.com
Value Lab Srl
Piazza Diaz 2, 20123 Milano (Italy)
T +39.02.7788931 F +39.02.76313384
valuelab@valuelab.it - www.valuelab.it

More Related Content

What's hot

Docker Basics
Docker BasicsDocker Basics
Docker Basics
Eueung Mulyana
 
Docker introduction & benefits
Docker introduction & benefitsDocker introduction & benefits
Docker introduction & benefits
Amit Manwade
 
What is Docker
What is DockerWhat is Docker
What is Docker
Pavel Klimiankou
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
DuckDuckGo
 
Introduction and Deep Dive Into Containerd
Introduction and Deep Dive Into ContainerdIntroduction and Deep Dive Into Containerd
Introduction and Deep Dive Into Containerd
Kohei Tokunaga
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
Ravindu Fernando
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
Bytemark
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016
Docker, Inc.
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Phuc Nguyen
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Hao Fan
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
Terry Cho
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
Dronix
 
La rivoluzione dei Microservizi
La rivoluzione dei MicroserviziLa rivoluzione dei Microservizi
La rivoluzione dei Microservizi
italianaSoftware
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
NexThoughts Technologies
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
ejlp12
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Peng Xiao
 
Introduction à la technologie Cloud Computing
Introduction à la technologie Cloud ComputingIntroduction à la technologie Cloud Computing
Introduction à la technologie Cloud Computing
Raouia Bouabdallah
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with Quarkus
Niklas Heidloff
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
Open Source Consulting
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
Araf Karsh Hamid
 

What's hot (20)

Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Docker introduction & benefits
Docker introduction & benefitsDocker introduction & benefits
Docker introduction & benefits
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Introduction and Deep Dive Into Containerd
Introduction and Deep Dive Into ContainerdIntroduction and Deep Dive Into Containerd
Introduction and Deep Dive Into Containerd
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
La rivoluzione dei Microservizi
La rivoluzione dei MicroserviziLa rivoluzione dei Microservizi
La rivoluzione dei Microservizi
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Introduction à la technologie Cloud Computing
Introduction à la technologie Cloud ComputingIntroduction à la technologie Cloud Computing
Introduction à la technologie Cloud Computing
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with Quarkus
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 

Viewers also liked

Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
mvetro
 
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
Giuliano Latini
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
giacomos
 
Docker
Docker Docker
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
Daniele Mondello
 
Introduzione a docker
Introduzione a dockerIntroduzione a docker
Introduzione a docker
Antonio Liccardi
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
Marco Parenzan
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
Daniele Mondello
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
Giuliano Latini
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
Daniele Mondello
 
Docker Presentation
Docker PresentationDocker Presentation
Docker Presentation
Adhoura Academy
 
Introduzione al cloud computing e microsoft azure
Introduzione al cloud computing e microsoft azureIntroduzione al cloud computing e microsoft azure
Introduzione al cloud computing e microsoft azure
Angelo Gino Varrati
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtime
Docker, Inc.
 
Ap Camp 2011
Ap Camp 2011Ap Camp 2011
Ap Camp 2011
Enrico Pirozzi
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
adri1s
 
Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)
Andrea Cavicchini
 
PostgreSQL : Tuning
PostgreSQL : TuningPostgreSQL : Tuning
PostgreSQL : Tuning
Enrico Pirozzi
 

Viewers also liked (20)

Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Docker
Docker Docker
Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Introduzione a docker
Introduzione a dockerIntroduzione a docker
Introduzione a docker
 
Container
ContainerContainer
Container
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 
Docker Presentation
Docker PresentationDocker Presentation
Docker Presentation
 
Introduzione al cloud computing e microsoft azure
Introduzione al cloud computing e microsoft azureIntroduzione al cloud computing e microsoft azure
Introduzione al cloud computing e microsoft azure
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtime
 
Ap Camp 2011
Ap Camp 2011Ap Camp 2011
Ap Camp 2011
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)
 
PostgreSQL : Tuning
PostgreSQL : TuningPostgreSQL : Tuning
PostgreSQL : Tuning
 

Similar to Architetture a Microservizi con Docker Container

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
Par-Tec S.p.A.
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
opencityplatform
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
Roberto Messora
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
opencityplatform
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
blexin
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
NaLUG
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Yashi Italia
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
sparkfabrik
 
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
Par-Tec S.p.A.
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
Gerardo Di Iorio
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
Romualdo Gobbo
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
Antonio Di Motta
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
dotnetcode
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
Luca Congiu
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
Par-Tec S.p.A.
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
italianaSoftware
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
Daniele Mondello
 
Service Fabric: la potenza dei micro servizi
Service Fabric:  la potenza dei micro serviziService Fabric:  la potenza dei micro servizi
Service Fabric: la potenza dei micro servizi
Massimo Bonanni
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
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
Par-Tec S.p.A.
 

Similar to Architetture a Microservizi con Docker Container (20)

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
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
 
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
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
Service Fabric: la potenza dei micro servizi
Service Fabric:  la potenza dei micro serviziService Fabric:  la potenza dei micro servizi
Service Fabric: la potenza dei micro servizi
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
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
 

More from Roberto Messora

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Roberto Messora
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integration
Roberto Messora
 
Seminario Big Data
Seminario Big DataSeminario Big Data
Seminario Big Data
Roberto Messora
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
Roberto Messora
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
Roberto Messora
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting target
Roberto Messora
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JS
Roberto Messora
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Roberto Messora
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
Roberto Messora
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
Roberto Messora
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
Roberto Messora
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web Application
Roberto Messora
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
Roberto Messora
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applicationsRoberto Messora
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingRoberto Messora
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
Roberto Messora
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
Roberto Messora
 

More from Roberto Messora (17)

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integration
 
Seminario Big Data
Seminario Big DataSeminario Big Data
Seminario Big Data
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting target
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JS
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web Application
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 

Architetture a Microservizi con Docker Container

  • 1. Architetture a Microservizi con Docker Container Seminario Ordine Ingegneri Lecco Ing. Roberto Messora Lecco, 24/10/2016
  • 2. 2 – @robymes – robymes@gmail.com – roberto.messora@valuelab.it – robymes Contatti www.ugidotnet.org
  • 3. 3 Presentare Docker e i suoi concetti di base, una delle tecnologie con il trend di crescita e adozione più alto Definire quali sono i contesti architetturali in cui Docker si colloca al fine di fornire elementi di valutazione circa la sua eventuale adozione Presentare l’ecosistema di Docker e le tecnologie/prodotti ad esso legati Fornire alcuni elementi legati al ciclo di vita di sviluppo di una soluzione basata su Docker Presentare una soluzione demo basata su Docker Obiettivi
  • 5. 5 Docker –“It works on my machine” –Docker Container e dintorni –Consolidare il deploy: Virtual vs Container –Scalare Docker: Docker Swarm (et al.) –Ciclo di sviluppo di una soluzione Docker Architetture basate sui servizi –Microservices vs SOA Demo Agenda
  • 6.
  • 7.
  • 8. 8 “Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment.” https://www.docker.com/what-docker Cos’è un Container
  • 9. 9 Da Wikipedia –Docker è un progetto open-source che automatizza il deployment di applicazioni all'interno di container software, fornendo un'astrazione addizionale grazie alla virtualizzazione a livello di sistema operativo di Linux –Utilizza le funzionalità di isolamento delle risorse del kernel Linux per consentire a container indipendenti di coesistere sulla stessa istanza di Linux, evitando l'installazione e la manutenzione di una macchina virtuale –Le risorse possono essere isolate, i servizi limitati ed i processi avviati in modo da avere una prospettiva completamente privata del sistema operativo, col loro proprio identificativo, file system ed interfaccia di rete • Namespace del kernel: isolano ciò che l'applicazione può vedere dell'ambiente operativo (l'albero dei processi, la rete, gli ID utente ed i file system montati) • Cgroups del kernel: isolamento delle risorse (CPU, memoria, I/O a blocchi, rete) • Libreria libcontainer: uso delle funzionalità di virtualizzazione del kernel Docker in pillole
  • 10. 10 Docker Container: uno stack di immagini
  • 11. 11 Con Windows Server 2016 Docker è disponibile nativamente anche su Windows I principi di base sono gli stessi di Linux: accesso limitato e controllato alle risorse del kernel Un container Linux NON può essere ospitato su un host Windows e viceversa: i kernel sono differenti, le API utilizzate dal container sono specifiche per i due sistemi operativi (API Windows e API Linux) Un client Docker è in grado di supportare entrambe le API: un solo prodotto per enrambi i sistemi operative I container Windows sono di due tipi – Windows Container: i container condividono il kernel con il sistema operativo host (Windows Server 2016), altamente efficienti, ma adatti per ambienti trusted – Hyper-V Container: ad ogni container è assegnato un kernel virtualizzato e le relative risorse (CPU, memoria, …), meno efficienti, ma isolamento totale Docker for Windows
  • 12. 12 Sviluppato inizialmente come progetto interno in dotCloud, una società che si occupa di PaaS (Platform as a Service) Pubblicato su github come open source nel Marzo del 2013 Nel Marzo del 2014 viene rilasciata la sua principale libreria libcontainer, sviluppata in Go Ad oggi l’adozione di Docker da parte dei maggiori player di PaaS e cloud è praticamente totale: Amazon Web Services, Google Cloud Platform, IBM Bluemix, Microsoft Azure, OpenStack Nova, Vagrant, VMware vSphere, … Fra i maggiori contributori del progetto ci sono: il team di Docker, Cisco, Google, Huawei, IBM, Microsoft, Red Hat Docker, un po’ di storia
  • 13. 13 Consolidare il deploy: Virtual vs Container
  • 17. 17 L’ecosistema Docker è composto da una serie di elementi –Docker Engine –Docker Machine –Docker Compose –Docker Swarm –Docker Hub Docker Container e dintorni
  • 18. 18 Docker Engine e Docker Machine Docker Engine Docker Machine
  • 19. 19 Tempo di andare in produzione: –Scalabilità –Affidabilità –Facilità di deploy –Dev once run everywhere Scalare Docker: Docker Swarm
  • 21. 21 Ciclo di sviluppo con Docker Hub Push Dockerfile Pull Dockerfile Pull Image Pull Image
  • 23. 23 Modello OASIS – Servizio: A mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description Generalmente topologicamente distribuite – Accesso ai servizi è remoto (REST, SOAP, AMQP, ...) Pro – Scalabilità – Disaccoppiamento – Controllo dello sviluppo, testing, deployment – Riscrittura invece che manutenzione Contro – Gestione dei contratti – Accesso remoto Architetture basate sui servizi
  • 24. 24 Contratto – Service-based: contratto gestito dal solo servizio – Consumer-driven: contratto gestito in collborazione fra servizio e consumer – Attenzione al versioning Disponibilità – Capacità di un servizio di essere raggiunto (connettività) Responsività – Capacità di un servizio di rispondere alla chiamata Sicurezza – Approccio Microservices: sicurezza gestita indipendentemente da ogni servizio senza mediazione di un middleware (altrimenti ci sarebbe troppo "traffico" e la sicurezza uscirebbe dal buonded context introducendo troppe dipendenze esterne) – Approccio tradizionale: sicurezza gestita tramite middleware infrastrutturale Transazioni Architetture basate sui servizi: ATTENZIONE Blog Mauro Servienti http://blogs.ugidotnet.org/topics
  • 25. 25 Transazioni tradizionali –ACID (atomicity, consistency, isolation, durability): in un contesto transazionale se una azione fallisce, fallisce l’intera transazione e si esegue un rollback In una architettura distribuita è praticamente impossibile mantenere un contesto transazionale: in genere una singola richiesta di business viene gestita da n servizi Transazioni distribuite –BASE (basic availability, soft state, eventual consistency): workflow, saga Nel caso in cui sia necessario assicurare ACID a livello di business la soluzione è rendere i servizi più "grossi" al fine di includere tutte le operazioni coinvolte Per rafforzare BASE è possibile utilizzare gli eventi –Miglior tracciamento di che cosa sta accadendo nel sistema al costo di una maggiore complessità di gestione della messaggistica Architetture basate sui servizi: Transazioni
  • 26. 26 Limitata tassonomia dei servizi – Servizi Funzionali – Servizi di Infrastruttura • non esposti verso l’esterno • Gestiti come servizi condivisi privati ad uso dei Servizi Funzionali Tassonomia: Microservices
  • 27. 27 Ampia tassonomia dei servizi – Servizi di Business – Servizi di Infrastruttura – Servizi Enterprise – Servizi Applicativi Tassonomia: SOA
  • 28. 28 Granularità Microservices SOA Una sola completa funzionalità di business Dimensione molto piccola Necessità di comunicazione diretta fra servizi Difficoltà di implementazione transazioni tradizionali Una intera funzionalità di business implementata da più servizi Dimensioni variabili fino anche ad un intero sotto Sistema Comunicazione fra servizi tramite middleware (ESB) Possibilità di utilizzo transazioni tradizionali “Start with a small number o larger services first” Sam Newman Building Microservices, O’Really
  • 29. 29 Architetture di riferimento Microservices – Domain Driven Design (DDD) – Bounded Context – Dipendenze ridotte al minimo (infrastruttura) – Service chaining (attenzione a catene troppo lunghe) SOA – Service component sharing – Enterprise services – Dipendenze gestite introducendo altri livelli di servizi – Service orchestration
  • 30. 30 Interoperabilità fra servizi Microservices – REST – Accesso diretto al servizio – Semplificazione dei protocolli e delle implementazioni SOA – REST, AMQP, SOAP, … – Accesso ai servizi tramite middleware (ESB) – Protocol transformation, Message transformation, Contract decoupling
  • 32. 32 Contatti Roberto Messora ESRI & Microsoft Specialist – @ Value Lab Spa Speaker & Collaborator – @ UGIDotNET Recapiti Value Lab Spa Piazza A. Diaz 2, 20123 Milano (+39) 348-5138717 roberto.messora@valuelab.it robymes@gmail.com Value Lab Srl Piazza Diaz 2, 20123 Milano (Italy) T +39.02.7788931 F +39.02.76313384 valuelab@valuelab.it - www.valuelab.it