Download - Introducción a desarrollo de micro servicios
S
Micro serviciosHaz una cosa, pero hazla bien!
Tabla de contenidos
• Arquitecturas monolíticas
• Micro servicios al rescate
• Comunicaciones entre micro servicios
• Spring Boot
Iván Corrales Solera
S
Arquitecturas
monolíticas
Características
• Despliegues de aplicaciones como una única unidad.
• Se trata de entidades rígidas, sin posibilidad de dividirlas
• Almacén de datos compartido por toda la aplicación.
• Una aplicación para todos los requisitos funcionales
• Completamente desarrollada en un único lenguaje de
programación
Iván Corrales Solera
Estructura
• Se comparte la vista
• Se desarrollan
componentes de negocio
de modo independiente,
pero se despliegan como
un único ente
• Almacen de datos
compartido por todas las
funcionalidades
Iván Corrales Solera
Consecuencias
• Desarrollos y despliegues únicos
• Aplicaciones con alta complejidad y tamaño
• Largos ciclos de desarrollo
• Despliegues eternos
• Tests de regresión se convierten en una pesadilla
• Difícil de escalar y únicamente escalado horizontal.
Iván Corrales Solera
S
Micro servicios
Iván Corrales
Solera
<developer@weso
vi.com>
Definición y principios
S Cada programa hace una cosa, pero la hace bien
S Divide y vencerás
Iván Corrales Solera
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.
Lo que dice Wikipedia…
Características
S Poliglotas: cada micro servicio puede ser implementado en un lenguaje de programación
S Tolerancia a fallos: Un fallo de un micro servicio no afectará al resto.
S Independientes: Ciclos de vida independientes
S Escalado: Escalado eficiente
S Autonomía: Cada servicio es desarrollado y desplegado de forma independiente
S Facilita la colaboración entre desarrolladores
Iván Corrales Solera
Estructura II
S Almacenes de datos independientes
S Cada aplicación implementa la solución a una necesidad
funcional
S Interfaces de usuario independientes
Iván Corrales Solera
Beneficios “No técnicos”
S Promueve la proactividad del equipo.
S Reduce el “time to market”
S Escalado eficiente
S Evita downtime de aplicaciones
S Reduce el coste de bug fixing y el tiempo empleado en
tests de regresión.
Iván Corrales Solera
Beneficios técnicos
S Desarrollos sencillos.
S Posibilidad de implementar cada servicio con el lenguaje
más adecuado.
S Evita conflictos en código.
S Principio de responsabilidad única.
S Independencia de procesos de integración continua
Iván Corrales Solera
S
Comunicaciones entre
micro serviciosComunicaciones HTTP vs AMQ
Iván Corrales
Solera
<developer@weso
vi.com>
Comunicación Http
Ventajas
S Simple y habitual
S Peticiones y respuestas fáciles
S Firewall friendly
S No hay un broker intermediario
Desventajas
S Servidor debe estar disponible
S Cliente necesita conocer URL’s
del servicio
Iván Corrales Solera
Comunicación AMQ
Ventajas
S Desacopla cliente de servidor
S Broker almacena los mensajes
entre micro servicios
S Soporte de variedad de
patrones de comunicación
Desventajas
S Se añade complejidad al broker
S Gestión de peticiones y
respuestas más compleja
Iván Corrales Solera
S
Spring BootFacilitando el desarrollo de micro servicios
Iván Corrales Solera
m>
¿Que es Spring Boot?
S Forma sencilla de arrancar proyectos
S Ofrece monitorización y auditoria
S Configuración simplificada (CoC)
S No se genera código ni se usa XML
S No es invasivo, permite sobreescribir la configuración.
S Servidor de aplicaciones como parte de la aplicación
S Ofrece endpoints que pueden ser securizados y personalizados.
Dónde comienzo
S http://start.spring.io/
S http://projects.spring.io/spring-boot/
S http://docs.spring.io/spring-
boot/docs/current/reference/htmlsingle/
S https://github.com/
S ….
Iván Corrales Solera