Haga que su software sea flexible y escalable… ¿acampando?

Ha sido un minuto caluroso desde que abordamos el lado realmente técnico de las cosas aquí, así que permítanme explicarles una charla reciente con un colega sobre la gestión de sistemas de software complejos.

Uno de los desafíos recurrentes es cómo garantizar que sean confiables y flexibles, esto nos llevó a hablar sobre algunas de las herramientas detrás de las arquitecturas de microservicios. Si no está familiarizado, las arquitecturas de microservicios son múltiples programas más pequeños que juntos ofrecen esos grandes sistemas complejos.

Recientemente he estado trabajando con algunas de estas herramientas, por lo que en esta publicación explicaré cómo pueden trabajar juntas para garantizar que lo que estás creando sea fluido y escalable, con una bonita analogía de acampar.

¿Qué tienen en común la ingeniería y el camping?

Comenzaré con algunas definiciones.

Estibador: Donde empieza. Docker es un programa que le permite organizar su código en microservicios; de aquí en adelante los llamaremos contenedores.

Kubernetes: Esta es una herramienta de código abierto que le permite administrar sus contenedores.

Timón: Aquí es donde todo se junta. Con Helm puedes automatizar la implementación y gestión de tus aplicaciones Kubernetes.

Entrando en un poco más de detalle, un envase es un entorno aislado para su código. Es importante tener en cuenta que esto significa que un contenedor tampoco tiene conocimiento previo de su sistema operativo. Un imagen es una instantánea de este entorno y contiene instrucciones para crear el contenedor. Luego, el contenedor ejecuta su código.

Las imágenes de Docker se construyen a partir de archivos Docker, estos son los archivos de texto que contienen los comandos necesarios para configurarlo. Hay muchos comandos que puede usar en un Dockerfile, incluidos FROM (la imagen base desde la que desea compilar), COPY (archivos que desea copiar de su entorno local al contenedor) y CMD (el primer comando que se ejecuta al iniciar el contenedor).

Ahora imaginemos que vamos de camping. En esta analogía, nuestros contenedores son similares a tiendas de campaña y los Dockerfiles son las listas de equipos necesarios para montar nuestras tiendas de campaña.

DE = estilo/diseño de la tienda, número de puertas con cremallera y número de plazas

COPIAR = el equipo que necesitas en la tienda

CMD = lo primero que haces (hervir la tetera, tomar una siesta, tomar una cerveza y encender las luces)

Verano

Sigamos con nuestra analogía del campamento. Quieres montar un camping glamping. Proporcionarás las tiendas de campaña, montarás tu primera tienda y te gustará cómo queda. Es azul, tiene capacidad para 4 personas y viene con luces de colores que funcionan con energía solar y colchones inflables con ropa de cama. No es alguien que se guarde esto para sí mismo, consigue algunos amigos para que lo prueben y se queden allí antes de abrir el negocio al público. A ellos les encanta y tú decides que tu configuración es perfecta. Duplicas tu configuración para cinco carpas azules más y comienzas a conseguir que los clientes que pagan se queden.


En términos técnicos: por el momento se trata de un grupo de Contenedores acoplablesque usted mismo gestiona.


Otoño

Tu negocio es un éxito. Estás lleno para los próximos 3 meses y decides expandirte. Hasta ahora, el negocio parece ir bien con las carpas instaladas tal como están, por lo que desea otro grupo de carpas, tal vez de un color diferente para que el sitio luzca más estético.

Decides contratar a alguien para que gestione el grupo original de tiendas de campaña azules y a otra persona para que gestione un nuevo grupo de 6 tiendas de campaña de color naranja. Los gerentes son responsables del mantenimiento de las tiendas, asegurándose de que todo el equipo esté disponible y funcionando, y te avisan si no es así. También están capacitados para reconstruir tiendas de campaña si se caen en condiciones climáticas adversas.

Es un arreglo bastante bonito. Los responsables de la tienda son responsables de los detalles de cada montaje. Sólo se desviará de esto si desea cambiar algo. Esto significa que puedes dejarles la configuración de la tienda mientras tú te concentras en el panorama general, como cómo mantener a las vacas del campo vecino fuera de tu área de glamping.


En términos técnicos: Los grupos de tiendas gestionados ahora están Implementaciones de Kubernetes, cada uno de los cuales se administra y mantiene sin su participación a través de un manifiesto de Kubernetes (un archivo YAML donde usted define las características de la implementación). Los manifiestos YAML de ejemplo a continuación definen implementaciones para tiendas de campaña azules y naranjas, 6 de cada una y ambas con capacidad para 4 personas.


Invierno

Ahora estamos en invierno y el clima adverso parece ocurrir con más frecuencia. Los administradores de las tiendas de campaña han estado haciendo un gran trabajo manteniendo en buen estado las 6 tiendas de campaña de sus respectivos grupos. Pero las reservas están disminuyendo y te das cuenta de que no necesitas pagarle a la gente para mantener las 12 tiendas de campaña cuando una parte de ellas están vacías. Le indicas a los administradores de tu tienda que reduzcan el tamaño de sus grupos a 4 cada uno (8 en total).

También recibes varias quejas sobre la calidez de las tiendas. Quizás hayas olvidado que esto es glamping, no camping, y los clientes no esperan una diferencia de temperatura entre una lona y su propia casa. Te das cuenta de que tu configuración inicial puede haber sido perfecta para el verano, pero no lo es tanto para el invierno. Les dices a los encargados de las tiendas que agreguen mantas y edredones a las tiendas. Estos cambios parecen funcionar y las reservas vuelven a estar prácticamente llenas.


En términos técnicos: Los cambios aquí son cosas que cambiaría en el manifiesto de implementación de Kubernetes y volvería a implementar. En el fragmento de YAML a continuación, se agregaron mantas al despliegue de las tiendas de campaña azules.


Primavera

Es primavera y las cosas empiezan a mejorar. Usted ordena a los administradores de las tiendas que aumenten el número de tiendas a 6 cada una en previsión de una avalancha de solicitudes de reserva a medida que las heladas invernales se derritan.

Sin embargo, la demanda del sitio no aumenta con el clima más cálido como se esperaba. Te preguntas qué podrías hacer para animar a los visitantes. Decides empezar a ofrecer conexiones eléctricas y WiFi para las tiendas de campaña. No tiene la experiencia para instalar y mantener esas funciones, por lo que emplea a 2 personas más para administrarlas por usted. Inicialmente estableciste el precio de cada característica en £5 por tienda, por lo que las personas que quisieran electricidad y WiFi pagarían £10.

Funciona: resulta que a la gente le encanta venir a los campos a navegar por Internet en lugar de quedarse en casa. Una vez más estás inundado de solicitudes de reserva y crees que probablemente puedas subir los precios de la electricidad y el WiFi. Les pide a los administradores de servicios que comiencen a cobrar £7,50 por función, £15 por ambas.


En términos técnicos: Los servicios que has añadido son Objetos Kubernetes, como Servicios, Ingress y ConfigMaps. Hay muchos tipos de objetos de Kubernetes que puede agregar a su implementación para que su aplicación esté disponible externamente, aplicar configuración, etc. Estos también se implementan manualmente a través de manifiestos YAML, como el ejemplo de conexión eléctrica a continuación.


Verano (otra vez)

Estás empezando a acostumbrarte a esto del glamping. Te das cuenta de que hay fluctuaciones anuales en popularidad y variaciones predecibles en el mercado. Cada cambio se comunica a los directivos.

Sin embargo, terminas comunicando la misma información a personas distintas. Los administradores de tiendas de campaña a menudo están ocupados haciendo cosas diferentes a los administradores de servicios, por lo que dedica tiempo a perseguirlos para informarles cuántas tiendas de campaña habrá en rotación en las próximas semanas. “Sueno como un loro”, te dices, “si tan sólo pudiera contarle a una persona todas estas cosas”.

Te das cuenta de que los factores que cambian no incluyen todos los aspectos de la instalación de una tienda de campaña o las características del sitio. De hecho, las variables se pueden resumir en un puñado selecto. Para un grupo de tiendas de campaña, el hecho de que estemos hablando de tiendas de campaña en lugar de edificios de ladrillo es una constante. El hecho de que los clientes tengan un toque de queda a las 11 de la noche nunca cambia y el hecho de que las tiendas de campaña no incluyen baños nunca cambia.

El número de camas puede cambiar, el estilo de las tiendas de campaña puede cambiar y el grosor de la ropa de cama proporcionada depende de la temporada. Por lo tanto, podría instruir a casi cualquier persona para que transmita esta información a los administradores de la carpa y de las funciones. Si desea cambiar algo, dejará una hoja de papel en su escritorio informándoles de los pocos ajustes que desea realizar en el sitio.

Es mucho más fácil ahora que sólo tienes que preocuparte por un solo archivo, en lugar de mantener y considerar cada detalle de cada tienda y característica del sitio que configuraste minuciosamente. Tienes mucha más capacidad para concentrarte en el panorama general, como si un bollo tiene mermelada y luego crema o crema y luego mermelada.


En términos técnicos: Esta capa adicional de gestión es lo que Timón proporciona. En lugar de manifiestos individuales para cada objeto de Kubernetes que debe implementar usted mismo, y los factores se pueden modificar a través de un único archivo YAML (siempre llamado ‘values.yaml’), puede implementar una aplicación completa con un solo comando, revertir con un solo comando. , actualizar o eliminar con un solo comando.

Todos los objetos de Kubernetes (que en algunas aplicaciones pueden ser decenas o cientos) se controlan fácilmente y como grupo en lugar de individualmente. Aún puedes interactuar con ellos a un nivel más granular, pero no tener a. El YAML de ejemplo siguiente muestra un archivo de valores para las implementaciones de tiendas de campaña naranja y azul. Los factores variables clave se definen en este archivo y se incluyen en la plantilla del gráfico Helm.


Valores.yaml implementación.yaml

Reflexionando sobre tu éxito

En algún momento del futuro, te sentarás en tu tumbona y reflexionarás sobre lo lejos que has llegado. Ahora eres dueño del campo de vacas vecino y del que está más allá, mantienes a las vacas en tu propio jardín y puedes rotar tus tiendas de campaña alrededor de los campos dependiendo de su nivel de barro. Le pidió al administrador de su sitio que aumentara la capacidad y contrató a 4 administradores de grupos de tiendas de campaña más. Un nuevo gerente de servicio está a cargo de la rotación semanal de alimentos: los lunes sin carne, los miércoles con pizza y los viernes con pescado y patatas fritas.

Todo el sitio está bien establecido, pero es configurable mediante un único punto de comunicación. Todos los directivos están abiertos a los cambios y son lo suficientemente flexibles para llevarlos a cabo. Si el administrador del sitio dijera «sitio cerrado», todos traerían sus tiendas de campaña. Si el administrador del sitio dijera «los cambios más recientes no han afectado nuestros márgenes de ganancias, estamos retrocediendo», los administradores de tiendas y funciones volverían cualquier modificación que se acabara de hacer. Sientes que puedes controlar fácilmente este negocio y que todos están mejor gracias a ello: ¡un gran éxito!

De hecho, crees que probablemente podrías manejar uno o dos más de estos…

Ahí lo tienes. Usar Docker, Kubernetes y Helm en armonía puede ser así de sencillo. Y además, ¡su software ahora es confiable y escalable! Puede realizar cambios más pequeños que contribuyan a su panorama general y el tiempo de inactividad es limitado. La próxima vez que esté considerando una arquitectura de microservicios, piense en cómo las herramientas detrás de ellos pueden unirse para funcionar para usted.

Si desea mantenerse actualizado con todas nuestras últimas publicaciones de blog, estudios de casos y próximos eventos, suscríbase a nuestro boletín mensual Made Tech Insights.

Sobre el Autor

Anna sonríe a la cámara, tiene el pelo más rubio y lleva un jersey blanco.


Source link

About David Lopez

Informático y experto en redes. Redactor en varios blogs tecnológicos desde hace 4 años y ahora en Steamachine.net

Check Also

Mejores prácticas y errores comunes

React Native es un marco ampliamente adoptado para desarrollar aplicaciones móviles multiplataforma. Eso permite empresas …

Deja una respuesta

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