RETROSPECTIVA 3HTP – AWS IMMERSION DAY – KUBERNETES

Con un total de 131 participantes (Colombia, Chile y Perú) concluye 3HTP su primera jornada de IMMERSION DAYS de AWS realizados durante los meses de agosto y septiembre. Los agradecimientos y recomendaciones confirmaron que la estrategia trazada y el esfuerzo realizado dieron sus frutos. Queremos compartir los excelentes resultados, desafíos cumplidos y experiencia obtenida en la realización de estos talleres.

Una simple idea fue el principio de los resultados que podemos ver hoy. AWS propuso a 3HTP la oportunidad de impartir un IMMERSION DAY relacionado a la temática de Core Services de Amazon Web Services, sin embargo, se consideró que era muy positivo ver la opinión de los clientes y se realizó una encuesta que arrojó que el 70 % prefería la temática de Kubernetes.

Resultados encuesta Linkedin.

Con una temática definida se inició un proceso de preparación en conjunto con AWS. Existían varios desafíos que diferenciaban estos IMMERSION DAY de los que se realizaban con anterioridad.

DESAFÍOS

  • Adaptar una actividad originalmente prevista para realizarse presencialmente de larga duración a un formato remoto.
  • Cómo lograr el interés, participación activa y permanencia de los participantes durante toda la actividad.
  • Lograr un feedback continuo de los participantes durante toda la actividad para buscar puntos de mejora.

Se diseñó una metodología para la impartición de los talleres IMMERSION DAY de AWS para llevar una actividad que inicialmente se desarrollaba de manera presencial a una modalidad 100 % on-line.

Se establecieron diferentes pasos que permitieron vencer cada uno de estos elementos y que buscaban mantener la calidad de la realización del taller y de la satisfacción de los participantes con el tema y el nivel de profundidad del contenido.

  • Logística de agendamiento personalizada.
  • Presentación de conceptos introductorios en sesión general para Participantes.
  • División de equipos de trabajo por instructor (7 a 10 personas máximo) para un seguimiento personalizado.
  • Validación de avance por medio de checkpoints por los Instructores
  • Control de avance por coordinador del IMMERSION DAY preguntando a los participantes de los grupos.
  • Encuesta al finalizar la sesión para obtener feedback temprano.

El objetivo era impartir una edición del IMMERSION DAY de KUBERNETES de AWS, sin embargo, la convocatoria presentó 350 interesados en el tema, por lo que fue necesario programar varias ediciones, incluyendo 2 talleres dirigidos y exclusivos a 2 empresas de Colombia. (Grupo AVAL y AFP Protección).

CONTENIDO.

El objetivo del IMMERSION de KUBERNTES es que los participantes aprendan los conceptos de contenerización y orquestación e interactuar con talleres prácticos guiados del servicio de AWS EKS. 

Contenido del taller AWS IMMERSION DAY – KUBERNETES

RESULTADOS

Se realizaron un total de 5 Talleres de IMMERSION DAYS de KUBERNETES de AWS:

IMMERSIONCANTIDAD DE PARTICIPANTES FECHA
COLOMBIA24 Participantes27-agosto-2020
GRUPO AVAL26 Participantes10 -septiembre-2020
AFP PROTECCIÓN37 Participantes17-septiembre-2020
CHILE20 Participantes29-septiembre-2020
PERÚ24 Participantes1-octubre-2020

RESULTADO DE ENCUESTAS A LOS PARTICIPANTES

En los talleres realizados, el 100 % de los participantes manifestó que sus expectativas fueron total o parcialmente cumplidas.

Cumplimiento de expectativas cumplidas

Es importante destacar que el tiempo para la realización es uno de los elementos a tener en cuenta durante la realización de los ejercicios prácticos. En este punto resulta muy favorable que los instructores mantengan la atención sobre el estado de avance de cada participante.

De forma relevante se destaca la satisfacción de los participantes respecto del conocimiento de los instructores y su seguimiento durante los talleres, elemento que se tuvo en cuenta en la metodología aplicada.

Por ciento de satisfacción de los participantes por cada item.

ALGUNOS COMENTARIOS RELEVANTES DE PARTICIPANTES

“ Excelente actividad, el instructor atento a todas las dudas y demostrando amplio conocimiento en las herramientas expuestas. Estoy gratamente satisfecho y los recomiendo 100%”

Participante del IMMERSION DAY Colombia

“Excelente espacio y metodología combinando concepto con la práctica. Mantenga el explicar los comandos como lo hizo Jonathan.. porque así uno sigue el laboratorio entendiendo lo que se está haciendo. Fue muy útil para avanzar en mi plan de estudio de estos conceptos y me genero mucho valor y avance en la compresión de estos conceptos. MUCHAS GRACIAS!!! “

Participante del IMMERSION DAY Colombia

“Tal vez se podría realizar el taller en dos partes para que no sea tan agotador, pero excelente el taller”.

Participante IMMERSION DAY Perú

“Excelente Taller, muy dinámico, muy claro, estuve todo el tiempo atento y entretenido, aprendí nuevos conceptos. Mil gracias.”

Participante IMMERSION DAY AFP Protección

LECCIONES APRENDIDAS

De cada taller realizado se obtuvieron experiencias, al igual que de los comentarios y sugerencias de los participantes. Estos elementos nos ayudaron a ver en lo que se debe mejorar para los próximos IMMERSION DAYS:

  • Poner a los estudiantes a compartir su pantalla si están rezagados, para garantizar que puedan avanzar al ritmo de los demás.
  • Reforzar y garantizar que los pasos del Setup inicial se cumplan para el éxito de los demás laboratorios.
  • Perfilar el público asistente para conocer su nivel de conocimiento previo al IMMERSION y así hacer grupos con nivel similares conocimientos, para personalizar el contenido (Nivel de profundidad).

ENTONCES, ¿QUÉ TE PARECE?. ¿QUIERES TU PROPIO IMMERSION DAY?

3HTP es un Partner Certificado por AWS para impartir IMMERSION DAYS, cuenta con Arquitectos Certificados que te ayudarán a conocer y dominar la arquitectura de Amazon Web Service. Podemos organizar un taller de IMMERSION DAY solo para el equipo de tu empresa.

CONTENERIZACIÓN Y ORQUESTACIÓN

En la actualidad es generalizado el tema de Contenedores y Orquestación por su crecimiento en el mundo de las tecnologías de la información, sus ventajas y las grandes promesas que plantea. Los diferentes vendors y marcas (Oracle, IBM, Microsoft, RedHat, AWS) están introduciendo nuevos conceptos relacionados a estos temas y por ende están surgiendo nuevos productos. ¿Pero cuál es la utilidad de la tecnología de contenedores? ¿qué ganamos con la conteneriación? ¿Por qué constituye una solución para algunos de los problemas actuales de las áreas de tecnología?

La mayoría de las personas ha escuchado hablar de Docker, y la ven como la única tecnología de Contenerización, pero no es la única solución en el mercado, aunque es cierto que hasta la actualidad es la más exitosa y es la que ha permitido la generalización del concepto. La tecnología de Contenerización ya existía antes de Docker, es un concepto técnico relacionado a la construcción de los kernel de Linux, y de como permiten ciertos niveles de asilamiento.

En el mundo de la tecnología de contenedores tenemos:

  • Docker: Es el producto insigne de la Empresa Docker
  • Cri-o: Es la tecnología que RedHat eligio para poder sustentar sus contenedores en OpenShift que es su plataforma de Orquestación
  • LXC: Implementación nativa de contenedores basadas en Linux

Y como plataformas de Orquestación para estos contenedores tenemos:

  • Docker Swarm,
  • Kubernetes un producto de Google y
  • Open Shift de RedHat.

CONTENERIZACIÓN

Todos conocemos la tecnología de virtualización, donde las Máquinas Virtuales requieren de un hardware, un hipervisor, un sistema operativo base para las aplicaciones y un nivel de recursos para su funcionamiento. Es una tecnología muy útil que aún se utiliza y que se seguirá utilizando por mucho tiempo y más en el mundo cloud.

A diferencia de la virtualización, los contenedores son una nueva forma de encapsular una instancia, colocando todo en un único producto “Contenedor” donde dentro se coloca lo que se necesita la aplicación para operar, el Sistema Operativo, la plataforma y la aplicación. Aunque realmente es una abstracción, pues no requiere por ejemplo de todo el Sistema Operativo. El contenedor no es una máquina virtual, por lo que no necesito del 100 % de todos los elementos, solo lo que realmente necesita la aplicación, esto hace que sea una forma muy liviana de encapsular.

Fig. 1. Disi, R 2020. Comparación VIrtualización Vs Contenerización, Diseño 3HTP

A diferencia del enfoque tradicional, donde el desarrollador comparte todo lo que sea necesario para la aplicación, paquetes, parches, librerías y eso se instala en el ambiente de QA y producción y entonces inician los problemas de ambiente, de configuración, de versiones etc. Con los contenedores se evitan esos problemas, pues la imagen viene con todo lo que necesita la aplicación y de esta forma no existe diferencia entre los ambientes, ya que el desarrollador entrega el contendor y es exactamente igual lo que se envía a QA y Producción.

El siguiente gráfico muestra una plataforma de Docker se tomará como ejemplo para explicar el funcionamiento del concepto de contenedores, aunque todos los productos son similares e incluso tienen nombres similares.

Fig. 2 Cuervo. V (2019). Arquitectura Docker. [Figura 2]. Recuperado de http://www.arquitectoit.com/docker/arquitectura-docker/

Doker es sencillo de entender, se tiene una arquitectura cliente – servidor que es el Docker host donde se instala el software “Docker” y donde se ejecuta a partir de una imagen, de una aplicación o de un sistema operativo, una instancia que se denomina contenedor. Esto permite que se puedan instalar varios contendores de la misma imagen, podría tener una imagen que tuviese una aplicación en Java, y podría tener otras instancias con nombres distintos que estarían en el mismo Docker host en el mismo ambiente.

Por otra parte, se tiene el “Registry” es una especie de repositorio que de manera centralizada publico mis imágenes, la idea es que se use el mismo Registry y que exista una Docker Host para Desarrollo, uno para QA, uno para Producción, etc. De esta forma siempre se obtiene la imagen del mismo repositorio por lo que se asegura que se instala la copia exacta, Sistema Operativo, Plataforma y el ambiente.

Además, tiene una capa cliente que permite la ejecución de comandos que se puede hacer de manera local, y permite de manera rápida y simple ejecutar diferentes tipos de aplicaciones y diferentes tecnologías ya sea que la puedo preparar o la puedo obtener de repositorios públicos como Docker Hub (https://hub.docker.com/), que es uno de los más conocidos.. Actualmente las diferentes marcas ya tienen publicados imágenes Docker certificadas, lo cual permite a los desarrolladores obtenerlas y agilizar el proceso de desarrollo.

Entonces el enfoque cambia, la tecnología de Contenedores permite transitar o movernos con la imagen de la aplicación por cada ambiente, creando instancias de la imagen porque físicamente corresponden al mismo objeto revolucionando el ciclo de trabajo y el mundo DevOps y de la automatización, pues ahora la única preocupación es obtener la imagen con la versión correcta  en el Registry, haciendo el ciclo de trabajo mucho más rápido ya no existen esos tiempos tan grandes de pasos de instalación ni realizar parametrización pues ya la aplicación viene lista en su ambiente.

Fig. 3. Pedraza, I. 2020, Pipeline Contenerización, Artículo Innovación en la Tecnología, https://www.3htp.com/devops-y-contenedores-actores-importantes-de-la-agilidad/

No obstante, aún siguen aquellas tareas asociadas a la conexión con las bases de datos, las integraciones con aplicaciones o servicios externos, es decir lo externo no se soluciona con esta tecnología. Sin embargo, sigue siendo un gran avance en el mundo de desarrollo y automatización para el despliegue de las aplicaciones, disminuyendo riesgos asociados a la diferencia de ambientes.

Esta tecnología hace que la imagen sea agnóstica, se olvida completamente del entorno pues todo lo que requiere el aplicativo está en el contenedor, por eso no se recomiendan prácticas como la configuración de artefactos condicionados a cada ambiente, pues no tiene sentido en este nuevo escenario.

ORQUESTACIÓN.

 Ya describimos de manera somera en que consiste el concepto de contenedores, los beneficios que aporta y en alguna medida su limitación respecto a las conexiones y servicios externos. Sin embargo, si yo quiero utilizar los contenedores en ambientes complejos, donde por ejemplo tenga las aplicaciones en contenedores, el servidor de aplicaciones está separado de la capa de datos y la capa web, ambas cosas en contenedores diferentes en ves de tener tres VM.

En este escenario aparecen nuevas problemáticas, que sucede si quiero escalar, si necesito balancear y tener alta disponibilidad, cómo comunicar aquellos contenedores que requieran estar conectados, cómo puedo monitorear los contenedores y ver cuál requiere un mayor o menor número de recursos en algún momento.

Fig. 4 Paunin, D. 2018, The best architecture with Docker and Kubernetes — myth or reality? https://medium.com/@dpaunin/the-best-architecture-with-docker-and-kubernetes-myth-or-reality-77b4f8f3804d

Entonces como damos solución a estas interrogantes, necesito una herramienta que me permita solucionar estas problemáticas. Para dar respuesta a estas necesidades surgen las plataformas de Orquestación: Kubernetes, Openshift y Docker Swarm, que son soluciones similares que me permiten trabajar de manera más elaborada con los contenedores.

Fig 5. Arquitectura Kubernetes

En la imagen que se muestra se toma como ejemplo la estructura de Kubernetes y que muestra los distintos elementos y conceptos que son parecidos en todos los sistemas de Orquestación. Cuentan con un soporte empresarial, un sistema base de infraestructura que ahorra tiempo en la instalación y configuración de la infraestructura para correr un cluster y otros elementos como el Master, los Workers, este último es el que ejecuta las aplicaciones. Cuenta con clusters que se forman con más de una instancia (pods) de contenedores y un repositorio Etcd, base de datos donde se guarda toda la configuración entre otros componentes.

Tiene además un componente, en este caso el kubetctl, que permite interactuar a través de líneas de comando con el master y este le envía instrucciones a cada uno de los workers, de tal forma que el master me permite escalar horizontal o verticalmente redistribuyendo la carga si se le agrega un worker, esto nos permite realmente tener lo que en la literatura se define como un cluster dinámico.

 “Los conceptos son muy similares a las arquitecturas de un servidor de aplicaciones de Java y J2E con los conceptos de dominio, agentes de nodo, cluster, etc. A diferencia de J2E donde solo se permite ejecutar aplicaciones empresariales bajo el estándar, en el caso de las plataformas de Orquestación de contenedores se pueden implementar cualquier tipo de aplicaciones independiente de la tecnología”

Hoy en día los diferentes proveedores de cloud tienen soluciones de monitoreo que permiten automatizar la escalabilidad de los recursos en las plataformas de Orquestación que permite en un tiempo manejar la cantidad de recursos up o down en dependencia de la demanda.

En este sentido tenemos dos grandes fortalezas: con contenedores se gana todo el poder de encapsular las aplicaciones independientes de la tecnología en la que se desarrolle y con la capa de Orquestación se obtiene el poder de administrar de tener alta disponibilidad, escalabilidad, elasticidad y compartir los ambientes lo que permite utilizar los recursos cuando lo requieran aquellas aplicaciones que en determinados momentos generan alzas de demanda. Todo lo anterior conceptual y técnicamente es posible. Sin embargo, estos conceptos requieren un proceso de entendimiento y maduración. Tanto la tecnología de contenedores como las capas de Orquestación requieren de una gran cantidad de recursos, por ejemplo, si queremos una solución de alta disponibilidad para un master se requiere soluciones de cluster de 3 – 5 – 9, lo que significa tener recursos, máquinas de determinada capacidad.

EN QUE ESCENARIO PODEMOS UTILIZAR LA TECNOLOGÍA DE CONTENERIZACIÓN.

Hoy en día tenemos dos escenarios u enfóquese en los cuales acudimos a la tecnología de Contenerización y Orquestación: el primer foco es la modernización de aplicaciones existentes. Específicamente las aplicaciones empresariales que se ejecuta en un entorno Unix o en un entorno que se presta para ser portable, Java, J2E, etc. Hay empresas que están saliendo del mundo Unix propietario y están optando por otras variantes. Esta modernización está dada por algunas razones:

  • Acelerar el ciclo de vida.
  • Mejorar la disponibilidad y escalabilidad de las aplicaciones
  • Prepararse para la migración a una plataforma Cloud

Muchas marcas ya están soportando sus plataformas en contenedores, muchos servidores de fábrica que ya tienen portabilidad para contenedores, no así el mundo de base de datos que aún queda un gran camino por recorrer. Una de las técnicas de modernización que se utiliza en este enfoque es Reshapes, una técnica de Cloud Adoption, que permite con pocas modificaciones crear un contenedor.

La modernización se enfrenta a algunos desafíos, uno es la homologación, la configuración y la dependencia de las aplicaciones los cual tiene varias técnicas para dar solución a estas tareas. Otro desafío es que alguna de las marcas no soporta versiones antiguas de sus mismos productos. Otro aspecto es la estructura de las aplicaciones que se desean migrar y que no están diseñadas ni desarrolladas para permitir la elasticidad y no están preparadas para trabajar con más de una instancia. Además, en este nuevo entorno, los desarrolladores deben conocer no solo de Contenerización, también deben conocer del desarrollo de las aplicaciones tradicionales

El otro enfoque es el diseño y desarrollo desde el inicio para Contenedores y Orquestación. Esta tecnología me da elementos muy novedosos de diseños para trabajar de manera modular, donde se pueden tener componentes en contenedores diferentes y que su suma conforme una aplicación más compleja, más elástica, más trazabilidad y tolerancia a diferentes escenarios

El desarrollo nativo en contenedores también ofrece posibilidades para avanzar, existen marcas que soportan sus productos nítidamente en esta tecnología, existe gran variedad de componentes para diferentes problemáticas que van presentando. Por otra parte, quedan algunos desafíos como el conocimiento que aún se debe adquirir sobre esta tecnología y romper la inercia y paradigmas en el diseño y desarrollo de aplicaciones olvidando las arquitecturas tradicionales.

La Contenerización y la Orquestación forman una de las verticales y tipos de tecnologías dentro de los niveles del Cloud Landscape que permite el desarrollo de aplicaciones de una manera más portable, permite corregir o disminuir deficiencias que se tienen en los procesos de desarrollo y de despliegue de las soluciones, tiene aún grandes líneas de desarrollo y desafíos que sortear pero es una de las variantes a tener en cuenta a la hora de tomar una decisión en el mundo de las tecnologías de la información.

Fig. 6 Cloud Native Landscape, 2019.

La Contenerización es una de las tecnologías que están presentes en el mundo Cloud, permite disminuir en gran medida muchos de los problemas que se tienen hoy en los procesos de desarrollo, automatización y despliegue de una aplicación.

Podemos decir que los contenedores son una forma portable de definir el software, y la Orquestación es una definición portable de como ese software debe ejecutarse, desplegarse y monitorearse.

Renzo Disi | Director 3HTP | Santiago de Chile | Charla de Contenerización y Orquestación | 2020

Charla Nocturna | Contenerización y Orquestación | Expositor. Renzo Disi. Director 3HTP | 12-05-2020.

INNOVACIÓN EN LA TECNOLOGÍA

DevOps Y CONTENEDORES | ACTORES IMPORTANTES DE LA AGILIDAD

El mundo de la tecnológica sigue con gran avance e innovación y las tecnologías de DevOps y Contenerización son un ejemplo de ello. A lo largo de los años han desarrollado nuevos conceptos y son foco de las áreas técnicas y de operación, que buscan agilidad, automatización en la gestión y disminución de los tiempos, ventajas que promete la adopción correcta de los procesos de DevOps y la utilización de la tecnología de contenedores.

Debido al aumento y celeridad de los saltos tecnológicos, el mercado de software requiere producir resultados de alta calidad en poco tiempo, aumentando la agilidad y limitando el número de errores del ciclo de vida (ALM). En este escenario DevOps tiene el reto de ser parte de la solución y sobreponer los problemas tradicionales de las áreas de TI: reuniones de definición, gestión de procesos de adquisición e infraestructura, acoplamiento de áreas para el modelo de gobierno entre otras.

Por otra parte, las tecnologías de contenerización trae todas las características para simplificar el proceso de gestión de aplicaciones, permitir la portabilidad entre ambientes (onpremises – Cloud) y centralizar las tareas de los equipos de operación, dando así una agilidad y movilidad al software, sin perder de vista las implicaciones de automatización y gestión con DevOps.

El “todo como como código” ha venido abriendo un marco importante de desarrollo de habilidades dentro del ciclo de software, que sugiere el incorporar estrategias de scripting dentro de DevOps y así poder optimizar la forma que se automatizan los procesos incluidos.

Vamos involucrar esos conceptos para exponer las bondades de la implementación exitosa de DevOps, llevando de la mano las tecnologías de innovación.

Fases de la metodología 3HTP

Dentro de la fase de adopción (primera fase de metodología 3HTP) es importante transformar los conceptos de instalaciones de software onpremises y llevar a modelos dinámicos donde participen soluciones desde infraestructura como código (Iac), contenerización de aplicaciones, plataformas como servicio y habilitación de scripts y/o pluggins para la ejecución software del toolchain; a eso se le llamada el DevOps Hibrido y lo que en marca es la habilidad de poder definir una estrategia más rápida de implementación.

En el mercado de Software DevOps encontramos muchas soluciones que ofrecen esas posibilidades, pero lo realmente importante es saber definir las herramientas que “aportan a mi realidad empresarial actual”, es decir, que el análisis del toolchain a implementar este dado por el alcance que tiene cada herramienta versus las funcionalidades que se necesitan en el objetivo trazado como roadmap de implementación.

El DevOps híbrido permite mezclar esos conceptos de tecnologías para acelerar el paso a la profesionalización (Fase 2 de metodología 3HTP) y a su vez aportar como ejemplo medidas de automatización, disminución de costos de infraestructura, aprovechamiento de recursos y sobre todo agilidad. También encontramos motores de integración continua que permite la ejecución de Jobs, con integración a tareas de automatización al software y ejecución tareas de disponibilización y aprovisionamiento de plataformas completas para las aplicaciones.

El diagrama del grafico Nr2 muestra un ejemplo de una implementación que podría está dada por diferentes tipos de soluciones de software para aportar al toolchain: Los repositorios de Fuentes de Artefactos y de Imagen (ahora con la tendencia Contenedores) que generalmente hacen parte casi de un activo para la compañía por su valor y su importancia. Por otro lado un motor de integración continua con un pipeline que permite que la ejecución de las fases de DevOps involucren la creación del contenedor donde este el software que necesita ser llamado a cumplir una tarea en cierto momento del tiempo (compilación, análisis de código, pruebas unitarias, etc), llamado de scripts de infraestructura como código, que permitan la creación y el aprovisionamiento de un ambiente por ejemplo para las fases de Pruebas QA, que son de necesidad “volátil” y finalmente el llamado a scripts que automatizan una labor por sí mismo o por medio de un software. Finalmente, también permite la colaboración del equipo y mejora continua con el feedback y retroalimentación a la solución de ALM que, podría ser un software como servicio (JIRA, VSTS, EWM, etc).

La velocidad de los equipos de Desarrollo y del área de tecnología debe estar dada por la implementación de soluciones que aporten y den esa rapidez que el mercado existe y esa agilidad que tanto se habla. La adopción de herramientas tecnológicas hoy se puede ver de diferentes puntos de vista y el aprovechamiento de los recursos es una parte vital dentro de las metas que tiene TI.

Es tiempo de reenfocar los procesos y modelo de adopción, y lanzarse a la gestión de una arquitectura DevOps Híbrida para satisfacer las necesidades de la organización; Es tiempo de incrementar los skill de scripting de los equipos involucrados en DevOps (Desarrollo, Pruebas, infraestructura, producción) y empezar laboratorios de esas nuevas soluciones que ayuda en el camino de disminuir tiempos y costos.

Los próximos años, DevOps se enfrenta optimizar y mejorar las particiones que se han creado en las fases intermedias del proceso del ciclo de vida CI/CT/CD/RM, y lograr empezar a entregar un túnel (pipeline) que realmente conecte de punta a punta a Desarrollo con Operaciones de forma ininterrumpida y con los estándares de Automatización, calidad, agilidad, seguridad que el software y las aplicaciones requieran.

AWS Cognito

Cognito para la Autenticación de Usuarios

Cognito es la propuesta que Amazon ofrece entre sus servicios a las organizaciones para reducir la inversión de tiempo y esfuerzo en el desarrollo de la plataforma de autenticación para sus aplicaciones.

Leer más