Microservicios

Para la capa de negocio se propone usar una MSA, o arquitectura de microservicios, la cual posee grandes ventajas, entre las que cuenta el hecho de ser cloud Native, es decir que los diferentes proveedores de Cloud (Google, AWS, AZURE) entregan una serie de herramientas para desarrollar aplicaciones bajo una arquitectura de microservicios. Esto permite reducir drásticamente el costo de licenciamiento, además de adoptar una tecnología que se mantiene vigente.

En este sentido es recomendable adoptar las diferentes componentes de una MSA como PaaS, es decir usarlos como plataforma como servicios. Estos elementos con Kubernetes, gestores de colas asíncronas, bases de datos SQL y NoSQL. Esto permite acelerar la adopción y reducir los tiempos de adopción. Además de simplificar la administración de las plataformas.

Al trabajar bajo una arquitectura de microservicios, se obtiene el beneficio de trabajar a nivel funcional atómico, es decir se fuerza el desacoplamiento de aplicaciones, con lo cual el esfuerzo de mantener código se reduce drásticamente.

Además, se hace natural enfocar la lógica de negocio con los microservicios y delegar los roles de seguridad, control de acceso y tráfico a un API Management, por lo tanto, se puede paralelizar el desarrollo.

Kubernetes

Kubernetes debe su origen a Google Cloud, ya que fue aquí donde se desarrolló y se publicó como software libre en 2014. Desde entonces, se ha convertido en la solución más popular para gestionar cargas de trabajo en contenedores desde cualquier parte. Esta herramienta te permite orquestar contenedores de forma automática y gestionar máquinas de manera eficiente para mejorar la fiabilidad y reducir el tiempo y los recursos destinados a DevOps.

Kubernetes tiene a sus espaldas 15 años de ejecución de cargas de trabajo en contenedores de Google y recibe valiosas contribuciones de la comunidad de código abierto. Para guiar la evolución de Kubernetes de la mano de esta comunidad, se ha colaborado en la constitución de la Cloud Native Computing Foundation (CNCF).

Kubernetes define un conjunto de bloques de construcción (primitivas) que conjuntamente proveen los mecanismos para el despliegue, mantenimiento y escalado de aplicaciones. Los componentes que forman Kubernetes están diseñados para estar débilmente acoplados pero a la vez ser extensibles para que puedan soportar una gran variedad de flujos de trabajo. La extensibilidad es provista en gran parte por la API de Kubernetes, que es utilizada por componentes internos así como extensiones y contenedores ejecutados sobre Kubernetes .

 

Cápsulas (Pods)

La unidad básica de planificación en Kubernetes se denomina cápsula (“pod” en idioma inglés). Esta agrega un nivel de abstracción más elevado a los componentes en contenedores. Un pod consta de uno o más contenedores en los que se garantiza su ubicación en el mismo equipo anfitrión y pueden compartir recursos. Cada pod en Kubernetes es asignado a una única dirección IP (dentro del clúster) que permite a las aplicaciones utilizar puertos sin riesgos de conflictos. Un pod puede definir un volumen, cómo puede ser un directorio de disco local o un disco de red, y exponerlo a los contenedores dentro del pod. . Los pods pueden ser administrados manualmente a través de la API de Kubernetes, o su administración puede ser delegada a un controlador.

 

Etiquetas y selectores

Kubernetes permite a los clientes (usuarios o componentes internos) vincular pares clave-valor llamados etiquetas (en inglés label) a cualquier objeto API en el sistema, como pods o nodos. Correspondientemente, selectores de etiquetas son consultas contra las etiquetas que resuelven a los objetos que las satisfacen .
Las etiquetas y los selectores son el mecanismo principal de agrupamiento en Kubernetes, y son utilizados para determinar los componentes sobre los cuales aplica una operación .
Por ejemplo, si un pod de una aplicación tiene la etiqueta para un nivel del sistema (“front-end”, “back-end”, por ejemplo) y un release_track (“canary”, “production”, por ejemplo), entonces una operación sobre todos los nodos “back-end” y “canary” podría utilizar un selector de etiquetas como el siguiente17 :
nivel=back-end AND release_track=canary

 

Controladores

Un controlador es un bucle de reconciliación que lleva al estado real del clúster hacia el estado deseado. Hace esto mediante la administración de un conjunto de pods. Un tipo de controlador es un «Replication Controller», que se encarga de la replicación y escala mediante la ejecución de un número especificado de copias de un pod a través de un cluster. También se encarga de crear pods de reemplazo si un nodo subyacente falla. Otros controladores que forma parte del sistema central de Kubernetes incluye al «DaemonSet Controller» para la ejecución de exactamente un pod en cada máquina (o algún subconjunto de máquinas), y un «Job Controller» para ejecutar pods que ejecutan hasta su finalización, por ejemplo como parte de un trabajo batch. El conjunto de pods que un controlador administra está determinado por los selectores de etiquetas que forman parte de la definición del controlador.

 

Servicios

Un servicio Kubernetes es un conjunto de pods que trabajan en conjunto, como una capa de una aplicación multicapas. El conjunto de pods que constituyen un servicio está definido por el selector de etiquetas . Kubernetes provee de un servicio de descubrimiento y enrutamiento de pedidos mediante la asignación de una dirección IP estable y un nombre DNS al servicio, y balancea la carga de tráfico en un estilo round-robin hacia las conexiones de red de las direcciones IP entre los pods que verifican el selector (incluso cuando fallas causan que los pods se muevan de máquina en máquina). Por defecto un servicio es expuesto dentro de un cluster (por ejemplo, pods de un back end pueden ser agrupados en un servicio, con las peticiones de los pods de front end siendo balanceadas entre ellos), pero un servicio también puede ser expuesto hacia afuera del clúster.

Esta tecnología permite el desarrollo de aplicaciones en diferentes lenguajes como Java, Node Js, Net Core.

Abrir chat
¿Necesitas ayuda?
Hola, en qué podemos ayudarte?