¿Siguen siendo relevantes los contenedores?





Cuando se habla de iniciar un nuevo proyecto o desarrollar una hoja de ruta para un proyecto existente, las opciones sobre cómo ejecutar cargas de trabajo nunca han sido más extensas. Vivimos en una era arruinada por una variedad de plataformas: puede elegir entre herramientas de código abierto, servicios pagos, productos empresariales y muchas otras cosas. Debido a esto, se hizo más difícil tomar una decisión de elección: las posibilidades de tener "parálisis de elección" aumentan con el aumento de opciones. En tales circunstancias, es justo hacer la pregunta: ¿los contenedores siguen siendo una opción razonable ahora y en el futuro, o ya los hemos superado? Para responder a esta pregunta, debe considerar alternativas y compararlas con los contenedores.



Sin servidor



El siguiente paso lógico después de los contenedores son las soluciones sin servidor. Los servicios como AWS Lambda y Google Cloud Functions facilitan la operación de aplicaciones sin servidor, especialmente aquellas que son impulsadas por eventos por naturaleza. Cuando considera la simplicidad de trabajar con marcos de aplicaciones como Serverless Framework, obtenemos un flujo de trabajo simple, impulsado por el desarrollador, que le permite pasar de la idea a la producción en muy poco tiempo. Este flujo de trabajo puede ser excelente para crear prototipos de API o desarrollar rápidamente nuevas funciones para productos existentes. Una de las mayores fortalezas de la arquitectura sin servidor (especialmente cuando se ejecutan aplicaciones en un proveedor de nube pública como AWS) es que solo paga por los recursos informáticos utilizados activamente;es decir, no paga por un sistema simple. A largo plazo, esto puede proporcionar ahorros de costos significativos en comparación con la arquitectura "siempre encendida", pero solo bajo ciertas condiciones. Existe un umbral después del cual el costo de ejecutar una aplicación en un entorno sin servidor aumenta y el rendimiento es menor en comparación con la misma aplicación que se ejecuta en una máquina virtual dedicada, donde no paga por llamar a la aplicación, sino por la tarifa por hora. Comparemos sin servidor con contenedores:donde se paga no por llamar a la aplicación, sino por la tarifa por hora. Comparemos sin servidor con contenedores:donde se paga no por llamar a la aplicación, sino por la tarifa por hora. Comparemos sin servidor con contenedores:



:



  • ( )


:



  • ,
  • ,


Platform-As-A-Service (PaaS)



Similar a sin servidor, pero tiene sus propias características únicas de plataforma como servicio (PaaS) como Heroku y CloudFoundry. Por lo general, PaaS se diferencia de los servidores sin servidor en que están diseñados para servicios "siempre en ejecución" en lugar de para servicios controlados por eventos, pero son similares a ellos en que, al igual que los servidores sin servidor, proporcionan flujos de trabajo convenientes para los desarrolladores. Internamente, la mayoría de estas soluciones ejecutan su código en contenedores, pero la mayoría de ellos se extraen del usuario, por lo que a menudo se colocan como "paquetes de compilación": contenedores listos para usar con ciertas características o paquetes dependientes del idioma instalados en ellos. Es esta abstracción lo que hace que los productos PaaS sean convenientes: todos los aspectos problemáticos de ejecutar una aplicación en producción se abstraen del usuario.Sin embargo, esto también puede ser una de las desventajas de PaaS: puede ser difícil liberar aplicaciones de plataformas PaaS y moverlas a otra plataforma si es necesario. Además, en algunas plataformas no completamente maduras, la integración nativa con servicios externos (bases de datos, cachés, colas, etc.) puede ser limitada o ausente, lo que limita significativamente las opciones de arquitectura. Además, la abstracción y la facilidad de uso tienen un precio: las plataformas PaaS tienden a ser más caras que las IaaS de bricolaje como AWS o GCP.cachés, colas, etc.) pueden estar limitados o ausentes por completo, lo que limita significativamente las opciones de arquitectura. Además, la abstracción y la facilidad de uso tienen un precio: las plataformas PaaS tienden a ser más caras que las IaaS de bricolaje como AWS o GCP.cachés, colas, etc.) pueden estar limitados o ausentes por completo, lo que limita significativamente las opciones de arquitectura. Además, la abstracción y la facilidad de uso tienen un precio: las plataformas PaaS tienden a ser más caras que las IaaS de bricolaje como AWS o GCP.



:





:





No-Code



Las soluciones sin código se están volviendo más populares como un medio para hacer crecer rápidamente una startup, especialmente entre los organizadores no técnicos. La capacidad de crear una plataforma web completa sin tener que aprender a codificar es atractiva, y para aquellos que no saben codificar, incluso es necesaria. Las soluciones modernas sin código difuminan los límites de la intersección de los procesos comerciales y el software; La lógica empresarial que en el pasado podía tardar semanas en desarrollarse ahora se puede crear en minutos u horas en la plataforma sin código. Una vez más, esto puede ser un gran éxito para personas o grupos no técnicos, pero ¿este enfoque se aplica generalmente al desarrollo de software? Paradigmicamente, las soluciones sin código son similares a las sin servidor en que ambos conceptos funcionan en un modelo de gestión basado en eventos,sin embargo, las soluciones sin código tienen un defecto importante que las otras plataformas de nuestra lista no tienen: están demasiado vinculadas al proveedor de la solución. Por el momento, no conozco ninguna plataforma que le permita transferir una aplicación sin código de una plataforma a otra. Si decide escribir su aplicación base en Microsoft Power Automate o Zoho Creator, permanecerá allí hasta que la reescriba en otra cosa.



:



  • ,


:







Entonces, ¿dónde están los contenedores entre todas estas tecnologías? Tiendo a pensar en los contenedores como bloques de construcción fundamentales de la arquitectura, como pequeñas piezas de una aplicación que no tiene sentido separar. Independientemente de si está ejecutando microservicios o un monolito completo dentro de contenedores, el contenedor debe ser la cantidad más pequeña de código que se puede implementar manteniendo su funcionalidad. En el nivel más simple, los contenedores son solo un subconjunto de la funcionalidad del kernel. Las características como el aislamiento de recursos, la limitación de la red y similares que forman parte del sistema operativo Linux se han rediseñado para facilitar su uso por parte de las personas. Es perfectamente posible iniciar un proceso y administrarlo usando cgroups, redes virtuales, iptables y otras funciones que imitan el contenedor Docker, sin embargo, tales aplicaciones,cómo Docker y Podman facilitan el uso de estas funciones para que no tenga que hacerlo todo a mano. Es este uso de las funciones del kernel lo que proporciona portabilidad a los contenedores. Si tiene una máquina Linux con un kernel bastante moderno, puede ejecutar casi cualquier contenedor sin ningún problema. Sin embargo, esta simplicidad tiene un precio, y el costo es la complejidad de la operación. Para implementar la producción, no es suficiente simplemente implementar un contenedor en una VM desnuda. Para una implementación "correcta", necesitará algún tipo de administración de contenedores que agregue complejidad y costo operativo. Sin embargo, a pesar de la mayor complejidad, los contenedores lo compensan con su flexibilidad y portabilidad.Es este uso de las funciones del kernel lo que proporciona portabilidad a los contenedores. Si tiene una máquina Linux con un kernel bastante moderno, puede ejecutar casi cualquier contenedor sin ningún problema. Sin embargo, esta simplicidad tiene un precio, y el costo es la complejidad de la operación. Para implementar la producción, no basta con implementar un contenedor en una VM desnuda. Para una implementación "correcta", necesitará algún tipo de administración de contenedores que agregue complejidad y costo operativo. Sin embargo, a pesar de la mayor complejidad, los contenedores lo compensan con su flexibilidad y portabilidad.Es este uso de las funciones del kernel lo que proporciona portabilidad a los contenedores. Si tiene una máquina Linux con un kernel bastante moderno, puede ejecutar casi cualquier contenedor sin ningún problema. Sin embargo, esta simplicidad tiene un precio, y el costo es la complejidad de la operación. Para implementar la producción, no basta con implementar un contenedor en una VM desnuda. Para una implementación "correcta", necesita algún tipo de administración de contenedores que aumente la complejidad y los costos operativos. Sin embargo, a pesar de la mayor complejidad, los contenedores lo compensan con su flexibilidad y portabilidad.y este precio es la complejidad de la operación. Para implementar la producción, no es suficiente simplemente implementar un contenedor en una VM desnuda. Para una implementación "correcta", necesitará algún tipo de administración de contenedores que agregue complejidad y costo operativo. Sin embargo, a pesar de la mayor complejidad, los contenedores lo compensan con su flexibilidad y portabilidad.y este precio es la complejidad de la operación. Para implementar la producción, no es suficiente simplemente implementar un contenedor en una VM desnuda. Para una implementación "correcta", necesitará algún tipo de administración de contenedores que agregue complejidad y costo operativo. Sin embargo, a pesar de la mayor complejidad, los contenedores lo compensan con su flexibilidad y portabilidad.



Pros:



  • Flexibilidad, portabilidad
  • La arquitectura siempre activa permite diferentes tipos de paradigmas
  • Facilidad de pruebas y desarrollo locales


Desventajas:



  • La producción requiere la gestión de contenedores
  • El uso de la computación en modo "siempre encendido" puede costar más que sin servidor, pero depende de la carga
  • Se requiere más trabajo para prepararse para la producción


Conclusión



Si bien su elección personal puede depender mucho de la aplicación y la carga de trabajo, mi conclusión es muy simple: los contenedores siguen siendo muy relevantes y lo seguirán siendo durante mucho tiempo. A pesar de la mayor complejidad, su portabilidad y nivel de control permiten a los ingenieros hacer exactamente lo que quieren sin tener que realizar ingeniería inversa en una solución basada en algo como Heroku.






Con nuestros servidores en la nube , puede implementar sus contenedores Docker sin problemas. ¡Este es solo uno de los millones de desafíos que puede lograr con MacLeod !

Regístrese usando el enlace de arriba o haciendo clic en el banner y obtenga un 10% de descuento durante el primer mes de alquiler de un servidor de cualquier configuración.






All Articles