¿Cuál es una forma eficiente pero robusta de diseñar una solución de API en la nube? Mi nombre es Whitney Lee y formo parte del equipo de nube de IBM. En este artículo, vamos a hablar sobre los fundamentos de nuestro sistema, y para mí, eso significa el control de versiones.
Índice
El Control de Versiones
El control de versiones, también conocido como un repositorio de artefactos, es la base de nuestro sistema. El control de versiones más popular es Git. En este repositorio, queremos almacenar todos los artefactos relacionados con nuestro sistema final. Por ejemplo, los archivos de configuración del servidor para nuestro entorno de desarrollo, prueba y producción deberían estar almacenados aquí. Además, si estamos construyendo una solución de API, también queremos almacenar los archivos de definición de nuestras API. Podemos tener una definición de API para cada una de nuestras API, desde la API 1 hasta la API 76 (bueno, en realidad solo hasta la API 3).
En nuestro repositorio también definiremos las tareas y ejecuciones de nuestro pipeline de construcción. Esto nos permitirá tener visibilidad y colaboración en equipo. Además, si alguna parte del sistema falla, podremos reconstruirla fácilmente a partir de los archivos de definición almacenados en el repositorio.
Diseñando Nuestro Cluster
Para comenzar a construir nuestro entorno, vamos a crear un clúster de Kubernetes. Al igual que cualquier otro clúster, necesitaremos recursos físicos, como memoria y CPU para nuestros nodos, así como espacio de almacenamiento para nuestras aplicaciones.
Vamos a empezar por construir nuestro entorno de desarrollo en el clúster. Este entorno se construirá según las especificaciones que ya hemos definido en nuestro repositorio. Imaginemos que tenemos un desarrollador trabajando en una nueva API llamada API 4. El desarrollador usa nuestro entorno de desarrollo para trabajar en ella. Cuando el desarrollador considera que la API 4 está lista, activará un pipeline de construcción, enviando el archivo de definición al control de versiones. Esto activará una acción, conocida como web hook, que a su vez disparará el pipeline de construcción.
El pipeline de construcción tendrá varias tareas. Por ejemplo, la primera tarea puede ser verificar si existe un entorno de prueba en nuestro clúster de Kubernetes. Si no existe, la tarea creará uno según las especificaciones definidas en el archivo de configuración del servidor de prueba. Luego, la segunda tarea tomará la API que activó el web hook y la desplegará en el entorno de prueba, ejecutando una serie de pruebas en la API.
Una vez que la API ha pasado las pruebas en el entorno de prueba, está lista para pasar al entorno de producción. Sin embargo, antes de hacerlo, podremos construir un entorno de canary para realizar pruebas adicionales y asegurarnos de que la API esté lista para su despliegue en producción.
El entorno de canary será una réplica exacta del entorno de producción, y nos permitirá enviar un pequeño porcentaje del tráfico real a la API en este entorno. El resto del tráfico continuará yendo al entorno de producción. De esta manera, podemos evaluar el rendimiento de la API en el entorno de canary antes de desplegarla por completo en producción.
Recopilación de registros y métricas
Además de construir y desplegar nuestras API, también es importante recopilar registros y métricas de rendimiento. Podemos recopilar registros y métricas de todos los entornos que hemos construido, y utilizar herramientas como Prometheus o Grafana para analizar y mostrar estos datos de manera comprensible. Estas herramientas nos permiten crear gráficos y extraer información útil para el análisis empresarial.
Diferentes actores estarán interesados en este sistema. Por ejemplo, un analista de negocios querrá ver los gráficos y obtener información de los registros y métricas. Un gerente de operaciones también estará interesado en los registros y métricas, además de la infraestructura como código y el estado técnico del sistema. También podemos tener un arquitecto supervisando el control de versiones y el sistema en su conjunto.
Es importante destacar que esta solución se basa en un clúster de Kubernetes, y que las herramientas mencionadas, como el pipeline de construcción, el balanceador de carga, la recopilación de registros y métricas, son herramientas de terceros que se instalan y mantienen por separado del clúster de Kubernetes.
Una opción adicional es utilizar una plataforma robusta como Openshift, que está construida sobre Kubernetes. Openshift proporciona herramientas integradas de pipeline, balanceadores de carga, recopilación de registros y métricas, y control de acceso basado en roles, entre otros beneficios.
Resumen de la solución
En resumen, esta solución ofrece una forma eficiente y de bajo riesgo de construir y desplegar APIs. El control de versiones nos brinda colaboración, visibilidad y una fuente de verdad para nuestro sistema. El despliegue rápido y la promoción de APIs desde el entorno de desarrollo hasta la producción está respaldada por pruebas exhaustivas en el entorno de prueba y en el entorno de canary. Y, por último, la recopilación de registros y métricas nos permite monitorear y analizar el rendimiento de nuestras APIs.
Preguntas frecuentes
¿Qué es el control de versiones? | El control de versiones es una herramienta que nos permite gestionar y controlar cambios en nuestro código y archivos de configuración a lo largo del tiempo. Git es uno de los sistemas de control de versiones más populares. |
---|---|
¿Cuál es la ventaja de utilizar una canary deployment? | La canary deployment nos permite probar nuestras API en un entorno de producción simulado antes de realizar el despliegue completo. De esta forma, podemos asegurarnos de que las API funcionen correctamente y cumplan con los requisitos antes de exponerlas a un tráfico real. |
¿Por qué es importante recopilar registros y métricas? | La recopilación de registros y métricas nos brinda información valiosa sobre el rendimiento de nuestras APIs. Podemos utilizar herramientas como Prometheus o Grafana para analizar y visualizar estos datos, lo que nos ayuda a identificar y solucionar problemas, así como a tomar decisiones informadas basadas en el análisis empresarial. |
¿Cuáles son los beneficios de utilizar una plataforma como Openshift? | Openshift ofrece una plataforma más completa y robusta en comparación con un clúster de Kubernetes básico. Proporciona herramientas integradas, como pipeline de construcción, balanceadores de carga, recopilación de registros y métricas, y control de acceso basado en roles. Esto simplifica la configuración y el mantenimiento de la infraestructura de la nube. |
Gracias por leer este artículo. Si tienes alguna pregunta, déjanos un comentario. Si quieres ver más contenido como este, no olvides suscribirte a nuestro blog y revisar nuestros artículos relacionados. ¡Hasta la próxima!
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!