Docker como herramienta para la modernización de aplicaciones tradicionales

DevOps

Docker como herramienta para la modernización de aplicaciones tradicionales

No es ningún secreto para nadie que  en los  últimos 2 años Docker se ha convertido en una herramienta fundamental en cuanto tecnología de contenedores, esto ha sido un resultado de la comunidad y clientes activos que favorecen la modernización de aplicaciones tradicionales con tecnología de contenedores. 

Dichas aplicaciones benefician típicamente a aquellas aplicaciones del tipo monolíticas y que corren sobre sistemas operativos como lo son Windows Server 2008 o Windows Server 2003, en los cuales son difíciles de realizar el traslado de los centros de datos o la nube.

La plataforma Docker permite resolver todos esos puntos de inflexibilidad,  desacoplando la aplicación de un sistema operativo, todo ello mediante patrones de arquitectura de microservicios los cuales favorecen la portabilidad a través de las instalaciones, cloud y ambientes híbridos

Docker ha invertido en herramientas y métodos para agilizar la transmisión de contenedores y al mismo tiempo disminuir el tiempo necesario para experimentar un valor superior por parte de la plataforma.

Descubrimiento y evaluación de aplicaciones 

Los desarrollos empresariales mantienen un gran portafolio de aplicaciones, dichas aplicaciones cuentan con diferentes lenguajes, idiomas y marcos de arquitectura desarrollado por terceros. El primer paso se requiere al implementar Docker es determinar cuáles aplicaciones cumplen con los parámetros para ser contenida así como determinar  dónde iniciar cada proceso.

El primer paso común es seleccionar la aplicación más compleja y sofisticada para ser contenida; la razón principal es el razonamiento de complejidad, asumiendo que si es posible contener una aplicación robusta, las aplicaciones que tienen menor peso responderán de la misma manera.

Para aquellas organizaciones nuevas la implementación de Docker suele ser un poco difícil debido en gran medida por la curva de aprendizaje, una aproximación prudente es el acercamiento al proceso de contenedores con aplicaciones menos complejas, lo cual permite alinear los objetivos y las metas, este proceso fomenta las habilidades del equipo, incrementando su experiencia para posteriores proyectos de mayor complejidad.

De igual manera Docker ha desarrollado una serie de arquetipos que permiten agrupar   aplicaciones similares basadas en características de arquitectura, con el fin de estimar la complejidad que requiere a la hora de ser contenidas.

Evaluar los portafolios de aplicaciones con cada uno de los arquetipos beneficia al proceso de estimación de nivel de dificultad,  así como la rápida selección de los candidatos más idóneos para ser contenidos en cada proyecto. Existen diversos métodos para la evaluación como lo son:

  • Evaluación manual de cada una de las aplicaciones.

Este método funciona bien con un pequeño número de aplicaciones, sin embargo es complicado realizarlo en entornos escalables (más de 100 aplicaciones)

  •  Configurar un (CMDBs) Configuration Management Databases 

Cuando se aplica en una organización es una poderosa herramienta que provee información detallada acerca del ambiente como lo son características y arquetipos relacionados.

  • Herramientas automatizadas como RISC Networks, Movere, BMC Helix Discovery

Son herramientas de terceros que ofrecen información detallada sobre los ambientes de  los centros de datos (data center), monitoreando la información durante un periodo de tiempo y generando reportes, dichos reportes pueden ser  utilizados en el proceso de contener  aplicaciones y a su vez permite conocer la carga de trabajo que implica.

Automatización de contenedores

Construir un contenedor para aplicaciones tradicionales puede presentar muchos retos, alguna de las razones habituales que se presentan es que el desarrollador original  de la aplicación ya no está trabajando más en el proyecto o en el equipo, lo cual dificulta el proceso de entender cuál es la lógica de la aplicación o como fue construida, el código fuente no está disponible o las aplicaciones se ejecutan en máquinas virtuales sin activos, por ello la escalabilidad de los esfuerzos de contener docenas o ciento de aplicaciones requieren de mucha más tiempo.

Debido a esas particulares necesidades Docker cuenta con herramientas que ayudan al usuario, que a su vez forman parte de Docker Enterprise Platform, esta herramienta ha sido desarrollada para automatizar  y generar archivos “Dockerfiles” para aquellas aplicaciones que corren sobre un maquina virtual o un servidor. Los servidores son escaneados para determinar cómo es el sistema operativo así como su configuración, como los servicios web  están configurados y como el código está corriendo. Todos los datos son unidos dentro de un DockerFiles y el código de la aplicación es puesto dentro de un directorio el cual está listo para ser implementado en un moderno sistema operativo, por ejemplo, un Windows Server 2003 puede ser escaneado para generar DockerFiles para aplicaciones IIS-Based.Net que se ejecutan en grupos de aplicaciones IIS Pools. Esta manera de trabajo y automatización permite cambiar de ser un autor a convertirse en un editor, disminuyendo significativamente el tiempo y esfuerzo que se invierte en realizar contenedores tradicionales de aplicaciones. 

Gestión de Cluster

Correr contenedores sobre un único servidor  puede ser suficiente para un solo desarrollador, sin embargo  un cluster que tiene servidores trabajando en conjunto requiere de sistemas de contenedores, históricamente la creación y administración de este tipo de clusters son controlados por un servidor público en la nube, vinculando a los usuario para que pueda utilizar la infraestructura.

Un nuevo Docker CLI Plugin, llamado “Docker Cluster”  es incluido en el paquete de Docker Enterprise 3.0, Docker Cluster  simplifica la  creación inicial de Docker Enterprise consumiendo un archivo declarado YAML, el cual automáticamente provee y configura los recursos de la infraestructura. Los Clusters tal vez utilizan una variedad de infraestructuras, incluyendo Azure, AWS, and VMware, con el fin de mantener plataformas de contenedores idénticas  en cada una de sus infraestructuras  objetivo.

A su vez agrega flexibilidad y disminuye las necesidades de elegir un único proveedor, permitiendo a su vez utilizar entornos multi-clound, entornos híbridos y provee la opción de  desplegar contenedores ya sea los orquestadores Kubernetes o Swarm.

Más allá de la herramienta de automatización, docker también ofrece  detalles específicos sobre la infraestructura, referentes a la arquitectura la cual  incluye un catálogo de las mejores prácticas para varios proveedores, dichos documentos ofrecen una guía exhaustiva sobre la implementación de Docker Enterprise adicionalmente a la herramienta CLI.

En conclusión, el proceso de crear contenedores ha sido ampliamente simplificado por Docker Enterprise mediante soluciones como Docker Cluster, Solution Briefs y Reference Architectures, estas herramientas le permiten  enfocarse en el proceso de contener aplicaciones heredadas en lugar de invertir tiempo adicional en la configuración de un clúster de contenedores.

Deja un comentario