SlideShare a Scribd company logo
1 of 43
Download to read offline
Arquitecturas de Microservicios 
MADRID · NOV 21-22 · 2014 
Ernesto Hernández Rodríguez 
Arquitecto Java en Medianet Software 
@ehdez73
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014
¿MicroServicios? 
MADRID · NOV 21-22 · 2014
"Microservices is a software architecture design 
pattern, in which complex applications are composed of 
small, independent processes communicating with each 
other using language-agnostic APIs. These services are 
small, highly decoupled and focus on doing a small 
task." 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Evolución arquitectura
MADRID · NOV 21-22 · 2014 
Beneficios 
∘ Servicios pequeños 
∘ Principio de responsabilidad única 
∘ Fácilmente abarcable 
∘ Políglota 
∘ PoC 
∘ Despliegues 
∘ Escalado eficiente
MADRID · NOV 21-22 · 2014
BUT… 
WAIT A 
MOMENT! 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Nuevos desafíos 
∘ ¿Cómo localizo los servicios? 
∘ ¿Qué pasa si alguno falla? 
∘ ¿Cómo los configuro? 
∘ ¿Y las trazas? 
∘ ¿Y los diferentes entornos?
MADRID · NOV 21-22 · 2014 
Necesitamos
MADRID · NOV 21-22 · 2014
http://screenagers.me/wp-content/uploads/2012/01/US-bandwidth.png 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014
EUREKA ARCHAIUS HYSTRIX TURBINE 
MADRID · NOV 21-22 · 2014 
ZUUL BLITZ4J RIBBON 
http://netflix.github.io
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
CorrelationID 
http://ragavj.blogspot.com.es/2013/08/how-to-lookup-error-in-sharepoint-2010.html
MADRID · NOV 21-22 · 2014 
ELK STACK 
Files Logstash ElasticSearch Kibana
Spring Cloud 
https://github.com/spring-cloud 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Eureka Server 
@Configuration 
@EnableAutoConfiguration 
@EnableEurekaServer 
public class Application { 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true) 
.run(args); 
} 
}
MADRID · NOV 21-22 · 2014 
Eureka Server 
@Configuration 
@EnableAutoConfiguration 
@EnableEurekaServer 
public class Application { 
application.yml 
server: 
port: 8761 
eureka: 
instance: 
public static void main(String[] args) { 
hostname: localhost 
client: 
registerWithEureka: false 
fetchRegistry: false 
serviceUrl: 
new SpringApplicationBuilder(Application.class) 
.web(true) 
.run(args); 
} 
} 
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
MADRID · NOV 21-22 · 2014 
Eureka Client 
@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
@EnableEurekaClient 
@RestController 
public class Application { 
@RequestMapping("/") 
public String home() { return "Hello world"; } 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true).run(args); 
} 
}
MADRID · NOV 21-22 · 2014 
Eureka Client 
@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
@EnableEurekaClient 
@RestController 
public class Application { 
@RequestMapping("/") 
public String home() { return "Hello world"; } 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true).run(args); 
} 
} 
application.yml 
eureka: 
client: 
serviceUrl: 
defaultZone: http://localhost:8761/eureka/
MADRID · NOV 21-22 · 2014 
Ribbon 
Transparente vía RestTemplate 
RibbonAutoConfiguration.java 
@Bean 
@ConditionalOnMissingBean(RestTemplate.class) 
public RestTemplate restTemplate(RibbonInterceptor ribbonInterceptor) { 
RestTemplate restTemplate = new RestTemplate(); 
List<ClientHttpRequestInterceptor> list = new ArrayList<>(); 
list.add(ribbonInterceptor); 
restTemplate.setInterceptors(list); 
return restTemplate; 
} 
} 
http://github.com/.../RibbonAutoConfiguration.java
MADRID · NOV 21-22 · 2014 
Hystrix wrapper 
@Component 
public class StoreIntegration { 
@HystrixCommand(fallbackMethod = "defaultStores") 
public Object getStores(Map<String, Object> parameters) { 
//do stuff that might fail 
} 
public Object defaultStores(Map<String, Object> parameters) { 
return /* something useful */; 
} 
}
MADRID · NOV 21-22 · 2014 
Hystrix Config 
@Configuration 
@EnableAutoConfiguration 
@EnableHystrix 
@EnableHystrixDashboard 
@ComponentScan 
public class Application { 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true) 
.run(args); 
} 
}
MADRID · NOV 21-22 · 2014 
Hystrix Dashboard 
http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html
MADRID · NOV 21-22 · 2014 
Zuul Config 
@EnableZuulProxy 
zuul.proxy.mapping: /api 
zuul.proxy.route.users: /users 
/api/users → /users 
Hystrix → Ribbon → Eureka
Spring Cloud Config 
∘ Properties en repositorio Git 
∘ API 
∘ App/Profile 
∘ Encriptado 
∘ @RefreshScope 
https://github.com/spring-cloud/spring-cloud-config 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Spring Cloud Config - Server 
@Configuration 
@EnableAutoConfiguration 
@EnableEurekaClient 
@EnableConfigServer 
public class ConfigServerApplication { 
public static void main(String[] args) { 
SpringApplication.run(ConfigServerApplication.class, args); 
} 
}
MADRID · NOV 21-22 · 2014 
Spring Cloud Config - Server 
@Configuration 
@EnableAutoConfiguration 
@EnableEurekaClient 
@EnableConfigServer 
public class ConfigServerApplication { 
public static void main(String[] args) { 
SpringApplication.run(ConfigServerApplication.class, args); 
} 
} 
bootstrap.yml 
spring: 
application: 
name: configserver 
encrypt: 
keyStore: 
location: classpath:keystore.jks 
password: ${KEYSTORE_PASSWORD} # foobar 
alias: test 
application.yml 
spring: 
cloud: 
config: 
server: 
basedir: target/config 
uri: https://github.com/ehdez73/minionize-the-world-config 
security: 
user: 
password: '{cipher}AQBunH7b87s86E='
MADRID · NOV 21-22 · 2014 
Spring Cloud Config - Client 
@Configuration 
@EnableAutoConfiguration 
@RestController 
public class Application { 
@RequestMapping("/") 
public String home() { return "Hello world"; } 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true) 
.run(args); 
} 
}
MADRID · NOV 21-22 · 2014 
Spring Cloud Config - Client 
@Configuration 
@EnableAutoConfiguration 
@RestController 
public class Application { 
@RequestMapping("/") 
public String home() { return "Hello world"; } 
public static void main(String[] args) { 
new SpringApplicationBuilder(Application.class) 
.web(true) 
.run(args); 
} 
} 
bootstrap.yml 
spring: 
cloud: 
config: 
uri: http://localhost:${config.port:8888}
DevOps 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Dockerfile 
FROM dockerfile/java 
MANTAINER Ernesto Hdez, ehdez73@gmail.com 
ADD target/myapp1.jar /tmp/myapp1.jar 
EXPOSE 8080 
ENTRYPOINT ["java", "-jar", "/tmp/myapp1.jar"] 
$ mvn package 
$ docker build -t ehdez73/myapp1 . 
$ docker run -d -p 8080:8080 --name="m1" ehdez73/myapp1 
$ docker ps 
$ docker stop m1 
$ docker start m1 
https://registry.hub.docker.com/u/dockerfile/java/dockerfile/
http://www.fig.sh/ 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Fig.sh
MADRID · NOV 21-22 · 2014 
fig.yml 
myapp1: 
image: ehdez73/myapp1 
ports: 
- "8880:8880" 
myapp2: 
image: ehdez73/myapp2 
ports: 
- "8881:8881" 
links: 
- db 
db: 
image: postgres 
http://www.fig.sh/yml.html 
$ fig up
MADRID · NOV 21-22 · 2014 
DEMO
MADRID · NOV 21-22 · 2014 
MINIONIZE THE WORLD !!! 
Minions ipsum tulaliloo 
potatoooo pepete jeje baboiii 
poulet tikka masala chasy la 
bodaaa butt. La bodaaa 
aaaaaah tulaliloo wiiiii la 
bodaaa la bodaaa belloo! 
Tulaliloo para tú belloo! Me 
want bananaaa! Para tú 
aaaaaah bananaaaa para tú jiji 
po kass. Potatoooo tulaliloo 
potatoooo chasy me want 
bananaaa! Ti aamoo! para tú. 
https://github.com/ehdez73/minionize-the-world 
The minions
MADRID · NOV 21-22 · 2014 
Muchas gracias 
@ehdez73

More Related Content

What's hot

Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Jérôme Petazzoni
 
Enable Fig to deploy to multiple Docker servers by Willy Kuo
Enable Fig to deploy to multiple Docker servers by Willy KuoEnable Fig to deploy to multiple Docker servers by Willy Kuo
Enable Fig to deploy to multiple Docker servers by Willy KuoDocker, Inc.
 
Docker for PHP Developers - Jetbrains
Docker for PHP Developers - JetbrainsDocker for PHP Developers - Jetbrains
Docker for PHP Developers - JetbrainsChris Tankersley
 
CI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und KubernetesCI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und Kubernetesinovex GmbH
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudMarkus Knauer
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesGraham Dumpleton
 
GDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSGDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSLadislav Prskavec
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS MeetupLINAGORA
 
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd についてKubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd についてLINE Corporation
 
How to swim with a whale
How to swim with a whaleHow to swim with a whale
How to swim with a whaleŁukasz Siudut
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and KamailioGiacomo Vacca
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentCarlos Perez
 
Kubernetes workshop -_the_basics
Kubernetes workshop -_the_basicsKubernetes workshop -_the_basics
Kubernetes workshop -_the_basicsSjuul Janssen
 
Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Fwdays
 
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)LINAGORA
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPChris Tankersley
 
"Wix Serverless from inside", Mykola Borozdin
"Wix Serverless from inside", Mykola Borozdin"Wix Serverless from inside", Mykola Borozdin
"Wix Serverless from inside", Mykola BorozdinFwdays
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityLudovic Piot
 

What's hot (20)

Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Enable Fig to deploy to multiple Docker servers by Willy Kuo
Enable Fig to deploy to multiple Docker servers by Willy KuoEnable Fig to deploy to multiple Docker servers by Willy Kuo
Enable Fig to deploy to multiple Docker servers by Willy Kuo
 
Docker for PHP Developers - Jetbrains
Docker for PHP Developers - JetbrainsDocker for PHP Developers - Jetbrains
Docker for PHP Developers - Jetbrains
 
CI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und KubernetesCI/CD Pipeline mit Gitlab CI und Kubernetes
CI/CD Pipeline mit Gitlab CI und Kubernetes
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the Cloud
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and Kubernetes
 
Docker 1.11
Docker 1.11Docker 1.11
Docker 1.11
 
GDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSGDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWS
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS Meetup
 
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd についてKubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
 
How to swim with a whale
How to swim with a whaleHow to swim with a whale
How to swim with a whale
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and Kamailio
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 
Kubernetes workshop -_the_basics
Kubernetes workshop -_the_basicsKubernetes workshop -_the_basics
Kubernetes workshop -_the_basics
 
Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"
 
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHP
 
"Wix Serverless from inside", Mykola Borozdin
"Wix Serverless from inside", Mykola Borozdin"Wix Serverless from inside", Mykola Borozdin
"Wix Serverless from inside", Mykola Borozdin
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperability
 
Workshop - Golang language
Workshop - Golang languageWorkshop - Golang language
Workshop - Golang language
 

Viewers also liked

Divide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los MicroserviciosDivide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los MicroserviciosThoughtworks
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Gustavo Andres Brey
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaGermán Moltó
 
Docker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker, Inc.
 
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailogjuljo
 
2 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 20092 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 2009Pepe
 
Comparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMANComparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMANOscar Limachi
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILOscar Limachi
 
Microservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareMicroservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareAntonio Gallego
 
xPaaS Services for OpenShift
xPaaS Services for OpenShiftxPaaS Services for OpenShift
xPaaS Services for OpenShiftLibreCon
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioRodolfo Pilas
 
Contenedores o containers
Contenedores o containersContenedores o containers
Contenedores o containersandresgaravito
 

Viewers also liked (20)

Implementando una Arquitectura de Microservicios
Implementando una Arquitectura de MicroserviciosImplementando una Arquitectura de Microservicios
Implementando una Arquitectura de Microservicios
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Divide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los MicroserviciosDivide y Vencerás: introducción a los Microservicios
Divide y Vencerás: introducción a los Microservicios
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su Ecosistema
 
Docker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup Slides
 
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
 
Microservicios, en qué lío me he metido
Microservicios, en qué lío me he metidoMicroservicios, en qué lío me he metido
Microservicios, en qué lío me he metido
 
2 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 20092 Aenor Solo Pruebas 2009
2 Aenor Solo Pruebas 2009
 
Comparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMANComparativa iso 29119 PRESSMAN
Comparativa iso 29119 PRESSMAN
 
Procesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITILProcesos ligeros vs pesados, MSF MOF ITIL
Procesos ligeros vs pesados, MSF MOF ITIL
 
Microservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareMicroservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMware
 
Arquitecturas de microservicios - @cibbva
Arquitecturas de microservicios - @cibbvaArquitecturas de microservicios - @cibbva
Arquitecturas de microservicios - @cibbva
 
xPaaS Services for OpenShift
xPaaS Services for OpenShiftxPaaS Services for OpenShift
xPaaS Services for OpenShift
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novio
 
Contenedores o containers
Contenedores o containersContenedores o containers
Contenedores o containers
 

Similar to Microservices Architectures Madrid Nov 21-22 2014

ILM - Pipeline in the cloud
ILM - Pipeline in the cloudILM - Pipeline in the cloud
ILM - Pipeline in the cloudAaron Carey
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDocker, Inc.
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingPiotr Perzyna
 
Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Maura Teal
 
Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Adrien Blind
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework FoundationsChuck Reeves
 
Openshift operator insight
Openshift operator insightOpenshift operator insight
Openshift operator insightRyan ZhangCheng
 
Spark day 2017 - Spark on Kubernetes
Spark day 2017 - Spark on KubernetesSpark day 2017 - Spark on Kubernetes
Spark day 2017 - Spark on KubernetesYousun Jeong
 
Containers as a Service with Docker
Containers as a Service with DockerContainers as a Service with Docker
Containers as a Service with DockerDocker, Inc.
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Patrick Chanezon
 
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | EdurekaDocker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | EdurekaEdureka!
 
JavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureJavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureIgalia
 
RESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerRESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerBertrand Delacretaz
 
Cloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesCloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesQAware GmbH
 
Making Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaMaking Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaGregor Heine
 
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformSunnyvale
 

Similar to Microservices Architectures Madrid Nov 21-22 2014 (20)

Arquitecturas de microservicios - Medianet Software
Arquitecturas de microservicios   -  Medianet SoftwareArquitecturas de microservicios   -  Medianet Software
Arquitecturas de microservicios - Medianet Software
 
From iOS to Android
From iOS to AndroidFrom iOS to Android
From iOS to Android
 
ILM - Pipeline in the cloud
ILM - Pipeline in the cloudILM - Pipeline in the cloud
ILM - Pipeline in the cloud
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless World
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals Training
 
Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019Dev with Docker WCPHX 2019
Dev with Docker WCPHX 2019
 
Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework Foundations
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Openshift operator insight
Openshift operator insightOpenshift operator insight
Openshift operator insight
 
Spark day 2017 - Spark on Kubernetes
Spark day 2017 - Spark on KubernetesSpark day 2017 - Spark on Kubernetes
Spark day 2017 - Spark on Kubernetes
 
Containers as a Service with Docker
Containers as a Service with DockerContainers as a Service with Docker
Containers as a Service with Docker
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | EdurekaDocker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
Docker Swarm For High Availability | Docker Tutorial | DevOps Tutorial | Edureka
 
JavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureJavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and Future
 
RESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerRESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with Docker
 
Cloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesCloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit Kubernetes
 
Making Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaMaking Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with Nova
 
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud Platform
 

Recently uploaded

Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

Microservices Architectures Madrid Nov 21-22 2014

  • 1. Arquitecturas de Microservicios MADRID · NOV 21-22 · 2014 Ernesto Hernández Rodríguez Arquitecto Java en Medianet Software @ehdez73
  • 2. MADRID · NOV 21-22 · 2014
  • 3. MADRID · NOV 21-22 · 2014
  • 4. ¿MicroServicios? MADRID · NOV 21-22 · 2014
  • 5. "Microservices is a software architecture design pattern, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task." MADRID · NOV 21-22 · 2014
  • 6. MADRID · NOV 21-22 · 2014 Evolución arquitectura
  • 7. MADRID · NOV 21-22 · 2014 Beneficios ∘ Servicios pequeños ∘ Principio de responsabilidad única ∘ Fácilmente abarcable ∘ Políglota ∘ PoC ∘ Despliegues ∘ Escalado eficiente
  • 8. MADRID · NOV 21-22 · 2014
  • 9. BUT… WAIT A MOMENT! MADRID · NOV 21-22 · 2014
  • 10. MADRID · NOV 21-22 · 2014 Nuevos desafíos ∘ ¿Cómo localizo los servicios? ∘ ¿Qué pasa si alguno falla? ∘ ¿Cómo los configuro? ∘ ¿Y las trazas? ∘ ¿Y los diferentes entornos?
  • 11. MADRID · NOV 21-22 · 2014 Necesitamos
  • 12. MADRID · NOV 21-22 · 2014
  • 14. MADRID · NOV 21-22 · 2014
  • 15. EUREKA ARCHAIUS HYSTRIX TURBINE MADRID · NOV 21-22 · 2014 ZUUL BLITZ4J RIBBON http://netflix.github.io
  • 16. MADRID · NOV 21-22 · 2014
  • 17. MADRID · NOV 21-22 · 2014 CorrelationID http://ragavj.blogspot.com.es/2013/08/how-to-lookup-error-in-sharepoint-2010.html
  • 18. MADRID · NOV 21-22 · 2014 ELK STACK Files Logstash ElasticSearch Kibana
  • 19. Spring Cloud https://github.com/spring-cloud MADRID · NOV 21-22 · 2014
  • 20. MADRID · NOV 21-22 · 2014 Eureka Server @Configuration @EnableAutoConfiguration @EnableEurekaServer public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args); } }
  • 21. MADRID · NOV 21-22 · 2014 Eureka Server @Configuration @EnableAutoConfiguration @EnableEurekaServer public class Application { application.yml server: port: 8761 eureka: instance: public static void main(String[] args) { hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: new SpringApplicationBuilder(Application.class) .web(true) .run(args); } } defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 22. MADRID · NOV 21-22 · 2014 Eureka Client @Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @RestController public class Application { @RequestMapping("/") public String home() { return "Hello world"; } public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true).run(args); } }
  • 23. MADRID · NOV 21-22 · 2014 Eureka Client @Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @RestController public class Application { @RequestMapping("/") public String home() { return "Hello world"; } public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true).run(args); } } application.yml eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
  • 24. MADRID · NOV 21-22 · 2014 Ribbon Transparente vía RestTemplate RibbonAutoConfiguration.java @Bean @ConditionalOnMissingBean(RestTemplate.class) public RestTemplate restTemplate(RibbonInterceptor ribbonInterceptor) { RestTemplate restTemplate = new RestTemplate(); List<ClientHttpRequestInterceptor> list = new ArrayList<>(); list.add(ribbonInterceptor); restTemplate.setInterceptors(list); return restTemplate; } } http://github.com/.../RibbonAutoConfiguration.java
  • 25. MADRID · NOV 21-22 · 2014 Hystrix wrapper @Component public class StoreIntegration { @HystrixCommand(fallbackMethod = "defaultStores") public Object getStores(Map<String, Object> parameters) { //do stuff that might fail } public Object defaultStores(Map<String, Object> parameters) { return /* something useful */; } }
  • 26. MADRID · NOV 21-22 · 2014 Hystrix Config @Configuration @EnableAutoConfiguration @EnableHystrix @EnableHystrixDashboard @ComponentScan public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args); } }
  • 27. MADRID · NOV 21-22 · 2014 Hystrix Dashboard http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html
  • 28. MADRID · NOV 21-22 · 2014 Zuul Config @EnableZuulProxy zuul.proxy.mapping: /api zuul.proxy.route.users: /users /api/users → /users Hystrix → Ribbon → Eureka
  • 29. Spring Cloud Config ∘ Properties en repositorio Git ∘ API ∘ App/Profile ∘ Encriptado ∘ @RefreshScope https://github.com/spring-cloud/spring-cloud-config MADRID · NOV 21-22 · 2014
  • 30. MADRID · NOV 21-22 · 2014 Spring Cloud Config - Server @Configuration @EnableAutoConfiguration @EnableEurekaClient @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
  • 31. MADRID · NOV 21-22 · 2014 Spring Cloud Config - Server @Configuration @EnableAutoConfiguration @EnableEurekaClient @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } } bootstrap.yml spring: application: name: configserver encrypt: keyStore: location: classpath:keystore.jks password: ${KEYSTORE_PASSWORD} # foobar alias: test application.yml spring: cloud: config: server: basedir: target/config uri: https://github.com/ehdez73/minionize-the-world-config security: user: password: '{cipher}AQBunH7b87s86E='
  • 32. MADRID · NOV 21-22 · 2014 Spring Cloud Config - Client @Configuration @EnableAutoConfiguration @RestController public class Application { @RequestMapping("/") public String home() { return "Hello world"; } public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args); } }
  • 33. MADRID · NOV 21-22 · 2014 Spring Cloud Config - Client @Configuration @EnableAutoConfiguration @RestController public class Application { @RequestMapping("/") public String home() { return "Hello world"; } public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args); } } bootstrap.yml spring: cloud: config: uri: http://localhost:${config.port:8888}
  • 34. DevOps MADRID · NOV 21-22 · 2014
  • 35. MADRID · NOV 21-22 · 2014
  • 36. MADRID · NOV 21-22 · 2014
  • 37. MADRID · NOV 21-22 · 2014 Dockerfile FROM dockerfile/java MANTAINER Ernesto Hdez, ehdez73@gmail.com ADD target/myapp1.jar /tmp/myapp1.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/tmp/myapp1.jar"] $ mvn package $ docker build -t ehdez73/myapp1 . $ docker run -d -p 8080:8080 --name="m1" ehdez73/myapp1 $ docker ps $ docker stop m1 $ docker start m1 https://registry.hub.docker.com/u/dockerfile/java/dockerfile/
  • 38. http://www.fig.sh/ MADRID · NOV 21-22 · 2014
  • 39. MADRID · NOV 21-22 · 2014 Fig.sh
  • 40. MADRID · NOV 21-22 · 2014 fig.yml myapp1: image: ehdez73/myapp1 ports: - "8880:8880" myapp2: image: ehdez73/myapp2 ports: - "8881:8881" links: - db db: image: postgres http://www.fig.sh/yml.html $ fig up
  • 41. MADRID · NOV 21-22 · 2014 DEMO
  • 42. MADRID · NOV 21-22 · 2014 MINIONIZE THE WORLD !!! Minions ipsum tulaliloo potatoooo pepete jeje baboiii poulet tikka masala chasy la bodaaa butt. La bodaaa aaaaaah tulaliloo wiiiii la bodaaa la bodaaa belloo! Tulaliloo para tú belloo! Me want bananaaa! Para tú aaaaaah bananaaaa para tú jiji po kass. Potatoooo tulaliloo potatoooo chasy me want bananaaa! Ti aamoo! para tú. https://github.com/ehdez73/minionize-the-world The minions
  • 43. MADRID · NOV 21-22 · 2014 Muchas gracias @ehdez73