SlideShare une entreprise Scribd logo
1  sur  43
#DOH18
2
DevOps in a Microservices World
Antonio Liccardi
antonio.liccardi@blexin.com
@turibbio
IT & Mobile Specialist in
#DOH18 3
Organizer & sponsors
GetLatestVersion.it
#DOH18 4
Cosa sono i microservizi?
Microservices are small, autonomous services
that work together
#DOH18 5
I principi alla base dei microservizi
Orientati al
business
domain
API
Technology
agnostic
Small (1…N)
Indipendently
releasable
#DOH18 6
I principi alla base dei microservizi
• Piccoli e con un solo compito
• Ogni microservizi si deve focalizzare su una singola cosa. La coesione deve
essere fondamentale!
• Gather together those things that change for the same reason, and
separate those things that change for different reasons (uncle bob)
• Avere dei contesti (boundaries) espliciti.
• Più piccolo è il servizio, maggiori sono i benefici ma anche i possibili
problemi
• Collaborano fra loro
• Espongono APIs (ma facendo attenzione, maggiore è l’esposizione, più sono
le interconnessioni)
#DOH18 7
I principi alla base dei microservizi
• Autonomi
• Tutte le comunicazioni avvengono tramite network (indipendenza)
• Rilasciabili autonomamente
• Devono poter essere rilasciati senza richiedere intervento da parte dei
consumer
#DOH18 8
Benefici dei microservizi
• Tecnologie eterogenee
• Basati su servizi, possono utilizzare diverse tecnologie dietro le quinte
• Benefici dal punto di vista dell’architettura, delle performance,
organizzazione aziendale
• Adozione facile di nuove tecnologie
#DOH18 9
Benefici dei microservizi
• Resilienza
• Concetto di bulkhead applicato ai service boundaries
• Scalabilità
• Possibilità di essere scalabili solo sulle funzionalità che richiedono
scalabilità
• Facilità di deploy
• Ogni microservizio deve essere rilasciato in maniera indipendente
• Gestione del rollback semplice
#DOH18 10
Benefici dei microservizi
• Organizzazione aziendale
• L’uso dei microservizi aiuta l’organizzazione aziendale minimizzando il
numero di persone concentrato su una singola codebase
• Composabilità
• Riutilizzabilità dei componenti
• Una buona scelta per i sistemi legacy
#DOH18 11
Microservices are
not a silver bullet!
#DOH18 12
Come modellare un microservizio?
• Domain Driven Design by Eric
Evans (2003)
• Questo libro ci ha aiutato a
capire l’importanza di saper
rappresentare bene il mondo
nel nostro codice
#DOH18 13
Come modellare un microservizio?
• Hexagonal Architecture
• Niente più layer e tante
«porte» aperte!
#DOH18 14
Come modellare un microservizio?
• Loose Coupling
• Quando i servizi sono loosely coupled, una modifica ad un servizio non
richiede la modifica agli altri.
• High Cohesion
• Boundaries con accoppiamento dei domini comuni
#DOH18 15
Bounded Context
#DOH18 16
Bounded Context
• Ogni dominio è costituito da più bounded context
• In ogni bounded context c’è un modello che condivide determinate
informazioni verso l’esterno
• Ogni bounded context espone una specifica interfaccia con i modelli
condivisi
• Può capitare di avere modelli condivisi con egual nome ma con
informazioni diverse e usati in diversi contesti (es. Customer)
• Questo evita il tight coupling
• Aiuta a creare i moduli e servizi
#DOH18 17
Context Mapping
#DOH18 18
#DOH18 19
Monolite vs Microservizi
#DOH18 20
#DOH18 21
#DOH18 22
#DOH18 23
24
DevOps & Microservices
#DOH18 25
Cosa sono i containers?
• E’ un approccio nello sviluppo software in cui una applicazione o
servizio, le sue dipendenze e la sua configurazione viene
«impacchettata» come una container image
• L’app può essere testata in maniera indipendente
• L’immagine viene deployata come una istanza sul container host
#DOH18 26
Vantaggi
• Deploy in diversi ambienti con la garanzia di avere lo stesso
ambiente
• Isolamento dei container
• Eseguibili su piattaforme differenti (Linux / Windows)
• Più leggeri delle VM
• Scalabili
• Facili da deployare
#DOH18 27
Meet the «Hypervisor»
#DOH18 28
Docker
#DOH18 29
Docker: terminologia
• Container image
• applicazione contenente tutte le dipendenze, configurazioni e runtime
• una immagine può ereditare da altre
• Container
• istanza di un container, può essere eseguita più volte contemporaneamente
anche con parametri di inizializzazione differenti
• Tag
• una etichetta che può applicare ad una immagine
#DOH18 30
Docker: terminologia
• DockerFile
• configurazioni di build dell’immagine
• Build
• creazione dell’immagine container tramite il dockerfile
• Repository
• una collezione di immagini docker legate fra loro, generalmente associate
ad un tag
#DOH18 31
Docker: terminologia
• Registry
• un servizio che prevede l’accesso a dei repository di immagini (DockerHub,
Docker Trusted Registry o Azure Container Registry)
• Compose
• configurazione contenente il deploy di più immagini docker legate fra loro
• Cluster
• una collezione di Docker Host visti come unico (Swarm, DC/OS, Kubernetes)
• Orchestrator
• gestisce cluster e le istanze delle immagini presenti al proprio interno che
ne prevede l’esecuzione, la distribuzione e scalabilità
#DOH18 32
#DOH18 33
Meet Kubernetes
• Nasce in Google, ora gestito da Cloud Native Computing Foundation
• Installazione
• Diverse distribuzioni (cloud, on-premise)
• Azure Kubernetes Service
• Minikube (dev)
• Infrastructure as code
#DOH18 34
Kubernetes architecture
#DOH18 35
Workflow con Kubernetes
36
Deploy containers on AKS
#DOH18 37
Testare containers
• Unit testing
• Component testing
• Integration testing
• End-to-End testing
• Contract Testing
• Production Testing
#DOH18 38
Contract Testing
• Consumer driven contract testing
#DOH18 39
Production testing
#DOH18 40
Monitorare Containers
• Application insight
• Marathon
• cAdvisor
• Prometheus
• Sysdig
• Your custom solution
#DOH18 41
Application Insight
#DOH18 42
Da dove comincio?
• eShopOnContainers
• Azure DevOps labs & documentation
#DOH18
THANK YOU!

Contenu connexe

Similaire à DevOps in a Microservices World

Da Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritornoDa Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritorno
Matteo Pagani
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
Il Cloud Computing
Il Cloud ComputingIl Cloud Computing
Il Cloud Computing
zambe92
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 

Similaire à DevOps in a Microservices World (20)

[AxonIQ Italia Community] Architetture distribuite a eventi: sono adatte al m...
[AxonIQ Italia Community] Architetture distribuite a eventi: sono adatte al m...[AxonIQ Italia Community] Architetture distribuite a eventi: sono adatte al m...
[AxonIQ Italia Community] Architetture distribuite a eventi: sono adatte al m...
 
20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp
 
Blockchain e IoT: il binomio della trasformazione digitale
Blockchain e IoT: il binomio della trasformazione digitaleBlockchain e IoT: il binomio della trasformazione digitale
Blockchain e IoT: il binomio della trasformazione digitale
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Corba
CorbaCorba
Corba
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
Da Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritornoDa Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritorno
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
Kubernetes e bello, sicuro è meglio!
Kubernetes e bello, sicuro è meglio!Kubernetes e bello, sicuro è meglio!
Kubernetes e bello, sicuro è meglio!
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
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
 
Il Cloud Computing
Il Cloud ComputingIl Cloud Computing
Il Cloud Computing
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web Services
 
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor Model
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT Pro
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
 
Super-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costsSuper-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costs
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 

Plus de Antonio Liccardi

Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013
Antonio Liccardi
 

Plus de Antonio Liccardi (15)

DevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CDDevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CD
 
Delivering code with git hub actions
Delivering code with git hub actionsDelivering code with git hub actions
Delivering code with git hub actions
 
Cloud native CI/CD with GitOps
Cloud native CI/CD with GitOpsCloud native CI/CD with GitOps
Cloud native CI/CD with GitOps
 
GitOps and Best Practices for Cloud Native CI/CD
GitOps and Best Practices for Cloud Native CI/CDGitOps and Best Practices for Cloud Native CI/CD
GitOps and Best Practices for Cloud Native CI/CD
 
DevDay Salerno - Mobile DevOps con Xamarin
DevDay Salerno - Mobile DevOps con XamarinDevDay Salerno - Mobile DevOps con Xamarin
DevDay Salerno - Mobile DevOps con Xamarin
 
DevDay Salerno - Introduzione a Xamarin
DevDay Salerno - Introduzione a XamarinDevDay Salerno - Introduzione a Xamarin
DevDay Salerno - Introduzione a Xamarin
 
SonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo EmiliSonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo Emili
 
Continuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobileContinuous integration per sviluppatori mobile
Continuous integration per sviluppatori mobile
 
Introduzione a docker
Introduzione a dockerIntroduzione a docker
Introduzione a docker
 
Continuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobileContinuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobile
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Vs04 - DevOps: Continuous Deployment con Windows Azure
Vs04 - DevOps: Continuous Deployment con Windows AzureVs04 - DevOps: Continuous Deployment con Windows Azure
Vs04 - DevOps: Continuous Deployment con Windows Azure
 
Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013
 
Le novita' su diagnostica e qualita' del codice con visual studio 2013
Le novita' su diagnostica e qualita' del codice con visual studio 2013Le novita' su diagnostica e qualita' del codice con visual studio 2013
Le novita' su diagnostica e qualita' del codice con visual studio 2013
 
Le novità di team foundation server 2012
Le novità di team foundation server 2012Le novità di team foundation server 2012
Le novità di team foundation server 2012
 

DevOps in a Microservices World

  • 2. 2 DevOps in a Microservices World Antonio Liccardi antonio.liccardi@blexin.com @turibbio IT & Mobile Specialist in
  • 3. #DOH18 3 Organizer & sponsors GetLatestVersion.it
  • 4. #DOH18 4 Cosa sono i microservizi? Microservices are small, autonomous services that work together
  • 5. #DOH18 5 I principi alla base dei microservizi Orientati al business domain API Technology agnostic Small (1…N) Indipendently releasable
  • 6. #DOH18 6 I principi alla base dei microservizi • Piccoli e con un solo compito • Ogni microservizi si deve focalizzare su una singola cosa. La coesione deve essere fondamentale! • Gather together those things that change for the same reason, and separate those things that change for different reasons (uncle bob) • Avere dei contesti (boundaries) espliciti. • Più piccolo è il servizio, maggiori sono i benefici ma anche i possibili problemi • Collaborano fra loro • Espongono APIs (ma facendo attenzione, maggiore è l’esposizione, più sono le interconnessioni)
  • 7. #DOH18 7 I principi alla base dei microservizi • Autonomi • Tutte le comunicazioni avvengono tramite network (indipendenza) • Rilasciabili autonomamente • Devono poter essere rilasciati senza richiedere intervento da parte dei consumer
  • 8. #DOH18 8 Benefici dei microservizi • Tecnologie eterogenee • Basati su servizi, possono utilizzare diverse tecnologie dietro le quinte • Benefici dal punto di vista dell’architettura, delle performance, organizzazione aziendale • Adozione facile di nuove tecnologie
  • 9. #DOH18 9 Benefici dei microservizi • Resilienza • Concetto di bulkhead applicato ai service boundaries • Scalabilità • Possibilità di essere scalabili solo sulle funzionalità che richiedono scalabilità • Facilità di deploy • Ogni microservizio deve essere rilasciato in maniera indipendente • Gestione del rollback semplice
  • 10. #DOH18 10 Benefici dei microservizi • Organizzazione aziendale • L’uso dei microservizi aiuta l’organizzazione aziendale minimizzando il numero di persone concentrato su una singola codebase • Composabilità • Riutilizzabilità dei componenti • Una buona scelta per i sistemi legacy
  • 12. #DOH18 12 Come modellare un microservizio? • Domain Driven Design by Eric Evans (2003) • Questo libro ci ha aiutato a capire l’importanza di saper rappresentare bene il mondo nel nostro codice
  • 13. #DOH18 13 Come modellare un microservizio? • Hexagonal Architecture • Niente più layer e tante «porte» aperte!
  • 14. #DOH18 14 Come modellare un microservizio? • Loose Coupling • Quando i servizi sono loosely coupled, una modifica ad un servizio non richiede la modifica agli altri. • High Cohesion • Boundaries con accoppiamento dei domini comuni
  • 16. #DOH18 16 Bounded Context • Ogni dominio è costituito da più bounded context • In ogni bounded context c’è un modello che condivide determinate informazioni verso l’esterno • Ogni bounded context espone una specifica interfaccia con i modelli condivisi • Può capitare di avere modelli condivisi con egual nome ma con informazioni diverse e usati in diversi contesti (es. Customer) • Questo evita il tight coupling • Aiuta a creare i moduli e servizi
  • 19. #DOH18 19 Monolite vs Microservizi
  • 25. #DOH18 25 Cosa sono i containers? • E’ un approccio nello sviluppo software in cui una applicazione o servizio, le sue dipendenze e la sua configurazione viene «impacchettata» come una container image • L’app può essere testata in maniera indipendente • L’immagine viene deployata come una istanza sul container host
  • 26. #DOH18 26 Vantaggi • Deploy in diversi ambienti con la garanzia di avere lo stesso ambiente • Isolamento dei container • Eseguibili su piattaforme differenti (Linux / Windows) • Più leggeri delle VM • Scalabili • Facili da deployare
  • 27. #DOH18 27 Meet the «Hypervisor»
  • 29. #DOH18 29 Docker: terminologia • Container image • applicazione contenente tutte le dipendenze, configurazioni e runtime • una immagine può ereditare da altre • Container • istanza di un container, può essere eseguita più volte contemporaneamente anche con parametri di inizializzazione differenti • Tag • una etichetta che può applicare ad una immagine
  • 30. #DOH18 30 Docker: terminologia • DockerFile • configurazioni di build dell’immagine • Build • creazione dell’immagine container tramite il dockerfile • Repository • una collezione di immagini docker legate fra loro, generalmente associate ad un tag
  • 31. #DOH18 31 Docker: terminologia • Registry • un servizio che prevede l’accesso a dei repository di immagini (DockerHub, Docker Trusted Registry o Azure Container Registry) • Compose • configurazione contenente il deploy di più immagini docker legate fra loro • Cluster • una collezione di Docker Host visti come unico (Swarm, DC/OS, Kubernetes) • Orchestrator • gestisce cluster e le istanze delle immagini presenti al proprio interno che ne prevede l’esecuzione, la distribuzione e scalabilità
  • 33. #DOH18 33 Meet Kubernetes • Nasce in Google, ora gestito da Cloud Native Computing Foundation • Installazione • Diverse distribuzioni (cloud, on-premise) • Azure Kubernetes Service • Minikube (dev) • Infrastructure as code
  • 37. #DOH18 37 Testare containers • Unit testing • Component testing • Integration testing • End-to-End testing • Contract Testing • Production Testing
  • 38. #DOH18 38 Contract Testing • Consumer driven contract testing
  • 40. #DOH18 40 Monitorare Containers • Application insight • Marathon • cAdvisor • Prometheus • Sysdig • Your custom solution
  • 42. #DOH18 42 Da dove comincio? • eShopOnContainers • Azure DevOps labs & documentation