Documentos de Académico
Documentos de Profesional
Documentos de Cultura
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
1
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
ÍNDICE
1. INTRODUCCIÓN A LOS MICROSERVICIOS Y PATRONES DE DISEÑO 4
1.1 ARQUITECTURAS BASADAS EN MICROSERVICIOS 4
1.2 ORIGEN DE LOS MICROSERVICIOS 5
1.3 PATRONES DE ARQUITECTURA Y DE DISEÑO 6
1.4 FRAMEWORKS 6
1.4.1 FRAMEWORKS JAVA 7
1.4.2 FRAMEWORKS OTROS LENGUAJES. 7
1.5 PERSISTENCIA. 7
2. MICROSERVICIOS. 8
2.1 MODELADO DE MICROSERVICIOS 10
2.2 GESTIÓN DE LA INFORMACIÓN 10
2.3 CÓMO INTEGRAR LOS MICROSERVICIOS 11
2.4 ORQUESTACIÓN VS COREOGRAFÍA. 11
2.5 TECNOLOGÍAS DE COMUNICACIÓN ENTRE MICROSERVICIOS.. 12
2.6 INTERFACES DE USUARIO. 12
3. DESPLIEGUE. 13
3.1 INTEGRACIÓN CONTINUA (CONTINUOUS INTEGRATION CI). 13
3.2 ENTREGA CONTINUA (CONTINUOUS DELIVERY CD). 14
3.2.1 ARTIFACTS. 14
3.3 DESPLIEGUE DE MICROSERVICIOS. 15
3.4 CONTENEDORES. 15
3.4.1 DOCKERS. 15
3.4.2 KUBERNETES. 15
3.4.3 ARQUITECTURA KUBERNETES. 16
4. MONITORIZACIÓN. 18
4.1 PATRONES DE MONITORIZACIÓN. 18
2
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
5. SEGURIDAD Y RESILIENCIA. 18
5.1 SEGURIDAD. 19
5.2 RESILIENCIA. 21
6. CONCLUSIÓN 22
3
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Veamos ahora cómo podemos dar una definición de microservicio. Existen discrepancias en el
ámbito del desarrollo del software en cuanto a cómo definirlos. Si atendemos a la definición
dada por Martin Fowler y James Lewis, los definen como “estilo arquitectural en el que
múltiples servicios, cada uno ejecutándose de manera individual y desplegados de la forma más
automatizada posible, se comunican entre sí mediante mecanismos ligeros, fundamentalmente
un API basado en HTTP”.
Otra duda que nos surge es delimitar el “tamaño” que debe de tener un microservicio. Aquí
según Sam Newman lo marca como “todo servicio web funcional que pueda ser reescrito por
un desarrollador en menos de dos semanas”.
Lo que sí que debe de cumplir un microservicio es :
● Debe desplegarse de manera individual.
● Independencia del resto de microservicios, en la medida que sea posible.
● Capaz de comunicarse con el resto.
● Escalable de manera individual.
4
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Aunque el origen de la arquitectura SOA tuvo muchos problemas (falta de conocimiento de los
desarrolladores y ausencia de tecnologías para su implantación), podemos decir que los
microservicios guardan ciertas similitudes con ella, y ahora si que está más maduras las
tecnologías que los implementan, así como el conocimiento de los desarrolladores.
Aunque el origen está relacionado, presentan diferencias importantes entre ambas:
● En SOA los servicios se exponen a través de contratos, mientras que en microservicios es
mediante API RestFul.
● El SOA los servicios se despliegan manualmente, mientras que en microservicios se hace
de manera automatizada.
En ambos casos encontramos el concepto de arquitectura software, que nos brinda un
mecanismo para poder realizar un análisis temprano para garantizar que el diseño cumplirá con
los objetivos del sistema en cuanto a funcionalidad, rendimiento, seguridad, etc.
Cuando hablamos de un sistema, éste se compone de una serie de módulos con propiedades y
relaciones entre ellos. Las propiedades pueden ser internas o externas. Las internas definen al
módulo mientras que las externas son las que definen los “contratos” y acuerdos que nos
permiten la relación entre los módulos. Estos contratos son vitales para lograr la perfecta
integración de los módulos.
Es fundamental dividir la funcionalidad del sistema en diferentes módulos y definir sus
propiedades y cómo se relacionarán entre sí.
5
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
A la hora de diseñar una arquitectura software se puede optar por una estrategia desde “cero”
o bien “adaptar” una solución ya existente.
En el caso que nos ocupa, los patrones de diseño, el enfoque es el segundo, adaptar una
solución ya existente, precisamente ese el concepto detrás del patrón de diseño.
Los patrones son un mecanismo de reutilización ante funcionalidades comunes.
Podemos encontrarnos:
● Patrones creacionales. Para la creación de nuevos objetos.
● Patrones estructurales. Facilitan la Modelización del software.
● Patrones de comportamiento. Para gestionar relaciones entre objetos.
En el caso de los patrones de arquitectura, éstos no nos dicen como deben de estar escritos los
componentes, pero si nos dicen como deben de estar organizados y cuales de ellos son
importantes para la aplicación. Al igual que los patrones de diseño, nos aportan soluciones a
problemas comunes de una forma reutilizable.
Los más usados son:
● Programación por capas.
● Cliente-Servidor.
● Arquitectura SOA (orientada a servicios).
● Arquitectura de microservicios.
● Pipeline.
● Arquitectura en Pizarra.
● Dirigida por Eventos.
● Peer-to-Peer.
Para concluir este apartado, indicar que siempre que se desarrolla un servicio web es necesario
el establecer un protocolo de comunicación. Los más importantes son SOAP y REST.
1.4 FRAMEWORKS
Otra opción para no tener que desarrollar una arquitectura software desde cero es acudir a un
framework.
El framework nos brinda estructuras de software ya implementadas que facilitan al
desarrollador la creación de un proyecto nuevo.
6
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
1.5 PERSISTENCIA.
7
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Por ello es necesario el disponer de elementos que nos brinden esta funcionalidad. Estamos por
tanto hablando de las bases de datos.
Aquí podemos optar por los modelos clásicos basados en bases de datos relacionales (Oracle,
SQL Server, etc) o bien optar por modelos de bases de datos no relacionales. (MongoDB, Redis,
Elasticsearch y Cassandra)
8
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
2. MICROSERVICIOS.
Atendiendo a su definición, nos encontramos ante algo pequeño e independiente que funciona
junto con otros (microservicios) para lograr la funcionalidad del sistema.
De esto podemos concretar que debe de ser algo que no sea grande y que funcione bien, a
diferencia de los tradicionales sistemas monolíticos.
Las arquitecturas de microservicios resultan útiles si para desarrollar una aplicación, dividimos
ésta en pequeños servicios, los cuales se ejecutan de manera independiente y se comunican
entre sí a través de protocolos sencillos, en este caso HTTP.
Un aspecto importante es saber dimensionar el tamaño adecuado que tiene que tener un
microservicio. Según Newman debería ser “algo que se pueda ser escrito (lenguaje de
programación) en dos semanas”. Esto es más o menos unas 80 horas de desarrollo.
Otra característica importante es que debe de ser independiente. Esto es, debe de funcionar de
forma aislada donde se ejecute y no debe de seguir el modelo de “empaquetamiento de varios
servicios” en la misma máquina.
Para lograr esta independencia y que, a su vez, colaboren entre ellos, nos basamos en la
comunicación mediante llamadas de red.
Con esta característica, la independencia, logramos que un microservicio pueda ser sustituido
por otro sin que afecte al resto, y sobre todo a la funcionalidad del sistema.
Ventajas :
● Heterogeneidad tecnológica.
● Resiliencia.
● Escalado.
● Facilidad de despliegue.
● Facilidad organizativa. (equipos de desarrollo más pequeños y más productivos).
● Reutilización.
● Facilidad de sustitución.
Desventajas :
● Pruebas más complicadas.
● Mayor complejidad de gestión al existir más servicios.
● Complejidad de integración.
● Alto consumo de memoria.
● Proceso de fragmentación de la funcionalidad de una aplicación puede ser complejo.
9
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Una duda que nos surge es a la hora de manejar la persistencia en una arquitectura de
microservicios, ya que el objetivo de la arquitectura es de mantener la máxima autonomía de
éstos.
Hay varias implementaciones:
● Tener una base de datos por cada microservicio.
● Base de datos compartida por varios microservicios.
● Command query responsibility segregation. (vista de solo lectura expuesta por la bbdd
de un microservicio que es usada por otro.)
Nos encontramos ante el verdadero problema que aparece a la hora de diseñar aplicaciones
basadas en microservicios, y es el de lograr particionar una base de datos monolítica.
10
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
● Fronteras Transaccionales.
En este apartado vamos a analizar cómo realizamos la comunicación entre los distintos
microservicios que conforman una aplicación.
Como premisa común vamos a imponer que las API de comunicaciones sean los más
independientes posibles de la tecnología.
Opciones :
● Acceso a los datos.
o Base de datos compartida. Múltiples problemas.
● Formas de comunicación.
o Asincronía vs Sincronía.
● Formas de invocación.
o Directa.
En este apartado vamos a analizar cómo realizamos la comunicación entre los distintos
microservicios que conforman una aplicación.
Conforme la funcionalidad de las aplicaciones se hace más compleja, aparece un nuevo
problema, y es el de administrar los procesos de negocio que se prestan a través de servicios
externos.
Además cuando nos encontramos ante el problema de las transacciones que llevan están
compuestas por acciones llevadas a cabo por cada microservicio en su propia base de datos, se
hace necesario el garantizar la coherencia de dicha transacción en este escenario. Esta situación
se denomina patrón SAGA que nos soluciona este problema de coherencia de transacciones
entre microservicios.
Tenemos tres formas de organizar la comunicación entre microservicios:
● Coreografía, que permite que cada microservicio funcione de forma independiente, y se
comuniquen a través de eventos.
11
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Poor último indicar que necesitamos gestionar como nuestros microservicios emiten eventos y
como los que los deben de consumir son avisados de ellos. Para esto tenemos dos enfoques,
utilizar HTTP como propagador de eventos a través de ATOM, o bien utilizar los message
brokers, un ejemplo de ellos es RabbitMQ a través de una API de suscripciones.
Para finalizar este recorrido por la arquitectura de microservicios, una vez analizada la parte de
lógica de negocio, comunicación y persistencia, nos queda analizar la parte de comunicación
con el usuario final y como le mostramos la información procesada por los microservicios.
12
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Se ha producido una evolución de las viejas interfaces web pesadas a las modernas interfaces
para dispositivos móviles que requieren una mayor agilidad, pero también se nos plantean una
serie de limitaciones (resoluciones, capacidad de procesado, etc).
Para dar solución a ello tenemos distintos patrones o modelos para el desarrollo de estas
interfaces de usuario :
● Patrón API Composition / Monolithic UI / Client-side UI Composition : la API habla
directamente a través de JSON o XML con los servicios expuestos.
● Patrón Fragmented UI Composition / Server Side UI Composition : los propios servicios
proporcionan parte de la interfaz de usuario.
● Patrón Backends for Frontends. API Gateway : como solución al masivo intercambio de
mensajes entre servicios, exponiendo un punto de conexión agregado. Éste se encarga
de realizar las llamadas necesarias a los microservicios del back-end.
3. DESPLIEGUE.
13
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
integran su trabajo, generalmente cada miembro se integra al menos una vez al día, lo que significa
que pueden ocurrir integraciones múltiples todos los días
Durante este proceso se crearán artefactos para probar los microservicios nuevos y sus
llamadas.
Existen varios modelos:
● Un único árbol de fuentes con todo el código, donde las diferentes compilaciones se
asignen a ramas de este árbol.
● El enfoque más usado es el tener una compilación de integración continua por cada
microservicio.
3.2.1 ARTIFACTS.
Nos encontramos con este concepto cuando estamos ante herramientas de automatización de
integración continua como Maven, Jenkins o Ant.
Son elementos que facilitan el desarrollo y puesta en producción de los elementos que
programamos.
Ejemplos :
● Ruby tiene gems.
● Java tiene JAR y WAR.
● Python tiene eggs.
14
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Desde el punto de vista de los microservicios puede que por si solo un artefacto no sea
suficiente y necesitamos otro software para implementar y lanzar nuestros artefactos. Ejemplos
de este tipo de herramientas son Puppet y Chef.
En este punto nos planteamos cuantos microservicios tendremos por cada máquina, teniendo
en cuenta que actualmente no hablamos ya de host puros en entornos virtualizados.
Por tanto podremos tener :
● Varios microservicios por host.
● Contenedores de aplicaciones.
● Un solo microservicio por host.
● PaaS. Serverless : Heroku, AWS o Azure.
3.4 CONTENEDORES.
Los contenedores nos aportan un espacio de proceso independiente en el que conviven otros
procesos.
3.4.1 DOCKERS.
Plataforma construida sobre LXC (Linux Containers). Se encarga de gran parte del trabajo
alrededor de la manipulación de contenedores. En esta plataforma se crean e implementan
aplicaciones. La plataforma administra el aprovisionamiento de contenedores, controla
problemas inherentes a la comunicación, y permite almacenar y versionar las aplicaciones.
3.4.2 KUBERNETES.
Dockers en sí mismo es solamente un PaaS. Pero esto solo no nos vale y necesitamos
herramientas que nos ayuden a administrar servicios en varias instancias de Dockers y en varios
host, por tanto necesitamos otra capa.
Con Dockers podemos manejar contenedores de manera independiente, pero como lo hacemos
con varios a la vez, la respuesta es Kubernetes.
Kubernetes presenta una arquitectura de un nodo maestro y varios nodos esclavos que el
usuario puede definir.
15
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Nos aporta:
● Despliegues automatizados.
● Descubrimiento de nuevos servicios y balanceo de carga.
● Propias direcciones IP´s y nombre único DNS.
● Gestionar el almacenamiento.
● Administración de la configuración de los servicios.
● Empaquetado automático de contenedores.
● Escalado horizontal de recursos.
● Self-healing : reinicia los contenedores que fallan, reemplaza los contenedores cuando
los nodos mueren, …..
● Kubernetes Pods : objeto más pequeño y básico desplegable. Unidad básica de ejecución que
representa procesos corriendo en el cluster.
● Nodos : Un pod se ejecuta siempre en un nodo. Un nodo es una máquina de trabajo que
puede ser una máquina virtual o física, dependerá del cluster. Cada nodo es administrado por
un maestro.
● Cada nodo de kubernetes ejecuta :
o Kubelet : proceso responsable entre el maestro y el nodo, administra los pods.
o Conteiner runtime : desempaquetar el contenedor y ejecutar la aplicación.
● Cluster de Kubernetes : formado por :
o Master : coordina el cluster.
o Nodos : workers que ejecutan aplicaciones.
● ReplicaSet : regla definida mediante un Deployment y se usa para garantizar un número
específico de pods iguales.
● Deployment : conjunto de directrices que se dan en el cluster para que tanto los ReplicaSet
como los pods cumplan con lo que diga el Deployment.
● Servicio de Kubernetes : manera abstracta de exponer la aplicación definida en el Deployment
como un grupo de Pods.
Un cluster de kubernetes está formado por el nodo Master y los nodos Worker (o nodos).
Elementos de la arquitectura :
16
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
● etcd: una base de datos clave-valor donde Kubernetes guarda todos los datos del cluster.
● API server: Componente del Master que expone la API de Kubernetes. Es el front-end del
plano de control de Kubernetes.
● Scheduler: Componente del master que observa qué pods se han creado nuevos y no
tienen nodo asignado, y les selecciona un nodo donde se puedan ejecutar.
● kubelet: Agente que se se ejecuta en cada nodo worker del cluster y que asegura que los
nodos están en ejecución y sanos. kubelet no gestiona los pods que no han sido creados
por Kubernetes.
● kube-proxy: Mantiene las reglas de networking en los nodos para los pods que se
ejecutan en él de acuerdo con las especificaciones de los manifiestos.
● Plano de datos o Data Plane: Nivel que proporciona los recursos, como CPU, memoria,
red y almacenamiento, para que los pods se puedan ejecutar y conectar a la red.
17
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
4. MONITORIZACIÓN.
En el mundo de la aplicación monolítica, tenemos un lugar muy obvio para comenzar nuestras
investigaciones. ¿Sitio web lento? Es el monolito. ¿Sitio web que da errores extraños? Es el
monolito. CPU al 100%? monolito.
Ahora tenemos varios microservicios para supervisar, varios archivos de registro para
inspeccionar y varios lugares donde la latencia de red podría causar problemas. Tenemos que
dar sentido a lo que de otra manera podría ser un desorden caótico.
18
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
5. SEGURIDAD Y RESILIENCIA.
5.1 SEGURIDAD.
Para las aplicaciones monolíticas, es habitual que la propia aplicación controle la autenticación y
la autorización. Sin embargo, cuando se trata de sistemas distribuidos, tenemos que pensar en
esquemas más avanzados. No queremos que todos los servicios tengan que iniciar sesión por
separado para diferentes sistemas, utilizando un nombre de usuario y una contraseña diferentes
para cada uno. El objetivo es tener una identidad única que podamos autenticar una vez.
19
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Hasta este punto hemos estado usando el término entidad para describir cualquier cosa que
pueda autenticarse y estar autorizado para hacer cosas, Pero, ¿qué pasa con los programas, u
otros servicios, que se autentican entre sí?
Nuestra primera opción podría ser simplemente asumir que cualquier llamada a un servicio
realizada desde dentro de nuestro perímetro es de confianza. Dependiendo de la sensibilidad
de los datos, esto podría ser suficiente.
Para esto podríamos utilizar simplemente autenticación básica HTTP permite que un cliente
envíe un nombre de usuario y una contraseña en un encabezado HTTP estándar. A continuación,
el servidor puede comprobar estos detalles y confirmar que el cliente puede acceder al servicio.
Podríamos mejorar la seguridad con HTTPS e incluir por lo tanto la seguridad asociada a los
certificados SSL.
Si ya se está utilizando SAML u OpenID Connect también podría usarlo para las interacciones
entre servicios Si está usando una SSO Gateway , deberá enrutar todo el tráfico dentro de la red
a través del SSO Gateway. Esta aproximación centralizada hace muy cómoda la revocación de
credenciales a los servicios si están resultan comprometidas.
Otro enfoque es hacer uso de las capacidades de Seguridad de la capa de transporte (TLS), el
sucesor de SSL, en forma de certificados de cliente. Aquí, cada cliente tiene un certificado X.509
instalado que se utiliza para establecer un vínculo entre el cliente y el servidor. Pero la gestión
de tanto certificado (1 por microservicio) puede llegar a ser muy compleja.
Un enfoque alternativo, utilizado ampliamente por las API de S3 de Amazon para AWS y en
partes de la especificación OAuth, es utilizar hash-based messaging code (HMAC) para firmar la
solicitud. Con HMAC, se aplica un algoritmo hash al cuerpo de la solicitud del cuerpo junto con
una clave privada y el hash resultante se envía junto con la solicitud. A continuación, el servidor
utiliza su propia copia de la clave privada y el cuerpo de la solicitud para volver a crear el hash y
verificar así la autenticidad de la petición.
Api Keys
Todas las API públicas de servicios como Twitter, Google, Flickr y AWS hacen uso de API keys que
permiten a un servicio identificar quién está realizando una llamada y poner límites a lo que
pueden hacer.
A nivel de autenticación microservicio a microservicio algunos sistemas utilizan una única clave
de API que se comparte y utilizan un enfoque similar a HMAC. Un enfoque más común es
utilizar un par de claves pública y privada. La administración de las claves se hace de forma
centralizada, del mismo modo que administraríamos las identidades de las personas y el SSO
GateWay se utiliza también mucho.
El uso de API keys es muy sencillo a nivel de programación en comparación con el manejo de un
protocolo de enlace SAML.
20
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Tratar errores inesperados es uno de los problemas más difíciles de resolver, especialmente en
un sistema distribuido. Gran parte del código que los desarrolladores escriben implica controlar
las excepciones, y aquí también es donde se dedica más tiempo a las pruebas. El problema es
más complejo que escribir código para controlar los errores. ¿Qué ocurre cuando se produce un
error en la máquina en que se ejecuta el microservicio? No solo es necesario detectar este error
de microservicio (un gran problema de por sí), sino también contar con algo que reinicie su
microservicio.
Un microservicio debe ser resistente a errores y poder reiniciarse a menudo en otra máquina a
efectos de disponibilidad. Esta resistencia también se refiere al estado que se guardó en nombre
del microservicio, en los casos en que el estado se puede recuperar a partir del microservicio, y
al hecho de si el microservicio puede reiniciarse correctamente. En otras palabras, debe haber
resistencia en la capacidad de proceso (el proceso puede reiniciarse en cualquier momento), así
como en el estado o los datos (sin pérdida de datos y que se mantenga la consistencia de los
datos).
5.2 RESILIENCIA.
Tratar errores inesperados es uno de los problemas más difíciles de resolver, especialmente en
un sistema distribuido. Gran parte del código que los desarrolladores escriben implica controlar
las excepciones, y aquí también es donde se dedica más tiempo a las pruebas. El problema es
más complejo que escribir código para controlar los errores. ¿Qué ocurre cuando se produce un
error en la máquina en que se ejecuta el microservicio? No solo es necesario detectar este error
de microservicio (un gran problema de por sí), sino también contar con algo que reinicie su
microservicio.
Un microservicio debe ser resistente a errores y poder reiniciarse a menudo en otra máquina a
efectos de disponibilidad. Esta resistencia también se refiere al estado que se guardó en nombre
del microservicio, en los casos en que el estado se puede recuperar a partir del microservicio, y
al hecho de si el microservicio puede reiniciarse correctamente. En otras palabras, debe haber
resistencia en la capacidad de proceso (el proceso puede reiniciarse en cualquier momento), así
como en el estado o los datos (sin pérdida de datos y que se mantenga la consistencia de los
datos).
21
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
TIMEOUTS
Los tiempos de espera son importantes para el rendimiento de los sistemas. ¿Cuánto tiempo
puedo esperar antes de poder considerar que un sistema aguas abajo está realmente caído?
Son necesarios tiempos de espera para cualquier llamada y registrar cuándo se producen estos
tiempos de espera que sucede y, si es necesario, cambiarlos.
CIRCUIT BREAKERS
Cuando una aplicación empieza a recibir respuestas con retrasos de los otros sistemas (servicios
web externos, base de datos, etc.. ) , antes de devolver finalmente un error, el sistema se va
degradando poco a poco y se van teniendo cada vez más retrasos hasta que se colapsa.
6. CONCLUSIÓN
En este tema hemos abordado el concepto de los microservicios como nuevo ejemplo de
arquitectura de desarrollo de aplicaciones en contrapartida a los modelos clásicos de
aplicaciones monolíticas o cliente-servidor.
Se ha presentado el modelo de desarrollo de esta arquitectura a través del uso de patrones de
arquitectura que hace el no tener que desarrollar “desde cero” una aplicación y basándose en el
concepto de reutilización poder aprovechar servicios ya implementados para realizar nuevas
aplicaciones.
Se ha analizado el concepto de microservicio y lo que ello significa, a saber, algo autónomo y
que realiza una función muy especializada dentro de la arquitectura, para en colaboración con
otros microservicios llevar a cabo funcionalidades más complejas. Ello aporta como beneficios
el poder escalar la arquitectura de manera sencilla y además el mantenimiento de estos
microservicios es más sencillo.
22
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Se han analizado unos conceptos claves de este tipo de arquitecturas como son la integración
continua y los despliegues automatizados.
También hemos visto el concepto de contenedor, ejemplarizado en Dockers, y cómo estos
artefactos dotan a los microservicios un ecosistema para su ejecución sin tener que preocuparse
de los recursos físicos de las máquinas.
Posteriormente hemos visto cómo articular una red de contenedores en una arquitectura, en
concreto hemos presentado Kubernetes, y sus características principales.
Por último, hemos analizado los aspectos de seguridad y monitorización de este tipo de
arquitecturas ya que debido a su carácter distribuido y acceso fundamentalmente desde la web
hacen necesario gestionarlos correctamente.
23