Cloud IO Enabler Podcast
|
AWS nos provee de múltiples herramientas cubriendo aspectos como los requeridos en DevOps, comunicación con servicios AWS e incluso IDEs e integraciones. Puede encontrar una lista completa de las Herramientas para Desarrollar Software en AWS en Build with Tools & SDKs – Developer Tools.
En este artículo vamos a cubrir las herramientas generales del desarrollo de Software como el repositorio de fuentes, el repositorio de artefactos, el pipeline de integración continua (CI) y entrega continua (CD) y tecnologías relacionadas.
Repositorio de Fuentes
Aquí AWS nos ofrece el servicio AWS CodeCommit que es un Sistema de Control de Versiones que funciona usando la tecnología Git.
AWS CodeCommit elimina la necesidad de tener servidores on-premises y escala automáticamente. Esta completamente integrado a los usuarios de AWS, las políticas de IAM y las llaves (key-pair) para acceso SSH si se requiere.
Es completamente gratis con repositorios ilimitados, hasta 5 usuarios, 50GB de espacio y 10000 peticiones por mes, fuera de estos límites tiene costos desde 0.001 – 1.00 dólares mensuales dependiendo del concepto usado.
Integración Continua
La integración continua es el práctica de integrar el código de los desarrolladores de forma continua con el fin de tener versiones estables del Software y detectar errores tempranamente; esto implica compilar, ejecutar pruebas y empaquetar.
AWS CodeBuild es la herramienta en Amazon que nos ayuda con este proceso, habilitando la automatización de esta práctica sin preocuparnos de provisionar servidores on-premises.
Apalancado en la infraestructura de Amazon, AWS CodeBuild puede crear ambientes de compilación en segundos y escalar esta carga de trabajo a tanta capacidad como el negocio lo demande.
Se integra nativamente con AWS CodeCommit y puede trabajar con Github y Bitbucket, además de tener completamente integradas las seguridades y políticas IAM.
Puede utilizarse desde pipelines de AWS CodePipeline y pipelines de terceros, actuando como Worker Node y potenciando la escalabilidad de su infraestructura actual.
No tiene costo su uso, los costos están relacionados a la capacidad de cómputo que utilice para la integración continua.
Despliegue
El proceso de despliegue conlleva disponer una versión concreta del Software y un ambiente específico, este ambiente puede ser un servidor, decenas o cientos de servidores, decenas o cientos de contenedores, servicios serverless, etc.
AWS CodeDeploy es a tecnología que nos provee Amazon para administrar y automatizar el despliegue de Software en servidores, contenedores, servicios serverless o sus servidores on-premises.
Simplifica la complejidad que conlleva despliegues manuales, optimizando los recursos, reduciendo los riesgos de error-humano y minimizando los tiempos de ejecución.
Se puede integrar con su solución actual de despliegue como Bamboo o Jenkins y herramientas de automatización de configuración cono Ansible o Chef. Una lista completa la puede mirar en AWS CodeDeploy product integrations.
Trabaja nativamente con el stack de desarrollo de AWS como AWS CodePipeline. Además esta integrado a los usuarios y políticas de IAM (Identity and Access Management).
No tiene costo de uso a menos que sea on-promises en el cual se cobra 0.02 dólares por servidor en el stack de despliegue.
Pipeline y Entrega Continua
El pipeline es el conjunto de pasos automatizados y requeridos para llevar el Software desde el desarrollador hasta producción, Amazon nos trae AWS CodePipeline como un servicio completo de entrega continua (CD).
AWS CodePipeline se encarga de empaquetar, probar y desplegar el Software en el/los ambiente(s) requerido(s), con una administración totalmente gráfica y sencilla.
De la misma forma se integra con usuarios de AWS y las políticas de IAM haciendo fácil la gestión de los mismos.
El flujo es completamente configurable y extensible con plugins propios o herramientas de terceros, como Github, Jenkins, Teamcity, etc. También puede ser utilizado para manejar cargas de trabajo como empaquetamiento y pruebas provenientes de pipelines de terceros.
Esta completamente integrado con AWS CodeBuild y AWS CodeDeploy para ejecutar las tareas normales del workflow, como compilación, pruebas y despliegue.
Los costos son de 1.00 dólar por pipeline activo, más costos relacionados a cualquier otro servicio que se utilice en la ejecución del workflow como AWS CodeBuild o AWS S3.
Repositorio de Artefactos
Es repositorio de artefactos es un directorio de versiones de nuestros productos de Software, desde librerías hasta releases, AWS CodeArtifact es un repositorio de artefactos para gestionar este directorio.
Comparable a otros productos como Nexus o Artifactory, va mucho más allá en cuanto tecnologías soportadas, asi soporta: Maven, Gradle, npm, yarn, twine y pip.
Este servicio le ahorra tener instalaciones on-promises y escala automaticamente si se lo requiere, además esta integrado a la seguridad IAM.
Puede interactuar con repositorios de artefactos publicos garantizando la disponibilidad de librerías y reduciendo el ancho de banda que tomaría procesos de integracion continua (CI) y entrega continua (CD).
Los costos son de 0.05 dólares por Gigabyte y por cada 10000 peticiones, además tiene costos relacionados por consumo de ancho de banda siempre que sea hacia afuera de la red de AWS.
Pensamientos finales
Existen otras Herramientas para Desarrollar Software en AWS como AWS CodeStar (usada para generar un pipeline a modo wizard con las tecnologías AWS muy fácil y rápidamente) y AWS X-Ray (para hacer debug en funciones Lambda), que no las mencionamos pues consideramos que no son las normales en un ciclo de desarrollo.
Los costos que aquí se presentan, son los costos a la fecha actual y podrían cambiar en el tiempo; además todos los servicios tienen una capa Free por 12 meses que no se menciona aquí pero es parte de las ventajas de usar la nube de Amazon.
Se puede optar por una u otra herramienta y no todas, y aun así tendremos muchos beneficios a la hora de desarrollar Software, además Amazon siempre da la posibilidad de conversar con tecnologias de terceros.
Les animamos a compartir sus experiencias o dudas en los comentarios para mejorar este contenido y esperamos que haya sido de máxima utilidad para ustedes.