miércoles, 17 de octubre de 2018

Cómo montar un entorno devops en la nube

¡Hola Legion!  Bienvenido a otro post. Hoy vamos a hablar de cómo montar un entorno DevOps en la nube y qué servicios utilizar.

Si usted no sabe las ventajas de la nube o en duda sobre qué proveedor a contratar, ver nuestro post sobre  qué proveedor de computación en la nube para elegir . Vea cómo Cloud Legion le puede ayudar con los servicios DevOps  https://cloudlegion.com.ar/servicios/hybridit.html .

¿Qué es DevOps?
La palabra DevOps es una unión de otras dos: desarrollo (Dev) y operación (Ops) de software. Con eso, no tenemos una metodología o un marco de trabajo. Pero sí una cultura organizacional donde el desarrollo para una mejor ejecución del software es el foco de todo trabajo.

Primero, todos los involucrados deben estar comprometidos y sentirse responsables por el producto como un todo, y no partes de él. Las características como el código colectivo, la responsabilidad, la búsqueda de la mejora, la optimización, los artefactos secos y la objetividad son fundamentales.

DevOps no se califica por la adopción de una herramienta o implementación de una buena práctica. Sin embargo, son algunas de esas adopciones que hacen que el proceso pueda fluir y entregar los objetivos esperados.

Vamos a ver a continuación lo que es importante para esa cultura en la organización.

Buenas practicas
Ver algunas de las buenas prácticas a adoptar cuando se tiene una cultura DevOps:


  • Desarrollo ágil - ágil con el desarrollo de software iterativo e incremental, la entrega de una mayor funcionalidad en menos tiempo;
  • Las pruebas - pruebas de unidad, integración y sistema de identificar los problemas a tiempo y reducir los problemas de errores en la ejecución;
  • Infraestructura como Código - guiones de infraestructura con todos los requisitos necesarios para la aplicación, la normalización y la normalización del medio ambiente;
  • Integración / suministro continuo - repositorios de código para integrar los incrementos desarrollados, pasando el resultado de una serie de validaciones y la disponibilidad del código para ser desplegado en cualquier entorno;
  • entornos aislados - entornos de desarrollo, pruebas, aprobación y producción completamente aislado, evitando código no autorizado operan en áreas restringidas;
  • La automatización - todo es repetitivo debe ser automatizado, ahorrando tiempo y liberando recursos que pueden ser asignados a otras áreas;
  • Gestión de incidentes - Entradas para aprender de los errores siempre, con una mejora en los productos entregados a sus usuarios;
  • Monitoreo y métricas - técnicas de recolección y análisis de datos en tiempo real, proporcionando una manera de reaccionar mucho más rápido que el comportamiento no deseado.

La siguiente tabla, el Indmax , muestra una forma interesante de cómo a integrar algunas de estas mejores prácticas



Medio ambiente devops en la nube
Como se dijo anteriormente, DevOps no se restringe al uso de herramientas. Por el contrario, muchas prácticas en el día a día deben ser adoptadas y la cultura adaptada para que se alcance un ambiente DevOps. Pero eso no quiere decir que las herramientas no ayuden en ese proceso.

Para ello, vamos a ver algunas partes del ciclo de vida del software que pueden ser ayudadas por el uso de herramientas en la nube.

Repositorio de código
Actualmente existen varias plataformas proveedor de repositorios de código. GitHub , Bitbucket , gitlab y otros son algunas de las principales plataformas de Git. Pero, ¿por qué Git?

Porque el Git posee una estructura que recibe muy bien los procesos de integración - CI - y entrega - CD - continua. Todas estas plataformas son fáciles de integrar en procesos CI y CD. Además, el modelo de arquitectura descentralizada del versión de código por el Git es algo poderoso, ligero y flexible para equipos de todos los tamaños.

Los mayores proveedores de la nube tienen sus propios servicios para el código de versiones de Git: AWS CodeCommit  o nube Fuente Repo .

Integración continua
El proceso de integración continua implica un análisis constante del código. En este sentido, los códigos versionados y promovidos entornos específicos deben ser compilables y ejecutables.

Pero de nada sirve tener un código compilable y ejecutable presentando varios bugs y drenando la experiencia de los usuarios. En consecuencia, se deben construir pruebas que sean automatizables y puedan garantizar el comportamiento esperado del software.

La integración continua se puede implementar: directamente en las herramientas de Git, los servicios de proveedor de nube ( AWS CodePipeline o AWS CodeBuild ) o programa informático diseñado para este (Jenkins, CI gitlab, TeamCity, Travis CI o bambú).

Entrega continua
La entrega continua es un proceso que extiende y complementa el de integración continua. Con eso, podemos tomar el punto final de la integración, el paquete compilado, probado y listo para ser implantado, e implantarlo.

Esta implementación debe realizarse de manera automatizada, pero no necesariamente se activará automáticamente. Esto depende del proceso interno de la empresa. Este paso final se realizará en un ambiente pre acordado con el usuario, pudiendo ser hasta el de producción.

Normalmente, esta actividad se realiza con ayuda de secuencias de comandos relacionadas con el entorno y el servidor de aplicación de software. Las actualizaciones de entorno y del esquema de base de datos pueden ser necesarias en ese momento.

Algunos servicios en la nube para esto son: AWS CodeDeploy y servicio de aplicaciones .

Desplegar
Uno los principios del DevOps es la continuidad del servicio. En este sentido, es importante que las versiones sean liberadas para los clientes, minimizando los impactos en su usabilidad.

Algunas estrategias utilizadas para realizar el deploy son:


Aplicaciones sin alta disponibilidad (única instancia con el software):
  • Único objetivo: sin la reversión del despliegue, la implementación genera tiempo muerto y sin aumento de costo
Aplicaciones con alta disponibilidad (múltiples instancias con el software):
  • Todos a la vez: sin la reversión de la implementación, la implementación genera el tiempo de inactividad y sin aumento de costo;
  • Mínimo en servicio: deploy puede ser revertido, la implementación no genera downtime y sin aumento de costo. Mantiene el mínimo de servicio necesario para mantener la experiencia del usuario;
  • Gradual: Deploy se puede revertir, la implementación no genera downtime y sin aumento de costo. Implanta a un ritmo constante hasta alcanzar todo el ambiente;
  • Blue / Green: deploy se puede revertir, la implementación no genera downtime y genera un aumento de costo. Crea un nuevo entorno y conmuta el direccionamiento cuando es funcional. Puede ser probado en paralelo.

De esta manera, sus equipos deben analizar el costo beneficio de cada una y utilizar las herramientas de la manera correcta. Algunos servicios que facilitan la creación de ambientes para desplegar la nube son: Heroku , Elastic Beanstalk , App Engine y servicios en la nube .

Métrica
Por último, toda aplicación disponible debe ser monitoreada y medida. Para que estos datos puedan alimentar el proceso de mejora continua, las aplicaciones deben tener métricas de infraestructura y de usabilidad recogidas y analizadas.

Algunos servicios de infraestructura para las métricas colección son: CloudWatch , Stackdrive y Azure monitor . En cuanto al nivel de usabilidad del software, se pueden utilizar herramientas tales como: ELK ,  Mixpanel , Hotjar y Inspectlet .



¿Te gustó estos consejos sobre cómo montar un entorno de devops en la nube? ¿Tiene otras preguntas al respecto? ¡Deja un comentario!

No hay comentarios.:

Publicar un comentario