SlideShare una empresa de Scribd logo
1 de 57
ARQUITECTURA
DE
MICROSERVICIOS
El mapa completo
15/Mar/18
Sobre nosotros
■ Julio Palma
■ Twitter: @restalion
■ GitHub: github.com/restalion
■ Technology Architect en Tecnilógica
■ Juanma Cintas
■ Twitter: @juanmacintas
■ GitHub: github.com/juanmacintas
■ Senior Analyst en Tecnilógica
Objetivos de la sesión
 Tener una solución basada en microservicios en producción y poder dormir todas
las noches.
 Entender las diferencias entre una arquitectura monolítica y otra basada en
microservicios.
 Crear un mapa de todos los servicios que necesitaremos de la outer architecture
que nos permita “montar” una solución completa.
 Identificar algunas alternativas para cubrir cada una de las áreas de la outer
architecture.
Objetivos de la sesión
 Tener una solución basada en microservicios en producción y poder dormir todas
las noches.
 Entender las diferencias entre una arquitectura monolítica y otra basada en
microservicios.
 Crear un mapa de todos los servicios que necesitaremos de la outer architecture
que nos permita “montar” una solución completa.
 Identificar algunas alternativas para cubrir cada una de las áreas de la outer
architecture.
¿Qué es la Outer
Architecture?
Monolito
Monolito
Monolito
Monolito
Un único .war
representa una
“Solución”
Monolito
Monolito
EIS
Servicios
DAO
Monolito
Monolito
EIS
Presentación
Métricas
Gestión de erroresServicios
DAO
Monolito
Monolito
PresentaciónConfiguración
Logs
Auditoría
Inversión del
Control
EIS
Seguridad
Métricas
Gestión de erroresServicios
DAO
Monolito
Monolito
Presentación
Inversión del
Control
EIS
DAO DAO
EIS EIS
Configuración
Logs
Auditoría
Seguridad
Métricas
Gestión de errores
Servicio
DAO
Monolito
Monolito
Presentación
Inversión del
Control
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
Logs
Auditoría
Seguridad
Monolito
1. Una única aplicación para implementar toda la funcionalidad.
2. Un ecosistema común para todas las piezas de la aplicación.
3. Reutilización basada en los componentes (importación).
4. Sencillez de despliegue.
5. Una única versión de los componentes.
6. Aplicaciones complejas cuya responsabilidad es implementar todo el negocio.
7. Fragilidad: un error en cualquier pieza tumba todo el monolito.
Métricas
Gestión de errores
Servicio
DAO
Microservicios
Monolito
Presentación
Inversión del
Control
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
Logs
Auditoría
Seguridad
Métricas
Gestión de errores
Servicio
DAO
Microservicios
Presentación
Inversión del
Control
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
Logs
Auditoría
Seguridad
Métricas
Gestión de errores
Servicio
DAO
Microservicios
Presentación
Inversión del
Control
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
Logs
Auditoría
Seguridad
*HTTP
Métricas
Resistencia
a errores
Servicio
DAO
Microservicios
Presentación
Localización de
servicios
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
centralizada
Logs distribuidos
Auditoría
Seguridad
(MMI y M2M)
Métricas
Resistencia
a errores
Servicio
DAO
Microservicios
Presentación
Localización de
servicios
EIS
DAO DAO
EIS EIS
Servicio Servicio Servicio
Configuración
centralizada
Logs distribuidos
Auditoría
Seguridad
(H2M y M2M)
Composición
de la solución
Gestión de
la carga
Documentación de
interfaces
Microservicios
1. Muchas aplicaciones que implementan la funcionalidad completa.
2. Ecosistema políglota dentro de una misma solución.
3. Reutilización basada en uso (llamada a interfaces).
4. Despliegue sencillo de cada aplicación, complejo en la solución completa.
5. Varias versiones de la misma aplicación pueden convivir en ejecución.
6. Cada aplicación tiene la responsabilidad (y exclusiva) en un área concreta de la
solución.
7. Se pueden desplegar de forma independiente.
8. Se incrementa la latencia y el tráfico de red.
Objetivos de la sesión
 Tener una solución basada en microservicios en producción y poder dormir todas
las noches.
 Entender las diferencias entre una arquitectura monolítica y otra basada en
microservicios.
 Crear un mapa de todos los servicios que necesitaremos de la outer architecture
que nos permita “montar” una solución completa.
 Identificar algunas alternativas para cubrir cada una de las áreas de la outer
architecture.
Estructura de los microservicios
1. BBDD H2 en memoria
2. Acceso con Spring Data
3. Servicios Spring
4. REST Interface
5. Project Lombok
6. Swagger
Servicios de ejemplo
Outer Architecture
Métricas
Resistencia
a errores
Localización de
servicios
Configuración
centralizada
Logs distribuidos
Auditoría
Seguridad
(H2M y M2M)
Composición
de la solución
Gestión de
la carga
Documentación de
interfaces
Configuración
Outer Architecture - Monolito
■ En una aplicación monolítica la configuración de la aplicación se puede realizar
mediante múltiples formas:
– Fichero de propiedades
– Parámetros de configuración en la ejecución
■ La configuración no suele ser un gran problema podemos tener varios tipos de
ficheros, perfiles… que se seleccionan en el momento de “levantar” la aplicación.
■ Tenemos un número limitado de instancias (desarrollo, preproducción,
producción,…) cada una con su configuración específica.
■ Normalmente es el equipo de operaciones el encargado de configurar y mantener
la configuración de los distintos entornos.
Outer Architecture - Microservicios
Configuración
centralizada
■ En un esquema de microservicios la operación se complica:
– Múltiples instancias de la misma aplicación con el mismo perfil, o distinto.
– Versiones distintas del mismo servicio en el mismo entorno.
■ El mantenimiento de las aplicaciones en ejecución se puede llevar desde una
plataforma (sin intervención humana directa).
■ Rolling updates, de los servicios
Outer Architecture - Microservicios
Configuración
centralizada
■ Ejemplo: Config server
■ Distintos tipos de clientes dependiendo de la naturaleza de la aplicación.
Seguridad
Outer Architecture - Monolito
■ El control de acceso a la aplicación se realiza una vez.
– Si tienes acceso mientras dure tu sesión podrás ejecutar todos los servicios
que te permita tu perfil.
■ El acceso al frontal y a los servicios está unificado.
Outer Architecture - Microservicios
Seguridad
(H2M y M2M)
■ Podemos tener esquemas de seguridad independientes por cada servicio o
frontal.
■ Hay que diferenciar entre la seguridad para el acceso a la aplicación por parte
de humanos y las llamadas entre máquinas.
■ Nos permite granularidad a la hora de definir quién tiene acceso a qué servicio
o funcionalidad.
■ Podemos establecer criterios como cuotas de uso.
■ Permite monetizar el consumo de servicios.
Outer Architecture - Microservicios
Seguridad
(H2M y M2M)
IAM
Presentación
Authorization Server
µServices
1
2
3
4
5
6 78
9 10
Acceso a la aplicación de presentación (SAML)
1. El usuario accede a la aplicación de presentación.
2. Se comprueba si está presente el token SAML. Si no redirigimos
al IAM.
3. El IAM muestra la pantalla de login.
4. El usuario introduce sus credenciales.
5. Si son válidas, el IAM genera el token SAML y redirige a la
aplicación de presentación.
Acceso a la aplicación de backend (OAuth2)
6. Se solicita el token al authorization server con las credenciales
del consumidor.
7. Si son válidas genera un token y lo devuelve.
8. Se realiza la llamada al servicio.
9. El resource server captura el token y comprueba contra el
authorization server que sea correcto.
10. Si lo es se realiza la llamada al servicio.
Resource
Server
Outer Architecture - Microservicios
Seguridad
(H2M y M2M)
■ Ejemplo: CAS + SAML para la parte frontal
■ Ejemplo: Okta + SAML para la parte frontal
■ Ejemplo: Oauth2 para la M2M.
■ Ejemplo: 3Scale para el API Management.
Logs
Outer Architecture - Monolito
■ Los logs se escriben en ficheros directamente desde la aplicación.
■ Utilizamos distintos niveles de log dependiendo del entorno (para no penalizar los
entornos productivos).
■ Se pueden consultar los ficheros físicos en el servidor.
■ Utilizamos herramientas como PERL para facilitar el trabajo de análisis de los
ficheros de log.
Outer Architecture - Microservicios
Logs
distribuidos
■ Las instancias de los microservicios son desechables, cuando dejan de tener
utilidad se destruyen.
■ Los ficheros físicos pueden dejar de existir cuando se destruyen los servicios.
■ Incluso en el mejor de los casos podríamos tener muchos ficheros distintos en
distintas localizaciones.
■ El planteamiento en estos casos es la creación de un servicio de logs que los
guarda de forma unificada en una BBDD que nos permite una consulta sencilla
de los mismos.
■ También el uso de herramientas que nos permite trazar la ejecución completa
de la solución por las distintas aplicaciones.
Outer Architecture - Microservicios
Logs
distribuidos
■ Ejemplo: Servcio custom + ElasticSearch + Kibana
■ Ejemplo: Sleuth + Zipkin + ElasticSearch + Kibana
Gestión de errores
Outer Architecture - Monolito
■ Desarrollamos nuestro código para responder correctamente ante los errores.
■ Cuando se produce una excepción la tratamos si es posible de forma que la
aplicación siga funcionando.
■ Si se produce un error catastrófico toda la solución deja de funcionar.
Outer Architecture - Microservicios
Resistencia
a errores
■ Cuando un microservicio falla de forma catastrófica se cae pero su rol puede
ser cubierto por otra instancia del mismo.
■ Además de los errores propios de la aplicación tenemos que ser capaces de
responder ante los errores de los servicios que consumimos.
– Tenemos que ser capaces de responder ante el caso de que un servicio al
que llamamos no responda, o devuelva un error.
■ Definimos mecanismos que nos permiten responder ante este tipo de errores.
Outer Architecture - Microservicios
Resistencia
a errores
■ Ejemplo: Hystrix
Inversión del Control
Outer Architecture - Monolito
■ Mecanismo para localizar los servicios a los que llamamos.
■ Evitamos el mecanismo “clásico” de instanciar los servicios para poder utilizarlos.
■ Se optimizan los recursos utilizados ya que sólo utilizamos el número de instancias
realmente necesarias.
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
Eureka
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1
Eureka
1
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2
Eureka
1, 2
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3
Eureka
1, 2
3
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4
Eureka
1, 2
3, 4
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5
Eureka
1, 2, 5
3, 4
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5 6
Eureka
1, 2, 5, 6
3, 4
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5 6 7
Eureka
1, 2, 5, 6
3, 4
7
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5 6 7
Eureka
1, 2, 5, 6
3, 4
7
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5 6 7
Eureka
1, 2, 5, 6
3, 4
7
Outer Architecture - Microservicios
Localización
de servicios
■ Es la extensión del modelo de inversión de control al mundo de microservicios.
■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan
localizarlo.
■ El los consumidores solicitan al registro la forma de llamar al servicio.
■ Una vez localizado el servicio puede ser consumido.
1 2 3 4 5 6 7
Eureka
1, 2, 5, 6
3, 4
7
Outer Architecture - Microservicios
Localización
de servicios
■ Ejemplo: Eureka + Feign
Outer Architecture - Microservicios
Documentación
de los interfaces
■ Una nueva necesidad del modelo de microservicios.
■ Debido a la gran cantidad de servicios necesitamos un mecanismo que nos
permita documentar todos los interfaces disponibles.
■ En el código indicamos esta información y un servicio lo publica y permite su
consumo.
Outer Architecture - Microservicios
Documentación
de los interfaces
■ Ejemplo: Swagger
Outer Architecture - Microservicios
Composición
de la solución
■ Una nueva necesidad del modelo de microservicios.
■ Ya no disponemos de “un war” que nos permite desplegar la solución.
■ Es necesario definir la forma completa de la misma para que el montaje sea
repetible.
■ Se puede realizar a varios niveles y apoyándonos en diversas tecnologías.
Outer Architecture - Microservicios
Composición
de la solución
■ Ejemplo: Docker compose
Outer Architecture - Microservicios
Gestión de
la carga
■ Los servicios se consumen desde distintos orígenes.
■ No podemos controlar cuántas solicitudes vamos a tener en un momento
determinado.
■ ¿Qué hacer cuando el servicio puede empezar a no responder?
■ Establecemos límites de carga a partir de los cuales crecemos horizontalmente.
Outer Architecture - Microservicios
Gestión de
la carga
■ Ejemplo: Openshift +
3Scale
■ Zuul
m4.2xlarge m4.2xlarge m4.2xlarge
m4.xlarge m4.xlarge m4.xlarge m4.xlarge
t2.micro
Bastion Host
m4.large m4.large m4.large
2 Tb 2 Tb 2 Tb
Objetivos de la sesión
 Tener una solución basada en microservicios en producción y poder dormir todas
las noches.
 Entender las diferencias entre una arquitectura monolítica y otra basada en
microservicios.
 Crear un mapa de todos los servicios que necesitaremos de la outer architecture
que nos permita “montar” una solución completa.
 Identificar algunas alternativas para cubrir cada una de las áreas de la outer
architecture.
Conclusiones
■ Los microservicios no son la respuesta a todos los problemas.
■ Las arquitecturas basadas en microservicios complican el despliegue frente a
las monolíticas.
■ Proporcionan elasticidad ante cargas inesperadas.
■ La definición de los servicios de arquitectura tiene adaptarse al modelo
seleccionado para la solución.
To take away
HACKERS WANTED https://github.com/juanmacintas/ejercicioMircroserviciosSpringCloud

Más contenido relacionado

La actualidad más candente

Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaSoftware Guru
 
Your Journey to Cloud-Native Begins with DevOps, Microservices, and Containers
Your Journey to Cloud-Native Begins with DevOps, Microservices, and ContainersYour Journey to Cloud-Native Begins with DevOps, Microservices, and Containers
Your Journey to Cloud-Native Begins with DevOps, Microservices, and ContainersAtlassian
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentChristopher Read
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices Bozhidar Bozhanov
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101Hazzim Anaya
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcPaula Santana
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Janusz Nowak
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
 
Presentacion modelos de Software
Presentacion modelos de SoftwarePresentacion modelos de Software
Presentacion modelos de SoftwareMax Power
 
Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.melidevelopers
 

La actualidad más candente (20)

Cuestionario
CuestionarioCuestionario
Cuestionario
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache Kafka
 
Your Journey to Cloud-Native Begins with DevOps, Microservices, and Containers
Your Journey to Cloud-Native Begins with DevOps, Microservices, and ContainersYour Journey to Cloud-Native Begins with DevOps, Microservices, and Containers
Your Journey to Cloud-Native Begins with DevOps, Microservices, and Containers
 
CI/CD
CI/CDCI/CD
CI/CD
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Git y github
Git y githubGit y github
Git y github
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdc
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
Jenkins pipeline
Jenkins pipelineJenkins pipeline
Jenkins pipeline
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
Presentacion modelos de Software
Presentacion modelos de SoftwarePresentacion modelos de Software
Presentacion modelos de Software
 
Microservice intro
Microservice introMicroservice intro
Microservice intro
 
Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.
 

Similar a Arquitectura de microservicios

Open southcode arquitectura microservicios
Open southcode   arquitectura microserviciosOpen southcode   arquitectura microservicios
Open southcode arquitectura microserviciosJuan Manuel Cintas Peña
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaFrancisco Arturo Viveros
 
Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Matias Cappato
 
Tipos de software
Tipos  de softwareTipos  de software
Tipos de softwareEIYSC
 
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
 
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPJuan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPElastixCom
 
Seguridad y auditoría de Apps o aplicaciones móviles
Seguridad y auditoría de Apps o aplicaciones móvilesSeguridad y auditoría de Apps o aplicaciones móviles
Seguridad y auditoría de Apps o aplicaciones móvilesJaime Andrés Bello Vieda
 
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeVisual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeBruno Capuano
 
Hackeando plataformas móviles
Hackeando plataformas móvilesHackeando plataformas móviles
Hackeando plataformas móvilesHacking Bolivia
 
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic NayaritAzure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic Nayaritenriqueaguilar
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMJosé Moreno
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasScio Consulting
 
Estrategia: Xelere - IBM Security
Estrategia: Xelere - IBM SecurityEstrategia: Xelere - IBM Security
Estrategia: Xelere - IBM SecurityXelere Seguridad
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...ssuserc860fb
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite ServerLuis Lesende
 

Similar a Arquitectura de microservicios (20)

Open southcode arquitectura microservicios
Open southcode   arquitectura microserviciosOpen southcode   arquitectura microservicios
Open southcode arquitectura microservicios
 
M vs m
M vs mM vs m
M vs m
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración Moderna
 
Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.Reestructuración y Optimización de una de una Aplicación Monolítica.
Reestructuración y Optimización de una de una Aplicación Monolítica.
 
Tipos de software
Tipos  de softwareTipos  de software
Tipos de software
 
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
 
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPJuan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
 
Seguridad y auditoría de Apps o aplicaciones móviles
Seguridad y auditoría de Apps o aplicaciones móvilesSeguridad y auditoría de Apps o aplicaciones móviles
Seguridad y auditoría de Apps o aplicaciones móviles
 
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeVisual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
 
Hackeando plataformas móviles
Hackeando plataformas móvilesHackeando plataformas móviles
Hackeando plataformas móviles
 
Trabajo de microservicios
Trabajo de microserviciosTrabajo de microservicios
Trabajo de microservicios
 
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic NayaritAzure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIM
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles Híbridas
 
Como Pedro por su Smart-Building
Como Pedro por su Smart-BuildingComo Pedro por su Smart-Building
Como Pedro por su Smart-Building
 
Estrategia: Xelere - IBM Security
Estrategia: Xelere - IBM SecurityEstrategia: Xelere - IBM Security
Estrategia: Xelere - IBM Security
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
 
Dfso
DfsoDfso
Dfso
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 
Casos exito santiago toribio almatech
Casos exito santiago toribio almatechCasos exito santiago toribio almatech
Casos exito santiago toribio almatech
 

Arquitectura de microservicios

  • 2. Sobre nosotros ■ Julio Palma ■ Twitter: @restalion ■ GitHub: github.com/restalion ■ Technology Architect en Tecnilógica ■ Juanma Cintas ■ Twitter: @juanmacintas ■ GitHub: github.com/juanmacintas ■ Senior Analyst en Tecnilógica
  • 3. Objetivos de la sesión  Tener una solución basada en microservicios en producción y poder dormir todas las noches.  Entender las diferencias entre una arquitectura monolítica y otra basada en microservicios.  Crear un mapa de todos los servicios que necesitaremos de la outer architecture que nos permita “montar” una solución completa.  Identificar algunas alternativas para cubrir cada una de las áreas de la outer architecture.
  • 4. Objetivos de la sesión  Tener una solución basada en microservicios en producción y poder dormir todas las noches.  Entender las diferencias entre una arquitectura monolítica y otra basada en microservicios.  Crear un mapa de todos los servicios que necesitaremos de la outer architecture que nos permita “montar” una solución completa.  Identificar algunas alternativas para cubrir cada una de las áreas de la outer architecture. ¿Qué es la Outer Architecture?
  • 10. Métricas Gestión de erroresServicios DAO Monolito Monolito Presentación Inversión del Control EIS DAO DAO EIS EIS Configuración Logs Auditoría Seguridad
  • 11. Métricas Gestión de errores Servicio DAO Monolito Monolito Presentación Inversión del Control EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración Logs Auditoría Seguridad
  • 12. Monolito 1. Una única aplicación para implementar toda la funcionalidad. 2. Un ecosistema común para todas las piezas de la aplicación. 3. Reutilización basada en los componentes (importación). 4. Sencillez de despliegue. 5. Una única versión de los componentes. 6. Aplicaciones complejas cuya responsabilidad es implementar todo el negocio. 7. Fragilidad: un error en cualquier pieza tumba todo el monolito.
  • 13. Métricas Gestión de errores Servicio DAO Microservicios Monolito Presentación Inversión del Control EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración Logs Auditoría Seguridad
  • 14. Métricas Gestión de errores Servicio DAO Microservicios Presentación Inversión del Control EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración Logs Auditoría Seguridad
  • 15. Métricas Gestión de errores Servicio DAO Microservicios Presentación Inversión del Control EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración Logs Auditoría Seguridad *HTTP
  • 16. Métricas Resistencia a errores Servicio DAO Microservicios Presentación Localización de servicios EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración centralizada Logs distribuidos Auditoría Seguridad (MMI y M2M)
  • 17. Métricas Resistencia a errores Servicio DAO Microservicios Presentación Localización de servicios EIS DAO DAO EIS EIS Servicio Servicio Servicio Configuración centralizada Logs distribuidos Auditoría Seguridad (H2M y M2M) Composición de la solución Gestión de la carga Documentación de interfaces
  • 18. Microservicios 1. Muchas aplicaciones que implementan la funcionalidad completa. 2. Ecosistema políglota dentro de una misma solución. 3. Reutilización basada en uso (llamada a interfaces). 4. Despliegue sencillo de cada aplicación, complejo en la solución completa. 5. Varias versiones de la misma aplicación pueden convivir en ejecución. 6. Cada aplicación tiene la responsabilidad (y exclusiva) en un área concreta de la solución. 7. Se pueden desplegar de forma independiente. 8. Se incrementa la latencia y el tráfico de red.
  • 19. Objetivos de la sesión  Tener una solución basada en microservicios en producción y poder dormir todas las noches.  Entender las diferencias entre una arquitectura monolítica y otra basada en microservicios.  Crear un mapa de todos los servicios que necesitaremos de la outer architecture que nos permita “montar” una solución completa.  Identificar algunas alternativas para cubrir cada una de las áreas de la outer architecture.
  • 20. Estructura de los microservicios 1. BBDD H2 en memoria 2. Acceso con Spring Data 3. Servicios Spring 4. REST Interface 5. Project Lombok 6. Swagger
  • 22. Outer Architecture Métricas Resistencia a errores Localización de servicios Configuración centralizada Logs distribuidos Auditoría Seguridad (H2M y M2M) Composición de la solución Gestión de la carga Documentación de interfaces
  • 23. Configuración Outer Architecture - Monolito ■ En una aplicación monolítica la configuración de la aplicación se puede realizar mediante múltiples formas: – Fichero de propiedades – Parámetros de configuración en la ejecución ■ La configuración no suele ser un gran problema podemos tener varios tipos de ficheros, perfiles… que se seleccionan en el momento de “levantar” la aplicación. ■ Tenemos un número limitado de instancias (desarrollo, preproducción, producción,…) cada una con su configuración específica. ■ Normalmente es el equipo de operaciones el encargado de configurar y mantener la configuración de los distintos entornos.
  • 24. Outer Architecture - Microservicios Configuración centralizada ■ En un esquema de microservicios la operación se complica: – Múltiples instancias de la misma aplicación con el mismo perfil, o distinto. – Versiones distintas del mismo servicio en el mismo entorno. ■ El mantenimiento de las aplicaciones en ejecución se puede llevar desde una plataforma (sin intervención humana directa). ■ Rolling updates, de los servicios
  • 25. Outer Architecture - Microservicios Configuración centralizada ■ Ejemplo: Config server ■ Distintos tipos de clientes dependiendo de la naturaleza de la aplicación.
  • 26. Seguridad Outer Architecture - Monolito ■ El control de acceso a la aplicación se realiza una vez. – Si tienes acceso mientras dure tu sesión podrás ejecutar todos los servicios que te permita tu perfil. ■ El acceso al frontal y a los servicios está unificado.
  • 27. Outer Architecture - Microservicios Seguridad (H2M y M2M) ■ Podemos tener esquemas de seguridad independientes por cada servicio o frontal. ■ Hay que diferenciar entre la seguridad para el acceso a la aplicación por parte de humanos y las llamadas entre máquinas. ■ Nos permite granularidad a la hora de definir quién tiene acceso a qué servicio o funcionalidad. ■ Podemos establecer criterios como cuotas de uso. ■ Permite monetizar el consumo de servicios.
  • 28. Outer Architecture - Microservicios Seguridad (H2M y M2M) IAM Presentación Authorization Server µServices 1 2 3 4 5 6 78 9 10 Acceso a la aplicación de presentación (SAML) 1. El usuario accede a la aplicación de presentación. 2. Se comprueba si está presente el token SAML. Si no redirigimos al IAM. 3. El IAM muestra la pantalla de login. 4. El usuario introduce sus credenciales. 5. Si son válidas, el IAM genera el token SAML y redirige a la aplicación de presentación. Acceso a la aplicación de backend (OAuth2) 6. Se solicita el token al authorization server con las credenciales del consumidor. 7. Si son válidas genera un token y lo devuelve. 8. Se realiza la llamada al servicio. 9. El resource server captura el token y comprueba contra el authorization server que sea correcto. 10. Si lo es se realiza la llamada al servicio. Resource Server
  • 29. Outer Architecture - Microservicios Seguridad (H2M y M2M) ■ Ejemplo: CAS + SAML para la parte frontal ■ Ejemplo: Okta + SAML para la parte frontal ■ Ejemplo: Oauth2 para la M2M. ■ Ejemplo: 3Scale para el API Management.
  • 30. Logs Outer Architecture - Monolito ■ Los logs se escriben en ficheros directamente desde la aplicación. ■ Utilizamos distintos niveles de log dependiendo del entorno (para no penalizar los entornos productivos). ■ Se pueden consultar los ficheros físicos en el servidor. ■ Utilizamos herramientas como PERL para facilitar el trabajo de análisis de los ficheros de log.
  • 31. Outer Architecture - Microservicios Logs distribuidos ■ Las instancias de los microservicios son desechables, cuando dejan de tener utilidad se destruyen. ■ Los ficheros físicos pueden dejar de existir cuando se destruyen los servicios. ■ Incluso en el mejor de los casos podríamos tener muchos ficheros distintos en distintas localizaciones. ■ El planteamiento en estos casos es la creación de un servicio de logs que los guarda de forma unificada en una BBDD que nos permite una consulta sencilla de los mismos. ■ También el uso de herramientas que nos permite trazar la ejecución completa de la solución por las distintas aplicaciones.
  • 32. Outer Architecture - Microservicios Logs distribuidos ■ Ejemplo: Servcio custom + ElasticSearch + Kibana ■ Ejemplo: Sleuth + Zipkin + ElasticSearch + Kibana
  • 33. Gestión de errores Outer Architecture - Monolito ■ Desarrollamos nuestro código para responder correctamente ante los errores. ■ Cuando se produce una excepción la tratamos si es posible de forma que la aplicación siga funcionando. ■ Si se produce un error catastrófico toda la solución deja de funcionar.
  • 34. Outer Architecture - Microservicios Resistencia a errores ■ Cuando un microservicio falla de forma catastrófica se cae pero su rol puede ser cubierto por otra instancia del mismo. ■ Además de los errores propios de la aplicación tenemos que ser capaces de responder ante los errores de los servicios que consumimos. – Tenemos que ser capaces de responder ante el caso de que un servicio al que llamamos no responda, o devuelva un error. ■ Definimos mecanismos que nos permiten responder ante este tipo de errores.
  • 35. Outer Architecture - Microservicios Resistencia a errores ■ Ejemplo: Hystrix
  • 36. Inversión del Control Outer Architecture - Monolito ■ Mecanismo para localizar los servicios a los que llamamos. ■ Evitamos el mecanismo “clásico” de instanciar los servicios para poder utilizarlos. ■ Se optimizan los recursos utilizados ya que sólo utilizamos el número de instancias realmente necesarias.
  • 37. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. Eureka
  • 38. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 Eureka 1
  • 39. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 Eureka 1, 2
  • 40. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 Eureka 1, 2 3
  • 41. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 Eureka 1, 2 3, 4
  • 42. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 Eureka 1, 2, 5 3, 4
  • 43. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 6 Eureka 1, 2, 5, 6 3, 4
  • 44. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 6 7 Eureka 1, 2, 5, 6 3, 4 7
  • 45. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 6 7 Eureka 1, 2, 5, 6 3, 4 7
  • 46. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 6 7 Eureka 1, 2, 5, 6 3, 4 7
  • 47. Outer Architecture - Microservicios Localización de servicios ■ Es la extensión del modelo de inversión de control al mundo de microservicios. ■ Cuando un servicio se arranca se “registra” para que sus consumidores puedan localizarlo. ■ El los consumidores solicitan al registro la forma de llamar al servicio. ■ Una vez localizado el servicio puede ser consumido. 1 2 3 4 5 6 7 Eureka 1, 2, 5, 6 3, 4 7
  • 48. Outer Architecture - Microservicios Localización de servicios ■ Ejemplo: Eureka + Feign
  • 49. Outer Architecture - Microservicios Documentación de los interfaces ■ Una nueva necesidad del modelo de microservicios. ■ Debido a la gran cantidad de servicios necesitamos un mecanismo que nos permita documentar todos los interfaces disponibles. ■ En el código indicamos esta información y un servicio lo publica y permite su consumo.
  • 50. Outer Architecture - Microservicios Documentación de los interfaces ■ Ejemplo: Swagger
  • 51. Outer Architecture - Microservicios Composición de la solución ■ Una nueva necesidad del modelo de microservicios. ■ Ya no disponemos de “un war” que nos permite desplegar la solución. ■ Es necesario definir la forma completa de la misma para que el montaje sea repetible. ■ Se puede realizar a varios niveles y apoyándonos en diversas tecnologías.
  • 52. Outer Architecture - Microservicios Composición de la solución ■ Ejemplo: Docker compose
  • 53. Outer Architecture - Microservicios Gestión de la carga ■ Los servicios se consumen desde distintos orígenes. ■ No podemos controlar cuántas solicitudes vamos a tener en un momento determinado. ■ ¿Qué hacer cuando el servicio puede empezar a no responder? ■ Establecemos límites de carga a partir de los cuales crecemos horizontalmente.
  • 54. Outer Architecture - Microservicios Gestión de la carga ■ Ejemplo: Openshift + 3Scale ■ Zuul m4.2xlarge m4.2xlarge m4.2xlarge m4.xlarge m4.xlarge m4.xlarge m4.xlarge t2.micro Bastion Host m4.large m4.large m4.large 2 Tb 2 Tb 2 Tb
  • 55. Objetivos de la sesión  Tener una solución basada en microservicios en producción y poder dormir todas las noches.  Entender las diferencias entre una arquitectura monolítica y otra basada en microservicios.  Crear un mapa de todos los servicios que necesitaremos de la outer architecture que nos permita “montar” una solución completa.  Identificar algunas alternativas para cubrir cada una de las áreas de la outer architecture.
  • 56. Conclusiones ■ Los microservicios no son la respuesta a todos los problemas. ■ Las arquitecturas basadas en microservicios complican el despliegue frente a las monolíticas. ■ Proporcionan elasticidad ante cargas inesperadas. ■ La definición de los servicios de arquitectura tiene adaptarse al modelo seleccionado para la solución.
  • 57. To take away HACKERS WANTED https://github.com/juanmacintas/ejercicioMircroserviciosSpringCloud

Notas del editor

  1. Esto es un monolito
  2. Esto es un monolito
  3. Esto es un monolito
  4. Esto es un monolito
  5. Esto es un monolito
  6. Esto es un monolito
  7. Esto es un monolito
  8. Esto es un monolito
  9. Esto es un monolito
  10. Esto es un monolito
  11. Esto es un monolito
  12. Esto es un monolito