Open Source

Onesait Platform en Cloud Native Landscape

La amplia comunidad y el gran número de proyectos open source alrededor del paradigma cloud native hace que sea complicado y confuso saber qué usar en cada momento.

Por ello, la Cloud Native Computing Foundation (CNCF) ofrece desde hace varios años un mapa, el Cloud Native Landscape, que va mostrando todas las soluciones nativas de la nube, muchas de las cuales están bajo su paraguas.

Esto es una pequeña muestra del mapa

La misión del CNCF es fomentar este conjunto de proyectos de código abierto ayudando a proporcionar a las comunidades de usuarios finales opciones viables para crear aplicaciones nativas de la nube, de modo que las organizaciones puedan decidir cómo abordar su camino hacia la nube.

El Cloud Native Landscape actúa como aglutinador de las tecnologías «cloud native» que usan las organizaciones para construir, desplegar y ejecutar sus aplicaciones conforme el paradigma cloud native.

Categorías

El landscape usa estas categorías:

  • App Definition and Development
  • Orchestration & Management
  • Runtime
  • Provisioning
  • Observability & Analysis

Siguiendo el mapa propuesto por CNCF, vamos a mostrar las tecnologías usadas por Onesait Platform, algunas de ellas forman parte del core de la Plataforma, como Kubernetes, mientras que otras son tecnologías opcionales o soportadas en la Plataforma a través de los equipos que operan la Plataforma (como Datadog).

App Definition and Development

Esta categoría corresponde con la capa superior del panorama nativo de la nube del CNCF. Como su nombre indica, la capa de definición y desarrollo de aplicaciones se centra en las herramientas que permiten a los ingenieros crear aplicaciones.

Aquí dentro diferenciamos entre las siguientes subcategorías.

Appication Definition & Image Build

La definición de aplicaciones y la creación de imágenes es una categoría amplia que puede dividirse en dos subgrupos principales. En primer lugar, las herramientas centradas en el desarrollador, que ayudan a crear código de aplicación en contenedores y/o Kubernetes. En segundo lugar, las herramientas centradas en las operaciones que despliegan aplicaciones de forma estandarizada.

Tanto si pretende acelerar o simplificar el entorno de desarrollo, proporcionar una forma estandarizada de desplegar aplicaciones de terceros o si se desea simplificar el proceso de escribir una nueva extensión de Kubernetes, esta categoría sirve como cajón de sastre para una serie de proyectos y productos que optimizan la experiencia del desarrollador y del operador de Kubernetes.

Continuous Integration & Delivery

Las herramientas de integración continua (CI) y entrega continua (CD) permiten un desarrollo rápido y eficaz con garantía de calidad. La integración continua automatiza los cambios en el código construyéndolo y probándolo de inmediato, lo que garantiza la producción de un artefacto desplegable. La CD va un paso más allá, lanzando el artefacto a través de las fases de despliegue.

Los sistemas CI/CD maduros vigilan el código fuente en busca de cambios, construyen y prueban automáticamente el código y, a continuación, empiezan a trasladarlo del desarrollo a la producción, donde tiene que superar una serie de pruebas o validaciones para determinar si el proceso debe continuar o no. Las herramientas de esta categoría permiten este enfoque de integración.

Database

Una base de datos es una aplicación a través de la cual otras aplicaciones pueden almacenar y recuperar datos de forma eficiente. Las bases de datos permiten almacenar datos, así como garantizar que sólo los usuarios autorizados acceden a ellos y permitir que los usuarios los recuperen mediante solicitudes especializadas. Aunque existen numerosos tipos de bases de datos con distintos enfoques, en última instancia todas tienen los mismos objetivos generales.

Streaming & Messaging

Para que todo funcione correctamente, los servicios deben comunicarse entre sí y mantenerse al día. Para ello, cada vez que un servicio hace algo, envía un mensaje sobre ese evento concreto.

Las herramientas de streaming y mensajería permiten la comunicación entre servicios mediante el transporte de mensajes (es decir, eventos) entre sistemas. Cada servicio se conecta al servicio de mensajería para publicar eventos, leer mensajes de otros servicios o ambas cosas. Esta dinámica crea un entorno en el que las aplicaciones individuales son publicadoras, es decir, escriben eventos, o suscriptoras que leen eventos, o más probablemente ambas cosas.

Tecnologías en Onesait Platform

Orchestration & Management

Esta categoría abarca desde el propio Kubernetes, uno de los principales facilitadores del desarrollo nativo de la nube, hasta las capas de infraestructura responsables de la comunicación entre aplicaciones y con el exterior. Intrínsecamente escalables, las aplicaciones nativas de la nube se basan en la automatización y la resiliencia, habilitadas por estas herramientas.

Aquí diferenciamos entre las siguientes subcategorías:

Scheduling & Orchestration

La orquestación y la programación se refieren a la ejecución y gestión de contenedores en un clúster. Un clúster es un grupo de máquinas, ya sean físicas o virtuales, conectadas a través de una red.

Los orquestadores (y programadores) de contenedores son algo similar al sistema operativo de un ordenador. El sistema operativo gestiona todas las aplicaciones, las ejecuta y programa cuándo cada aplicación puede utilizar los recursos de hardware, como la CPU, la memoria y el almacenamiento.

Algo que siempre está presente son los contenedores, ya que su capacidad para ejecutar aplicaciones en muchos entornos diferentes es clave. Los orquestadores de contenedores, en la mayoría de los casos Kubernetes, proporcionan la capacidad de gestionar estos contenedores. Tanto los contenedores como Kubernetes son fundamentales para las arquitecturas nativas de la nube.

API Gateway

Mientras que los usuarios solemos interactuar con los programas a través de una interfaz de usuario, como una página web o una aplicación de escritorio, los ordenadores interactúan entre sí a través de APIs (interfaces de programación de aplicaciones). Pero no hay que confundir una API con una pasarela API.

Una pasarela API permite a las organizaciones trasladar funciones clave, como autorizar o limitar el número de solicitudes entre aplicaciones, a un lugar gestionado de forma centralizada. También funciona como interfaz común para los consumidores de APIs (a menudo externos).

Service Proxy

Un proxy de servicio es una herramienta que intercepta el tráfico hacia o desde un servicio determinado, le aplica cierta lógica y, a continuación, lo reenvía a otro servicio. Básicamente, actúa como un intermediario que puede recopilar la información sobre el tráfico de red y aplicarle aquellas reglas que tengamos definidas.

Esto puede ser tan sencillo como servir de equilibrador de carga que reenvía el tráfico a aplicaciones individuales o tan complejo como una malla interconectada de proxies que funcionan codo con codo con aplicaciones en contenedores individuales que gestionan todas las conexiones de red.

Aunque un proxy de servicio es útil en sí mismo, especialmente cuando se dirige tráfico desde la red más amplia a un clúster Kubernetes, los proxies de servicio también son bloques de construcción para otros sistemas, como las pasarelas API o las mallas de servicio, de las que hablaremos a continuación.

Remote Procedure Call

Se trata de una técnica particular que permite a las aplicaciones hablar entre sí; es una forma de estructurar la comunicación entre las diferentes aplicaciones.

Service Mesh

Las mallas de servicios gestionan el tráfico (es decir, la comunicación) entre servicios. Permiten añadir características de fiabilidad, observabilidad y seguridad de manera uniforme en todos los servicios que se ejecutan en un clúster sin necesidad de realizar cambios en el código.

Junto con Kubernetes, las mallas de servicios se han convertido en algunos de los componentes de infraestructura más críticos de la pila nativa de la nube.

Coordination & Service Discovery

Las aplicaciones modernas se componen de múltiples servicios individuales que necesitan colaborar para proporcionar valor al usuario final. Para colaborar, se comunican a través de una red (véase redes nativas de la nube), y para comunicarse, primero deben localizarse unos a otros. El descubrimiento de servicios es el proceso de averiguar cómo hacerlo.

Tecnologías en Onesait Platform

Runtime

Abarca todo lo que un contenedor necesita para funcionar en un entorno nativo en la nube. Esto incluye el código utilizado para iniciar un contenedor, conocido como tiempo de ejecución del contenedor; herramientas para poner almacenamiento persistente a disposición de los contenedores; y las que gestionan las redes del entorno del contenedor.

Estos recursos no deben confundirse con el trabajo de red y almacenamiento gestionado por la capa de aprovisionamiento, mencionada previamente. Los que se centran en poner en marcha la plataforma de contenedores. Las herramientas de esta categoría se utilizan para iniciar y detener contenedores, ayudarles a almacenar datos y permitir que se comuniquen entre sí.

Las subcategorías existentes son:

Cloud Native Storage

El almacenamiento es donde se guardan los datos persistentes de una aplicación, a menudo denominado como volumen persistente. Para funcionar de forma fiable, las aplicaciones necesitan tener un acceso sencillo al almacenamiento. Por lo general, cuando hablamos de datos persistentes, nos referimos a almacenar cosas como bases de datos, mensajes o cualquier otra información que queramos asegurarnos de que no desaparece cuando se reinicia una aplicación.

Container Runtime

Un contenedor es un conjunto de restricciones informáticas que se utilizan para ejecutar (lanzar) una aplicación. Las aplicaciones en contenedores creen que se están ejecutando en su propio ordenador dedicado y no saben que están compartiendo recursos con otros procesos (de forma similar a las máquinas virtuales).

El tiempo de ejecución del contenedor es el software que ejecuta o restringe las aplicaciones de los contenedores. El tiempo de ejecución iniciará una aplicación dentro de un contenedor y le proporcionará los recursos necesarios.

Cloud Native Network

Los contenedores se comunican entre sí y con la capa de infraestructura a través de una red nativa de la nube. Las aplicaciones distribuidas tienen múltiples componentes que utilizan la red para distintos fines. Las herramientas de esta categoría crean una red virtual sobre las redes existentes específicamente para que las aplicaciones se comuniquen, lo que se conoce como red superpuesta.

Tecnologías en Onesait Platform

Provisioning

El aprovisionamiento es la primera capa del entorno nativo de la nube. Abarca las herramientas que se utilizan para crear y reforzar la base sobre la que se construyen las aplicaciones nativas de la nube. Vamos a encontrar herramientas para configurar, crear y gestionar automáticamente la infraestructura, así como para escanear, firmar y almacenar imágenes de contenedores.

La capa también se extiende a la seguridad con herramientas que permiten el establecimiento y la aplicación de políticas, la autenticación y autorización integradas y la gestión de la distribución de secretos.

Las subcategorías que encontramos aquí son:

Security & Compliance

Las aplicaciones nativas en la nube están diseñadas para evolucionar rápidamente. Para liberar código con una cadencia regular, hay que asegurarse de que el código y el entorno operativo son seguros, y de que sólo acceden a ellos los ingenieros autorizados. Las herramientas y proyectos de esta sección proporcionan algunas de las capacidades necesarias para crear y ejecutar aplicaciones modernas de forma segura.

Key Management

Una clave criptográfica es una cadena de caracteres utilizada para cifrar o firmar datos. Al igual que una llave física, bloquea (cifra) los datos para que sólo alguien con la llave correcta pueda desbloquearlos (descifrarlos).

A medida que las aplicaciones y las operaciones se adaptan a un nuevo mundo nativo de la nube, las herramientas de seguridad evolucionan para satisfacer las nuevas necesidades de seguridad. Las herramientas y proyectos de esta categoría abarcan desde cómo almacenar de forma segura contraseñas y otros secretos (datos sensibles como claves API, claves de cifrado, etc.) hasta cómo eliminar de forma segura contraseñas y secretos de tu entorno de microservicios.

Automation & Configuration

Las herramientas de automatización y configuración aceleran la creación y configuración de recursos (máquinas virtuales, redes, reglas de cortafuegos, equilibradores de carga, etc.). Las herramientas de esta categoría se ocupan de distintas partes del proceso de aprovisionamiento o intentan controlarlo todo de principio a fin. La mayoría ofrece la posibilidad de integrarse con otros proyectos y productos del sector.

Container Registry

Las imágenes contienen la información necesaria para ejecutar un programa (dentro de un contenedor) y se almacenan en repositorios que, a su vez, se clasifican y agrupan en registros. Las herramientas que construyen, ejecutan y gestionan contenedores necesitan acceder a esas imágenes. El acceso se proporciona haciendo referencia al registro (la ruta para acceder a la imagen del contenedor).

Tecnologías en Onesait Platform

Observability & Analysis

La observabilidad es una característica que describe el grado en que un sistema puede comprenderse a partir de sus resultados externos. Medidos en tiempo de CPU, memoria, espacio en disco, latencia, errores, etc., los sistemas informáticos pueden ser más o menos observables. El análisis es una actividad en la que se examinan estos datos observables y se les da sentido.

Para garantizar que no haya interrupciones del servicio, se tendrá que observar y analizar todos los aspectos de su aplicación, de modo que cada anomalía se detecte y rectifique de inmediato.

Se diferencian las siguientes subcategorías:

Monitoring

La monitorización se refiere a la instrumentación de una aplicación para recopilar, agregar y analizar registros y métricas para mejorar nuestra comprensión de su comportamiento.

Mientras que los registros describen eventos específicos, las métricas son una medida de un sistema en un momento dado. La monitorización incluye desde la observación del espacio en disco, el uso de la CPU y el consumo de memoria en nodos individuales hasta la realización de transacciones sintéticas detalladas para comprobar si un sistema o una aplicación responden correctamente y a tiempo. Existen diferentes enfoques para monitorizar sistemas y aplicaciones.

Continuous Optimization

La optimización continua es un proceso permanente de mejora de los sistemas, procesos o productos para alcanzar la máxima eficiencia y rendimiento posibles. Lo podríamos resumir como una búsqueda incesante de la perfección, adaptándose a los nuevos datos y perspectivas en cada momento.

Logging

Las aplicaciones emiten un flujo constante de mensajes de registro que describen lo que están haciendo en un momento dado. Estos mensajes de registro capturan varios eventos que ocurren en el sistema, como acciones fallidas o exitosas, información de auditoría o eventos de salud. Las herramientas de registro recopilan, almacenan y analizan estos mensajes para realizar un seguimiento de los informes de error y los datos relacionados.

Junto con las métricas y el rastreo, el registro es uno de los pilares de la observabilidad.

Chaos Engineering

La ingeniería del caos se refiere a la práctica de introducir intencionadamente fallos en un sistema para probar su resistencia y garantizar que las aplicaciones y comprobar que los equipos de ingeniería son capaces de soportar acontecimientos problemáticos e inesperados. Una herramienta de ingeniería del caos proporcionará una forma controlada de introducir fallos y ejecutar experimentos específicos contra una instancia concreta de una aplicación.

Tracing

En un mundo de microservicios, los servicios se comunican constantemente entre sí a través de la red. El seguimiento y un uso especializado del registro, permite rastrear la ruta de una solicitud a medida que se desplaza por un sistema distribuido.

Feature Flagging

Los indicadores de funcionalidad son un concepto de desarrollo de software que permite activar o desactivar una funcionalidad sin modificar el código fuente ni tener que volver a implementarla. Suelen denominarse interruptores de funciones, interruptores de liberación o interruptores de funciones.

Tecnologías en Onesait Platform

✍🏻 Author(s)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *