Una introducción a las herramientas de DevOps en AWS

Una introducción a las herramientas de DevOps en AWS
DevOps (Operaciones de desarrollo) es un conjunto de herramientas y prácticas utilizadas para desarrollar y entregar aplicaciones de software más rápido. DevOps en sí no es una herramienta que se utiliza para hacer el desarrollo, la liberación y la entrega de software más rápido. Hay muchas herramientas de código abierto que se utilizan para implementar DevOps en una organización. En general, los siguientes son los pasos básicos que se realizan para implementar las mejores prácticas de DevOps para desarrollar y entregar código más rápido.
  • Plan
  • Código
  • Construir
  • Prueba
  • Liberar
  • Desplegar
  • Funcionar
  • Monitor

Además de las herramientas de código abierto, los diferentes proveedores de servicios en la nube proporcionan sus herramientas nativas en la nube para implementar prácticas de DevOps en la nube. Este artículo describe diferentes herramientas y tecnologías proporcionadas por AWS para implementar DevOps en AWS.

AWS CodeCommit

AWS CodeCommit es un servicio utilizado para el control de versiones y alojado por AWS. Al igual que otros servicios de control de versiones como GitHub, Bitbucket y GitLab, el código fuente puede ser presionado a repositorios privados en CodeCommit. No hay repositorios públicos en AWS CodeCommit.

AWS CodeCommit es un servicio altamente disponible, seguro y escalable utilizado para alojar repositorios de código privado. Usando AWS CodeCommit, no necesita actualizar el servicio si sus repositorios aumentan más allá de un límite. Se escala automáticamente con el aumento en el número de repositorios o el tamaño del repositorio.

El siguiente es la lista de algunos beneficios proporcionados por el servicio AWS CodeCommit.

  • Servicio altamente disponible y totalmente administrado
  • Almacena el código con cifrado en reposo
  • Colaboración laboral
  • Servicio de control de versiones escalables
  • Integrado con algunos AWS y servicios de terceros
  • Fácil migración de otros repositorios
  • Admite los comandos git que ya conoces

La consola AWS CodeCommit proporciona una interfaz de usuario gráfica amigable para visualizar solicitudes de extracción, confirmaciones, ramas y etiquetas GIT. Los repositorios de CodeCommit se pueden clonar utilizando URL SSH y HTTPS.

En la configuración del Repositorio de CodeCommit, puede habilitar notificaciones y desencadenantes para notificar cuándo se produce un evento específico como (crear una rama, eliminar una rama, en la solicitud de extracción).

AWS CodeBuild

AWS CodeBuild es un servicio totalmente administrado utilizado para ejecutar pruebas, crear el código y generar los artefactos de compilación del código. Usando AWS CodeBuild, no necesita proporcionar un servidor de compilación adicional para crear el código fuente. Proporciona entornos preconfigurados para la mayoría de los lenguajes de programación populares como Python, Java, Nodejs y construye herramientas como Maven, NPM y Gradle. También puede crear sus propios entornos personalizados para crear su proyecto utilizando AWS CodeBuild.

AWS CodeBuild es un servicio sin servidor, y solo se le cobra cuando se ejecuta una compilación. De esta manera, puede ahorrar dinero para un servidor adicional para construir los proyectos. Los siguientes son algunos beneficios de usar el servicio CodeBuild de AWS.

  • CodeBuild es un servicio totalmente administrado, y no necesita actualizar y administrar el servidor de compilación.
  • Es un servicio escalable y escala con el aumento en el procesamiento. Solo paga por el tiempo que se ejecuta la construcción.
  • Proporciona entornos de construcción preconfigurados que hacen que sea fácil de usar.
  • También puede crear sus propios entornos de compilación personalizables en CodeBuild.

AWS CodeBuild se puede integrar con diferentes servicios de proveedores de código fuente para obtener el código. Puede obtener el código de GitHub, Bitbucket, Github Enterprise, CodeCommit y S3. Además, puede configurar el servicio CodeBuild para enviar los registros de compilación a los registros de CloudWatch que pueden ayudar a diagnosticar las fallas de compilación. Para comunicarse con CloudWatch, AWS CodeBuild necesita un papel de IAM con permisos específicos.

AWS CodeDeploy

AWS CodeDePloy es un servicio totalmente administrado proporcionado por AWS para implementar la aplicación preconstruida a diferentes servicios de cómputo como EC2, AWS Lambda, AWS ECS y servidores locales. El servicio AWS CodeDePloy puede implementar automáticamente el siguiente tipo de contenido.

  • Función AWS Lambda
  • Archivos ejecutables
  • Archivos multimedia
  • Guiones
  • Código
  • Paquetes

AWS CodeDePloy es un servicio sin servidor, y solo se le cobra cuando se ejecuta una implementación, y el resto del tiempo, no se le cobra. Al igual que AWS CodeBuild, AWS CodeDePloy también elimina la necesidad de aprovisionar un servidor adicional para fines de implementación. Los siguientes son algunos beneficios de usar el servicio AWS CodeDePloy.

  • CodeDePloy se puede utilizar para implementar aplicaciones tradicionales en servidores y aplicaciones que implementan funciones LAMBDA a AWS Lambda.
  • Se puede utilizar para automatizar completamente el proceso de implementación de códigos en diferentes entornos como (Dev, Test, ProD).
  • Se puede usar para realizar una implementación azul/verde que evita el tiempo de inactividad de la aplicación durante la implementación.
  • La implementación se puede retrasar si se produce algún error al implementar la última versión.

AWS Codepipeline

AWS Codepipeline es un servicio que se utiliza para visualizar una tubería CICD completa utilizando una interfaz gráfica de usuario amigable. Crea una buena GUI de una tubería combinando diferentes servicios como AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy. Facilita el proceso de lanzamiento del software visualizando cada paso de la tubería.

Cuando un desarrollador empuja el código al CodeCommit, el código de código, si está configurado adecuadamente, data del nuevo código y pasa el último código al servicio AWS CodeBuild para ejecutar pruebas y construir artefactos del código. Después de construir los artefactos, estos artefactos se pasan al servicio AWS CodeDePloy para implementar la última versión de la aplicación al servidor.

Todos estos pasos se pueden visualizar e integrarse entre sí en el servicio CodePipeline. Al implementar el código de la puesta en escena a un entorno de producción, se puede agregar un paso de aprobación manual utilizando AWS Codepipeline. Para implementar el código en el entorno de producción, alguien con permisos específicos debe aprobar la implementación. Evita la implementación de un compromiso no auténtico con la producción, que puede romper el entorno de producción.

AWS Codeguru

Amazon Codeguru es un servicio proporcionado por AWS para revisar el código fuente. AWS Codeguru utiliza el aprendizaje automático y el análisis de programas para revisar el código fuente y encontrar los posibles defectos en el código. Después de encontrar los defectos en el código fuente, AWS Codeguru da sugerencias para resolver estos defectos para los lenguajes de programación de Java y Python.

Actualmente, AWS Codeguru solo admite lenguajes de programación Java y Python y puede leer el código fuente de los siguientes proveedores de origen.

  • AWS CodeCommit
  • AWS S3
  • Github Enterprise Cloud
  • Github Enterprise Server
  • Github
  • Bitbucket

Conclusión

Hay diferentes servicios de AWS Cloud-Native que se pueden utilizar para construir una tubería CICD completa. El principal beneficio de utilizar los servicios propietarios de AWS es que estos servicios son servicios totalmente administrados sin servidor e interactúan entre sí en privado. Existen diferentes servicios para almacenar el código fuente (AWS CodeCommit), construir y ejecutar pruebas en el código (AWS CodeBuild), implementando el código a los servidores (AWS CodeDePloy) en AWS. Todos estos servicios se pueden integrar entre sí para crear una tubería completa utilizando el servicio AWS Codepipeline. Este artículo ofrece una breve comprensión de todos estos servicios de AWS para implementar prácticas de DevOps en AWS.