Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
1. 6 www.coiicv.org
Bit@cora Noviembre 2016
El término microservicios se ha populariza-
do en los últimos años principalmente a tra-
vés de las principales empresas de Internet
que han desarrollado sus productos a partir
de un conjunto de servicios más pequeños,
para de esta forma ganar en escalabilidad y
mantenibilidad en sus aplicaciones.
Los microservicios son servicios pequeños
y autónomos que trabajan conjuntamente
y se comunican mediante mecanismos sen-
cillos, normalmente como si fueran un re-
curso API de HTTP. Estos servicios se basan
en la filosofía Unix, cuyos objetivos son es-
cribir programas que hagan “una sóla cosa
pero bien hecha” y escribir “programas que
trabajen conjuntamente”.
Los microservicios son construidos alrede-
dor de funcionalidades de negocio , pueden
ser desplegados de manera automática y
cada uno puede serlo de manera indepen-
diente al resto de servicios de la aplicación.
Por ejemplo, en arquitecturas J2EE, los mi-
croservicios son equivalentes a tener una
arquitectura orientada a servicios(SOA),
pero cambiando los componentes J2EE, pe-
ticiones SOAP y WSDL por llamadas HTTP a
una API REST que exponen pequeñas fun-
cionalidades y se comunican de forma dis-
tribuida entre servicios.
Características de una Arquitectura
de Microservicios
La arquitectura basada en microservicios
pretende solucionar problemas específicos
de las aplicaciones monolíticas, que son las
que habitualmente encontramos en el en-
torno empresarial. La idea que es dividir la
aplicación en módulos independientes, ex-
puestos vía API REST, y que ofrecen una
funcionalidad siguiendo la regla de mínimo
acoplamiento y máxima cohesión.
Esta división en microservicios permite la
evolución de cada servicio por separado,
siempre que mantenga sus interfaces de
acceso, y más importante, permite la eje-
cución y escalado horizontal de dichos mó-
dulos, permitiendo a la aplicación crecer y
decrecer en función de la demanda o nece-
sidades de negocio.
Además cada uno es independiente y su có-
digo debe poder ser desplegado sin afectar
a los demás. Incluso cada uno de ellos pue-
de escribirse en un lenguaje de programa-
ción diferente, ya que solo exponen la API
o interfaz común al resto de microservicios.
Un elemento importante de una arquitectu-
ra basada en microservicios es el Gateway
Microservicios, un nuevo enfoque para
arquitecturas orientas a servicios.
José Manuel Ortega Candel
Centers Technician de Everis.
@jmortegac
www.linkedin.com/in/jmortega1
2. 7www.coiicv.org
Bit@cora Noviembre 2016
• Facilita la gestión de equipos multifun-
cionales y autónomos. Cada microser-
vicio por sí mismo es multifuncional, es
decir, tiene una parte frontend, backend
y base de datos. De esta forma pode-
mos formar equipos multifuncionales
que se encarguen de varios microservi-
cios, escalando el proceso de desarrollo
de forma más sencilla.
• Despliegue progresivo. Nos permite
aplicar integración continua alcanzando
altos valores de disponibilidad. Esto im-
plica que ya no tienes un único conte-
nedor, sino que hay que estar pendiente
de n contenedores de aplicaciones.
• Altamente desacoplados: Despliegue
progresivo, sin afectar a todo el sistema.
• En vez de tener un único ejecutable,
cada componente tiene la capacidad de
ejecutarse por sí mismo, y los servicios
se comunican entre sí a través de lla-
madas.
Conclusiones
Cada día más proyectos se centran en los
microservicios como enfoque para su arqui-
tectura del software, sobretodo en el ám-
bito de las aplicaciones empresariales. Una
arquitectura de microservicios puede pare-
cer muy beneficiosa, pero como todo, tiene
sus pros y contras, como cualquier arqui-
tectura software.
Lo que hay que tener en cuenta es que los
microservicios introducen complejidad, que
hay que gestionar. Hay que hacer un mayor
esfuerzo en despliegues automáticos, mo-
nitorización y logging, gestionar fallos, con-
sistencia de datos, estrategia de pruebas y
más factores que introducen los sistemas
distribuidos.
o pasarela, que permite lanzar peticiones
en paralelo a cada microservicio cada vez
que se quieran obtener los datos necesarios
para la parte frontend de la aplicación.
Entre las ventajas que tiene usar una arqui-
tectura basada en microservicios se pueden
destacar:
• La libertad de lenguaje. Los microservi-
cios pueden estar escritos en diferentes
lenguajes de programación, utilizar di-
ferentes tecnologías de almacenamien-
to y estar distribuidos en diferentes ser-
vidores.
• Escalabilidad. Con servicios más peque-
ños, solo escalamos aquellos servicios
que necesitan ser escalados, sin tener
que alterar las otras partes del sistema.
• Facilidad de despliegue. Puedes realizar
un cambio en un servicio y desplegarlo
independientemente del resto del siste-
ma. Cada microservicio se puede des-
plegar de forma independiente del resto
y un cambio en un módulo no afectará
a los demás.
• Combinar los servicios como nos intere-
sen. Incluso, reutilizarlos para distintos
uso dentro de la empresa.
• Escalar a nivel de microservicios. Cada
uno de ellos expone una funcionalidad,
así podemos distribuirlo según nuestras
necesidad pensando en la demanda y el
balanceo de carga de cada aplicación.
Es más fácil de escalar a nivel de sof-
tware, ya que en lugar de replicar toda
la aplicación y gestionarlo con balan-
ceadores, replicaremos los microservi-
cios que tengan más carga.
• Tolerancia a fallos. El fallo en un micro-
servicio no afecta a los demás ya que
son totalmente independientes.
3. 8 www.coiicv.org
Bit@cora Noviembre 2016
El enfoque que más se encuentra hoy en día
es de empresas que han visto que gestionar
su software como una aplicación monolítica se
ha vuelto tan complejo, que han empezado
a separar la aplicación en microservicios o a
gestionar nuevos desarrollos de esta forma.
En este caso, sí se aconseja evolucionar
la arquitectura hacia microservicios, pero
poco a poco, manteniendo una parte mono-
lítica, combinada con ciertos microservicios
separados.