Contenedores: actualmente las conversaciones no refieren a si algo sucederá, sino a cómo sucederá

ericsakowski

Containers: Conversations Today Are No Longer If, But How

Recientemente, le pedí al portavoz de una empresa que describiera su estrategia de contenedores y me dije que aún no tenían una, “pero no importa, porque la competencia está a años luz de esta tecnología”.

Espero que esta suposición incorrecta no sea común, porque podría ser costosa para quienes la sostienen. Como director de transformación de aplicaciones en Rackspace, mi equipo está trabajando con muchos clientes, algunos en la misma verticalidad que el portavoz presuntuoso, en varias etapas de la adopción de contenedores.

La verdad es que la adopción de contenedores está firmemente en marcha; Gartner estima que 75% de las compañías globales usarán contenedores para la producción en los próximos dos años. Y, ¿por qué no lo harían?

Los contenedores imponen la modularización y requieren automatización en un grado en el que agregar una característica o corregir un error tipográfico es tan fácil como confirmar el código para controlar la fuente y observar cómo la tubería automatizada ejecuta la construcción con, por supuesto, análisis de código estático, pruebas unitarias, además de pruebas de aceptación automatizadas e implementación para producción.

Los contenedores permiten soluciones multinube y de nube híbrida

El otro beneficio importante, por supuesto, es que los contenedores permiten el enfoque de nube híbrida cada vez más popular que los directores de información están adoptando. La tasa anual de crecimiento compuesto de la nube híbrida de 27% refleja su capacidad para ofrecer mayor flexibilidad y eficacia, además de preferencias de seguridad, requisitos de cumplimiento de normas y necesidades de soberanía de datos.

Sin embargo, con esa combinación de plataformas, la implementación puede ser engorrosa, ya que los scripts orientados a una nube pública en particular no funcionarán en una huella dedicada. Con los contenedores, esa implementación es incluso mejor. Después de todo, un punto final de la API de Kubernetes se ve exactamente igual tanto en la nube pública como privada. (Si bien hay  muchas opciones para los orquestadores de contenedores, sin duda, el favorito es Kubernetes, por lo que utilizaré esa tecnología en el resto de este artículo). Una vez que tiene Kubernetes implementado sobre la infraestructura física o en la nube, realmente ofrece el potencial de las implementaciones de aplicaciones multinube: mayor portabilidad, flexibilidad, agilidad y velocidad.

Las actuales preguntas relacionadas con contenedores se centran en el cómo

Debido a que actualmente muchos clientes entienden estos beneficios, la mayoría de las conversaciones que yo y mi equipo tenemos son sobre los aspectos básicos del uso de contenedores; he reunido respuestas a algunas de las preguntas más comunes que escuchamos:

¿Cómo capacito a mi equipo sobre contenedores?

No hay una única respuesta correcta para esto, pero hay algunos enfoques principales. Considere llevar a un consultor o capacitador profesional. Aunque la mayoría de los programadores son capaces de aprender por su cuenta utilizando YouTube y guías como “Kubernetes the Hard Way”, puede ser difícil alejarse de las escaladas diarias y las correcciones de errores P1 para enfocarse en algo nuevo. Contar con un plan de capacitación formal con un programa fijo puede ayudar al equipo a enfocarse en ella y brindarles una herramienta para retrasar las escaladas mientras aprenden. Considere dedicar parte del equipo a capacitarse mientras el resto del equipo mantiene las cargas de trabajo heredadas, y turne a los recursos para recibir la capacitación según un calendario si es posible.

Mi aplicación monolítica tiene demasiada deuda técnica para ir a los contenedores

Esta es una preocupación común vinculada al método de desarrollo de software en cascada y puede superarse con un poco de codificación y arquitectura creativas. Los microservicios no tienen que implementarse todos juntos de forma masiva. Se pueden construir uno por uno e implementarse cuando estén listos. Es posible que se necesite construir un puente de software para llegar allí; por ejemplo, si la aplicación heredada usa una base de datos central como almacén de datos y capa de mensajería, comience a atacar eso primero. Diseñe y cree una capa de acceso a datos y comience a refactorizarla para usar una cola de mensajes, como RabbitMQ o AWS SQS, en lugar de la base de datos. Necesitará DAL y MQ una vez que llegue a Kubernetes, de todos modos. Llegar a los contenedores puede requerir un plan de múltiples fases. Determine qué pasos debe seguir para llegar a los contenedores y comience a crear su hoja de ruta.

Seguridad y Cumplimiento de normas no permitirá que mi equipo haga implementaciones más de una vez por semana; ¿cómo los hago cambiar de opinión?

Una de las desventajas de las implementaciones más rápidas y fáciles es que también es más fácil implementar una vulnerabilidad. Involúcrese pronto con su equipo de seguridad y trabajen en conjunto para diseñar una estrategia y una implementación que los haga sentir cómodos con un enfoque más ágil hacia las implementaciones. Es absolutamente necesario un enfoque “shift left” para las pruebas y la seguridad cuando se usan contenedores. El análisis de código estático con herramientas, como Veracode, los escaneos de imágenes con herramientas, como Clair, y la integración de seguridad de CI/CD con herramientas, como Twistlock o Stackrox, pueden ayudar a mitigar su riesgo. Tenga un plan en marcha sobre cómo su equipo aplicará parches en los nodos maestro y esclavo en caso de un ataque de día cero. Twistlock, Aquasec y Stackrox tienen mecanismos incorporados que ayudarán a proporcionar controles de compensación hasta que usted pueda reparar todo. Incorporar estas herramientas significa que su negocio, datos y cargas de trabajo están más seguros.

El equipo de desarrollo está realizando las pruebas finales y las aplicaciones se implementan en Kubernetes. ¿Ahora qué sigue? ¿Cómo puedo saber si está funcionando?

 Los programadores con visión de futuro a veces pueden tomar decisiones tecnológicas que hacen a Operaciones pasar mucho tiempo tratando de descubrir cómo soportar el nuevo tiempo de ejecución. Kubernetes es una tecnología relativamente nueva y el ecosistema a su alrededor es dinámico y crece a un ritmo muy rápido, lo que conduce a un número mayor que el promedio de ataques de día cero y una creciente lista de vulnerabilidades. Es importante saber cómo monitorear y asegurar el tiempo de ejecución, y hay una gran variedad de empresas y productos para elegir. Las herramientas de monitoreo, como Prometheus, requieren un poco de inversión por parte de los programadores, mientras que establecer al estilo tradicional de operaciones TI algo de espacio en disco y umbrales de uso de CPU en Nagios y considerarlo un día extraordinario es insuficiente.  La recompensa por el tiempo invertido en el monitoreo de la pila completa es mayor, ya que el equipo de Operaciones y Desarrollo tiene una visión más profunda y puede responder más rápido a los problemas.

Mis aplicaciones están en contenedores, mis cargas de trabajo están seguras y todo está automatizado. ¿Puedo sentarme y relajarme ahora?

 Quizás, por un minuto. La verdad es que no puede detenerse ni una sola vez después de que haya superado los desafíos mencionados anteriormente. Kubernetes es un habilitador de tecnología increíble, pero aún es nuevo y está creciendo y, como mencioné anteriormente, viene con una brecha de habilidades considerable. Su mejor opción es crear planes de automatización como parte de su estrategia general y planificación de recursos. Por ejemplo, tenga un plan listo para que su próxima nueva contratación aprenda Kubernetes y, lo que es más importante, la pila de contenedores y la cadena de herramientas de su empresa, durante la incorporación.

Haga preguntas para la entrevista que evalúen la capacidad de un candidato para aprender nueva tecnología rápidamente, porque es probable que no encuentre (o no pueda pagar) a un programador experimentado de Kubernetes circulando libremente. Esté abierto a los recursos remotos si decide que necesita a ese experimentado experto en Kubernetes, porque puede que no haya nadie disponible en su área local. También es posible que desee considerar incentivos de retención para mantener a los empleados que mejoran en Kubernetes y su pila de contenedores específicos.

Y recuerde, Kubernetes es un ecosistema en desarrollo; su equipo necesitará tiempo de I+D integrado en su semana laboral para mantenerse actualizado y experimentar con nuevas herramientas a medida que estén disponibles. Planifique una revisión de su pila de contenedores y la estrategia de la cadena de herramientas al menos dos veces al año para asegurarse de mantenerse al día con el ecosistema de contenedores.

Hablemos de contenedores en KubeCon

Para tener más información sobre cómo pueden los expertos de Rackspace ayudar a su empresa en cuanto a su estrategia de contenedores y hablar sobre cómo podemos ayudar a resolver los anteriores desafíos, visítenos en KubeCon, en el stand S60.

También puede obtener información acerca de nuestro enfoque para la modernización en nuestro sitio web y descargar nuestra ficha técnica de habilitación de contenedores.