S
Micro servicios
Haz 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
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
Estructura
Iván Corrales Solera
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
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
<developer@wesovi.com>
S
Comunicaciones entre
micro servicios
Comunicaciones 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
<developer@wesovi.com>
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
<developer@wesovi.com>
S
Spring Boot
Facilitando el desarrollo de micro servicios
Iván Corrales Solera
<developer@wesovi.co
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
<developer@wesovi.com>

Introducción a desarrollo de micro servicios

  • 1.
    S Micro servicios Haz unacosa, pero hazla bien!
  • 2.
    Tabla de contenidos •Arquitecturas monolíticas • Micro servicios al rescate • Comunicaciones entre micro servicios • Spring Boot Iván Corrales Solera <developer@wesovi.com>
  • 3.
  • 4.
    Características • Despliegues deaplicaciones 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 <developer@wesovi.com>
  • 5.
    Estructura • Se compartela 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 <developer@wesovi.com>
  • 6.
    Consecuencias • Desarrollos ydespliegues ú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 <developer@wesovi.com>
  • 7.
  • 8.
    Definición y principios SCada programa hace una cosa, pero la hace bien S Divide y vencerás Iván Corrales Solera <developer@wesovi.com> 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…
  • 9.
    Características S Poliglotas: cadamicro 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 <developer@wesovi.com>
  • 10.
  • 11.
    Estructura II S Almacenesde datos independientes S Cada aplicación implementa la solución a una necesidad funcional S Interfaces de usuario independientes Iván Corrales Solera <developer@wesovi.com>
  • 12.
    Beneficios “No técnicos” SPromueve 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 <developer@wesovi.com>
  • 13.
    Beneficios técnicos S Desarrollossencillos. 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 <developer@wesovi.com>
  • 14.
    S Comunicaciones entre micro servicios ComunicacionesHTTP vs AMQ Iván Corrales Solera <developer@weso vi.com>
  • 15.
    Comunicación Http Ventajas S Simpley 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 <developer@wesovi.com>
  • 16.
    Comunicación AMQ Ventajas S Desacoplacliente 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 <developer@wesovi.com>
  • 17.
    S Spring Boot Facilitando eldesarrollo de micro servicios Iván Corrales Solera <developer@wesovi.co m>
  • 18.
    ¿Que es SpringBoot? 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.
  • 19.
    Dónde comienzo S http://start.spring.io/ Shttp://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 <developer@wesovi.com>