6 factores a considerar cuando se despliegan contenedores
- Gestión de apps
Los contenedores son potentes con su amplitud de capacidades y la facilidad con la que puede proporcionar aplicaciones o servicios. Irónicamente, si bien el objetivo de los contenedores es reducir las partes móviles por simplicidad y eficiencia, existen múltiples consideraciones complejas detrás de la escena, que deben ser atendidas para poder beneficiarse de sus implementaciones.
En el espacio empresarial, es importante tener en cuenta factores que incluyen (pero no se limitan a) los seis conceptos a continuación.
1. Rendimiento
Los desarrolladores generalmente no piensan en los problemas potenciales desde una perspectiva de rendimiento, pero solo porque puede acceder a una aplicación con su navegador web no significa que manejará una gran cantidad de transacciones simultáneas. No sabrá qué tan bien se maneja hasta que realmente se ponga a prueba.
Kubernetes puede escalar, pero también consume una tonelada de recursos al hacerlo. Los contenedores ayudan con los problemas de arquitectura y se aseguran de que existan todas las dependencias necesarias, pero no aplica automáticamente el rendimiento después de que se haya implementado.
La calidad de los tiempos de ejecución del lenguaje subyacente, los servidores web y las bibliotecas como openssl tienen un efecto en el rendimiento. Asegúrese de que su distribución de Linux tenga un grupo proactivo de ingenieros de rendimiento que prueben regresiones y, lo que es más importante, que optimicen el rendimiento de toda la pila.
2. Compatibilidad
En el mundo de Linux se ejecutan diferentes programas en un núcleo. La mayoría de los programas utilizan la capa syscall, una API que interactúa con el kernel. Cuando se adhiere a la capa syscall en Linux, la compatibilidad hacia adelante funciona bastante bien.
Existen límites temporales y espaciales para la compatibilidad. Buen diseño y pruebas pueden ayudar aquí. La distribución de Linux para la imagen del contenedor y el host debe considerar estos problemas en profundidad, o los usuarios quedarán atrapados en un estado roto. Esto es cierto en la capa del núcleo, la capa del compilador (gcc) y la capa de la biblioteca (glibc), así como las API que están fuera de la interfaz syscall.
3. Integración con infraestructura existente
El ecosistema de hardware y software, que es soportable, se puede asignar a la distribución de Linux subyacente. Si necesita soporte ARM tiene que tenerlo. Piense en la compatibilidad, esto se aplica al host del contenedor para hardware y la imagen del contenedor para el software.
4. Seguridad
Similar al rendimiento, la seguridad no es algo que pueda resolverse con "funciona en mi computadora portátil". Una vez que se pone en producción una imagen de contenedor, expondrá su aplicación y todas sus dependencias a todos los peligros de Internet. Esto incluye ataques de denegación de servicio, violaciones de datos, imágenes de troyanos y piratería. Todas estas cosas deben considerarse al seleccionar Imágenes de contenedor y Hosts de contenedor para su entorno de contenedor.
Conocer la calidad de sus componentes es crucial desde una perspectiva de seguridad; Siempre use una fuente de confianza. Determine por qué confía en ellos: ¿es la calidad del código, los parches, etc.? Tenga en cuenta que un contenedor puede ser bueno el día que lo descargó, pero ¿qué pasará en tres años?
5. Tamaño
Los contenedores hacen muchas compilaciones, por lo que la compilación cada vez que se reconstruye el contenedor (lo que es común con los programas C y GoLang) son tendencias comunes. Compila de forma estática en el binario y corre con él para construir contenedores de borrador: compile todo lo que necesita en un binario y envíelo.
Al crear un ecosistema completo de software para uso dentro de una empresa, es más importante pensar en el tamaño de toda la cadena de suministro (todos los paquetes de RPM y sus dependencias) porque las capas base a menudo se pueden compartir y almacenar en caché. Reducir la superficie de ataque consiste en reducir la huella en todo el entorno mediante la reducción de copias duplicadas de bibliotecas y tiempos de ejecución de idiomas.
6. Apoyo
El soporte viene en dos formas principales: soporte de ciclo de vida y guante blanco.
El ciclo de vida es lo que gobierna la cantidad de tiempo, qué parches estarán disponibles para cualquier paquete dado (RPMs o Debs) dentro de una imagen de contenedor.
El soporte de guante blanco es lo que le permite archivar tickets, obtener revisiones y abogar por los cambios en sentido ascendente.
Ambos son extremadamente importantes dependiendo de la cantidad de tiempo que soportará sus aplicaciones en contenedores (sugerencia: más de lo que cree).
Descubre la innovación
Para asegurar el éxito empresarial, ahora y a futuro, es imprescindible maximizar el retorno de la inversión existente en software, a la vez que innovar y adoptar nuevas tecnologías. Los retos que hay abordar para competir en un mundo de TI Híbrida incluyen DevOps, Seguridad, Gestión de riesgos y Análisis predictivo. Puedes obtener más información sobre cómo abordar estos retos e innovar en este enlace.