En este webinar, aprenderá cómo las empresas pueden aprovechar la nube de AWS para automatizar los pipelines de desarrollo de software. Este enfoque permite que su equipo sea más ágil, mejorando su capacidad para entregar aplicaciones y servicios rápidamente.
2. ¿Cómo interactuar durante el evento?
¿Tiene un proyecto y
necesita ayuda de
nuestro equipo
comercial?
Acceda al LIVE CHAT
con este QR code o con
el enlace enviado en el
chat del evento.
Preguntas y respuestas en
vivo durante todo el evento
¡Haga sus preguntas
directamente a los expertos
de AWS!
Haga clic en el signo "?"
y envíe sus preguntas.
3. ¿Qué es DevOps?
... aumentar la capacidad de una organización para ofrecer
aplicaciones y servicios de alta velocidad
Cultura Prácticas Herramientas
4. Qué es DevOps
• Objetivo general
• Equipos autónomos y potenciados
• Colaboración y Comunicación
• Enfoque en la entrega de valor al cliente
• Microservicios
• Integración/Entrega/Implementación Continua
• Desarrollo ágil
• Infra como código
• Automatización
• Pruebas de calidad y seguridad
• Monitorización
• Infra como herramienta de código
Cultura
Herramientas
Prácticas
5. • Microservicios
• Salga de una arquitectura "monolítica" para usar múltiples servicios individualmente.
Prácticas de DevOps
7. Prácticas de DevOps
• Infraestructura como Código
• Modele sus recursos de AWS mediante código
8. Prácticas de DevOps
• Monitoreo y registro
• Rastree y analice métricas y registros
• Comprender la infraestructura en tiempo real y el rendimiento de las aplicaciones
10. CI/CD Tools Monitoring & Tracing
SDKs
JavaScript Python PHP .NET Ruby Java Go Node.js C++
IDE
IDE and DevOps Toolkits
Eclipse
IntelliJ PyCharm Visual Studio
Visual Studio
Code
VSTS
CLI and Scripting Tools
AWS CLI Tools for
PowerShell
Infrastructure as Code
AWS Cloud Dev.
Kit (CDK)
Web Apps
Mobile
AWS
Amplify
Amazon
Corretto
Languages
Conjunto completo de servicios y herramientas
16. Push
Feedback
Tests
La integración continua es una práctica en la que los desarrolladores fusionan su nuevo
código en el repositorio remoto con regularidad.
Objetivos principales:
• Buscar y resolver errores rápidamente
• Mejorar la calidad
• Reducir el tiempo entre el desarrollo, la validación y el
lanzamiento de nuevas funcionalidades.
Integración Continua
17. Push
Feedback
Tests
1. Los desarrolladores comprueban
regularmente el código en un repositorio
central compartido.
2. Las comprobaciones automatizadas se
realizan regularmente en la base de código
compartido.
3. Los desarrolladores reciben comentarios
de las comprobaciones automatizadas de
su código
Integración Continua
18. Continuous Integration Continuous Delivery
2
Pull code to your git
local repository
3
1 Write code
Compile and run
unit tests locally
4
Push code to a git
remote repository
6
QualityTests
5 Triggers
Pipeline
Buid & Create Image
8
Push to Registry
9
7
SecurityTests
Fast Feedback
Continuous Integration
20. Continuous Integration Continuous Delivery
2
Pull code to your git
local repository
3
1 Write code
Compile and run
unit tests locally
4
Push code to a git
remote repository
6
QualityTests
5 Triggers
Pipeline
Buid & Create Image
8
Push to Registry
9
Deploy to Dev
7
SecurityTests Deploy to QA Deploy to Prod
11 AutomatedTests
10 12
13 AutomatedTests
14
Más confianza
Continuous Delivery
21. Viaje de DevOps
A medida que su organización madure, continuará desarrollando el modelo ci/CD para incluir más de las
siguientes mejoras:
• Entornos de preparación más específicos de la prueba
• Pruebas de infraestructura unitaria y código de configuración, junto con código de aplicación
• Integración con otros sistemas y procesos
• Integración con la migración de esquemas de base de datos (si corresponde)
• Pasos adicionales para la auditoría y la aprobación comercial
22. Source Build Test Production
Herramientas
de
terceros
AWS CodeCommit AWS CodeBuild AWS CodeDeploy
AWS CodePipeline
Pipeline de software-release:
AWS
CodeBuild
AWS Code Services
24. AWS CodeCommit
Un repositorio git seguro, administrado y escalable
La misma herramienta Git estándar
Escalabilidad, disponibilidad y durabilidad de Amazon S3
Cifrado en reposo mediante claves de cliente
Tamaño de repositorio ilimitado
Los desencadenadores posteriores a la confirmación pueden invocar
Amazon SNS o Lambda
27. AWS CodeBuild
Administre el servidor de compilación que compila el código fuente, las
pruebas y los paquetes de software de compilación
Escala y procesa continuamente múltiples compilaciones en paralelo
Puede crear entornos de compilación personalizados con imágenes de
Docker
Paga solo por lo que usaste
Integración nativa con AWS CodePipeline y Jenkins
28. ¿Cómo funciona?
1. Descargar el código fuente
2. Ejecuta los comandos definidos en el archivo buildspec mediante contenedores temporales (se
crean nuevos contenedores para cada compilación)
3. Envía registros de compilación a la consola y a los registros de Amazon CloudWatch
4. Envía los artefactos de compilación a un bucket en Amazon S3.
29. ¿Cómo puedo automatizar el proceso de compilación con
AWS CodeBuild?
• AWS CodePipeline totalmente integrado a CI/CD
• Plug-and-play (API/CLI)
• Cree su entorno de compilación
• Crea imágenes de Docker con tus herramientas
• Plugin de código abierto de Jenkins
• Uso de AWS CodeBuild como trabajador maestro de Jenkins
30. Archivo de ejemplo buildspec.yml
version: 0.1
environment_variables:
plaintext:
JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
install:
commands:
- apt-get update -y
- apt-get install -y maven
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
type: zip
files:
- target/messageUtil-1.0.jar
discard-paths: yes
32. AWS CodeDeploy
Maneja la complejidad de actualizar aplicaciones
Evita interrupciones durante la implementación
Realiza la reversión automática en caso de fallo
Implemente en Servidores Amazon EC2 o locales, utilizando cualquier
idioma y cualquier sistema operative
Se integra con herramientas de AWS y de terceros
33. Ejemplo de appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
Enviar archivos de aplicación a un
directorio y archivos de configuración a
otro
Establezca permisos específicos en
directorios y archivos.
Eliminar/agregar instancias a Elastic
Load Balancing
Instalar paquetes de dependencias
Iniciar Apache
Confirmar el éxito de la implementación
35. AWS CodePipeline
Servicio de entrega continua para actualizaciones de aplicaciones rápidas y
confiables
Modele y visualice su proceso de lanzamiento de software
El código se compila, prueba e implementa cada vez que se produce un
cambio
Se integra con herramientas de AWS y de terceros
40. ¡Gracias!
Manténgase informado
sobre las próximas
sesiones
¡Accede a la
programación del
webinar con este código
QR y regístrese!
QR CODE
Cuéntenos qué opina
del seminario web
Haga clic en “salir” para
responder a una
encuesta de
satisfacción rápida
Editor's Notes
Buenos días a todos.
Muchas gracias por unirse en esta sesión.
Mi nombre es Michelle Pérez, soy arquitecta de soluciones aquí en AWS y hoy vamos a hablar de CI/CD.
Específicamente, exploraremos algunos conceptos de devOps y aprenderemos sobre los servicios de AWS que ayudan a automatizar el proceso de entrega de software.
Antes de comenzar, si durante la presentación hay alguna duda sobre el contenido puedes enviarles haciendo clic en el signo de interrogación allí y nuestros expertos estarán dispuestos a responderlas.
Al final de nuestra sesión, también tendremos 15 minutos dedicados a preguntas y respuestas donde responderemos las cuestiones por el chat.
Si tiene un proyecto y necesita ayuda, puede hablar con nuestro equipo de ventas accediendo al CHAT EN VIVO a través de ese código QR que está disponible en la pantalla, o el enlace que se envía en el chat del evento también.
Así que vayamos a nuestro contenido.
Para empezar, DevOps es la combinación de filosofías culturales, prácticas y herramientas que aumentan la capacidad de una empresa para distribuir aplicaciones y servicios a alta velocidad: optimizando y mejorando los productos a un ritmo más rápido que las empresas que utilizan procesos tradicionales de desarrollo de software y gestión de infraestructura.
Y dentro de estos temas que cubre DevOps, hay varias características. En cultura, es la relación de comunicación, construcción de equipos, un enfoque en entregar valor al cliente.
En las prácticas, hay algunos de los que hablaré más aquí, como Microservicios, CI / CD, por ejemplo.
Y para permitir todo esto posible, herramientas que ayuden en la construcción de estas prácticas y apoyen la cultura también.
Un ejemplo es la infraestructura como el código, donde la infraestructura se aprovisiona y administra utilizando técnicas de desarrollo de código y software, como el control de versiones y la integración continua. Y hay herramientas que lo hacen posible, como AWS CloudFormation de AWS.
Explorando un poco más de las prácticas entonces.
Microservicios.
Los microservicios son un enfoque arquitectónico y organizativo para el desarrollo de software en el que el software consiste en pequeños servicios independientes que se comunican utilizando API bien definidas. Estos servicios pertenecen a equipos pequeños y autosuficientes.
Las arquitecturas de microservicios facilitan la escalabilidad y agilizan el desarrollo de aplicaciones, lo que permite la innovación y acelera el tiempo de comercialización de nuevas características, lo que lo convierte en un excelente enfoque para la modernización de aplicaciones.
Otra práctica es con respecto al proceso de desarrollo de software.
Integración continua, que es una práctica de desarrollo en la que los desarrolladores integran código en un repositorio compartido con frecuencia,
Entrega continua y desarrollo continuo también.
La integración de todo esto, lo CI/CD, que son prácticas combinadas de integración continua y entrega continua. CI/CD llena los vacíos entre las actividades y los equipos de desarrollo y operación, reforzando la automatización en la creación, prueba e implementación de aplicaciones.
Infraestructura como código que también es una práctica en la que puede aprovisionar recursos e infraestructura mediante código.
En la pantalla hay un ejemplo de una plantilla, en JSON que se puede utilizar en AWS CloudFormation para el aprovisionamiento de instancias EC2 como es el ejemplo de la imagen, pero también muchas otras características.
Otra práctica importante es el monitoreo.
Supervise los registros y las métricas para mejorar el rendimiento de las aplicaciones y el rendimiento de la infraestructura
Al intentar moverse rápidamente, debe comprender cómo los cambios están afectando su rendimiento
Los servicios deben estar en 24/7, por lo que el monitoreo y análisis en tiempo real se vuelve muy importante.
Puede configurar la automatización (alertas, cambios automáticos, etc.)
Es muy importante tener visibilidad, especialmente si está trabajando con múltiples microservicios. Es importante tener el rastro de todo esto.
¿Y por qué DevOps? ¿Qué beneficios puede aportar este conjunto de culturas, prácticas y herramientas al desarrollo de sus aplicaciones y su negocio?
Algunos de los beneficios:
Los equipos trabajan de manera más eficiente y efectiva, más eficiente y
Uso de la automatización para trabajar de manera eficiente y lanzar software más rápido
Utilice la confiabilidad y la seguridad en sus prácticas automatizadas para garantizar que el servicio siempre se esté ejecutando y que la infraestructura sea compatible
Cuando crece rápidamente y se mueve rápidamente, necesita IaC para ayudarlo a administrar su infraestructura a escala. Procesos repetibles
En última instancia, ayuda a su organización a aumentar su velocidad y velocidad. El objetivo final es innovar para sus clientes más rápido y convertirse en un mejor negocio
Aquí hay una diapositiva con varios servicios, no todos los servicios de AWS y no todos los servicios relacionados con DevOps, pero aquí están algunas de las claves de nuestra conversación de hoy.
En la esquina superior izquierda, las herramientas de CI/CD son servicios creados para CI/CD en AWS, AWS CodeStar, CodeBuild, CodeCommit, CodeDeploy y CodePipeline. Hoy voy a hablar más de cuatro de ellos.
Infra como servicios de código, que le permiten definir sus aplicaciones y arquitecturas en código de manera que las organizaciones enteras sean más productivas. Esto facilita el uso compartido de prácticas recomendadas y pone todo el poder de AWS al alcance de su mano.
Luego tenemos nuestro propio IDE, Cloud9, que es un IDE basado en la nube. Sin embargo, también notará en la segunda fila que tenemos una serie de kits de herramientas para los IDE más populares, como IntelliJ y Visual Studio. Uno de nuestros objetivos principales de esto es servir a sus desarrolladores donde están, para que puedan usar las herramientas que les resulten cómodas a medida que desarrollan en AWS.
Con esto en mente, tenemos 9 SDK de diferentes idiomas para ayudar a sus desarrolladores a interactuar con AWS mediante programación en el idioma de su elección.
También tenemos una serie de SDKs específicos de categoría para cosas como celulares e IoT que no se muestran.
Y también, en la esquina superior derecha se enumeran nuestras herramientas de monitoreo como AWS X-Ray y CloudWatch.
Y algunas otras características que no profundizaremos demasiado en la conversación de hoy, pero que están disponibles para su uso allí y ayudan con varios aspectos de DevOps.
Profundicemos ahora en el tema de ci/CD Pipelines.
Primero, ¿qué es una pipeline?
El pipeline consiste en estos pasos de evolución desde el momento de la integración con el código fuente hasta la entrega final de una aplicación para producción, por ejemplo.
Hasta que llegues a esta última etapa, habrá algunas otras como Build and Test.
Y el CI/CD, es el enlace entre estos pasos, que siempre están alineados.
Integración Continua o Continuous Integration:
La integración continua (CI) es una práctica de desarrollo de software en la que los desarrolladores fusionan sus cambios de código en un repositorio central de forma regular, después de lo cual se ejecutan compilaciones y pruebas automatizadas.
Entrega Contínua o Continuous Delivery:
La implementación continua es otro concepto central en una estrategia de DevOps. Su propósito principal es permitir la implementación automatizada de código de aplicación listo para la producción.
A veces se llama entrega continua o implementación continua. La única diferencia es que la implementación continua generalmente se refiere a las implementaciones de producción.
Utilizando prácticas y herramientas de entrega continua, el software se puede implementar de manera rápida, repetida y confiable.
Si se produce un error en una implementación, se puede revertir automáticamente a la versión anterior.
----------
Continuous Integration
Continuous integration (CI) is a software development practice where developers merge their code changes into a central repository on a regular basis, after which automated builds and tests are run.
Continuous Deployment
Continuous deployment is another core concept in a DevOps strategy. Its primary goal is to enable the automated deployment of production-ready application code.
Sometimes continuous deployment is referred to as continuous delivery. The only difference is that continuous deployment usually refers to production deployments.
By using continuous delivery practices and tools, software can be deployed rapidly, repeatedly, and reliably.
If a deployment fails, it can be automatically rolled back to previous version.
Otro concepto importante es de branch.
O branch, En el concepto es una versión aislada del código con la que puede trabajar sin afectar a otros desarrolladores de su equipo
Esto significa que la branch representa una línea de desarrollo independiente. Sirve como una abstracción para el proceso de edición / etapa / confirmación.
Puede pensar en ellos como una forma de solicitar un nuevo directorio de trabajo, área de preparación e historial de proyectos.
Nuevos commits se registran en el historial de la branch actual, lo que resulta en una bifurcación en el historial del proyecto.
¿Por qué es útil? Imagine situaciones en las que desea agregar una nueva función o corregir un error. Con la branch, esto se hace generando una nueva rama que garantiza que el código inestable no se fusione con los archivos principales del proyecto.
Y luego, solo después de completar la actualización de los códigos de rama, puede fusionar la rama con la principal, generalmente llamada Master.
Esto evita que los errores sean irreversibles y facilita las correcciones e inclusión de nuevas funcionalidades. Esto acelera la pipeline de desarrollo en su conjunto.
----
E existem algumas estratégias de branching, por exemplo trunk-based, onde os desenvolvedores sempre fazem em uma única branch comum, chamada de Trunk. Branches adicionais raramente são usadas.
Outro exemplo é GitFlow, que é um modelo fortemente baseado em branch, definindo funções de cada branch e como eles devem interagir.
É ideal para projetos que possuem ciclos de lançamento bem definidos, pois é focado em lançamentos.
Apesar de ser um pouco mais complexo do que outros fluxos de trabalho, ele fornece uma estrutura robusta para gerenciar projetos mais complexos ou grandes.
E outro exemplo de estratégia é o Github flow, que é um fluxo de trabalho leve e baseado em branch que oferece suporte a equipes e projetos que exigem implantações constantes.
Cada uma dessas estratégias tem suas orientações e práticas recomendadas.
Hablemos ahora de la integración continua, una de las prácticas que vimos al principio.
Como comenté, la integración continua es una práctica de desarrollo que requiere que los desarrolladores integren código en un repositorio compartido varias veces al día.
Cada check-in se verifica mediante una compilación automatizada, lo que permite a los equipos detectar problemas de forma temprana.
Al integrarse regularmente, los equipos pueden detectar rápidamente errores de software, encontrarlos más fácilmente y resolverlos mucho antes de ingresar a un sistema de producción, por ejemplo.
Los principales objetivos de IC son:
Encuentre y resuelva errores rápidamente
Mejorar la calidad
Reduzca el tiempo entre el desarrollo, la validación y el lanzamiento de nuevas funciones.
Ejemplo de lo que esto significa:
1. Los desarrolladores comprueban regularmente el código en un repositorio central compartido:
Este repositorio puede ser AWS CodeCommit, GitHub, GitHub Enterprise, Bitbucket, Amazon S3, por ejemplo. Varias posibilidades, dependiendo mucho de la necesidad y comodidad que tenga el equipo en el uso de una u otra.
2. Las comprobaciones automatizadas se realizan regularmente contra la base de código compartido.
La compilación automática es un paso importante en el proceso de CI, y herramientas como AWS CodeBuild y Jenkins se pueden utilizar como herramientas de compilación, por ejemplo.
3. Los desarrolladores reciben comentarios de las comprobaciones automatizadas de su código
Herramientas como CloudWatch y CloudWatch Events, por ejemplo, son útiles para esto, donde puede verificar su código a medida que se actualiza y crear alertas para su equipo con integraciones a su canal de comunicación preferido: correo electrónico, sms, etc.
En la práctica, ¿cómo funciona esto?
Un ejemplo aquí para ser claro esta práctica de lo que es esta integración continua.
Imagina que el desarrollador, un equipo de desarrollo escribe el código.
El código, se carga en un git, repositorio compartido donde todos los desarrolladores tienen acceso. Por lo tanto, el equipo de desarrollo que incluso se divide en entregas está integrado en el desarrollo general de este código. Y el desarrollador a su vez puede extraer el código de la aplicación a su máquina en un git local y en él realizar el paso 3,
Que, dependiendo del lenguaje de programación, se compila y las pruebas se ejecutan localmente. Probado, evaluado y realizado actualizaciones al código, el desarrollador:
Dale un empujón en el código, sube las actualizaciones realizadas. A partir de este proceso se puede empezar a automatizar.
Donde a partir de esta modificación, puede tenerlo como disparador en la tubería, es decir, es lo que comenzará a ejecutar los próximos procesos.
Y luego se pueden hacer pruebas de calidad
Pruebas de seguridad
Compilación, compilación y creación de imágenes de la aplicación
Entrega de la imagen al registro, en caso de uso de contenedores por ejemplo AWS cuenta con el servicio ECR donde puede guardar sus imágenes y luego utilizarlas en sus contenedores.
¿Y cuál es la otra mitad de nuestro pipeline? Entrega continua o contínuos delivery.
Entonces, siguiendo nuestro ejemplo aquí, ta en el registro, ¿qué viene después?
10. Inicios de implementación, se puede realizar primero una implementación para un entorno de desarrollo, donde se ejecuta
11. Pruebas, que también se pueden automatizar. Validado, bien, vayamos a:
12. Implementación del entorno de control de calidad, de nuevo,
13. Nuevas pruebas realizadas para garantizar la calidad de la aplicación. Hecho, ¿está bien validado?
14. Despliegue final en producción.
Esta canalización es un ejemplo de algunos pasos que puede incluir en el desarrollo de la aplicación y la canalización de desarrollo que buscan aportar una mayor calidad y fiabilidad a la aplicación de producción.
Generando valor al negocio.
Sin embargo, tener todo este proceso estructurado se hace un viaje... PROXI
Y es importante tener en cuenta aquí que a medida que su organización madure, continuará desarrollando el modelo de CI / CD para incluir más de las siguientes mejoras:
Entornos de preparación más específicos de la prueba, como: rendimiento, cumplimiento, seguridad y pruebas de interfaz de usuario (UI)
Pruebas de unidad de infraestructura y código de configuración junto con el código de la aplicación
Integración con otros sistemas y procesos, como la revisión de código, el seguimiento de problemas y la notificación de eventos
Integración con la migración de esquemas de base de datos (si corresponde)
Pasos adicionales para la auditoría y la aprobación comercial
Incluso las organizaciones más maduras que tienen canalizaciones complejas de CI/CD en varios entornos continúan buscando mejoras.
DevOps es un viaje, no un destino. La retroalimentación de la canalización se recopila continuamente y se logran mejoras en velocidad, escala, seguridad y confiabilidad como una colaboración entre diferentes partes de los equipos de desarrollo.
Así que recapitulando cuando vimos un pipeline. Ahora hablemos de los servicios de AWS. ¿Qué servicios pueden ayudarle a hacer en este proceso y ayudar a construir una canalización de desarrollo automatizada?
Comencemos con la fuente. O AWS CodeCOmmit.
AWS CodeCommit es un servicio de AWS, que es un repositorio git seguro, administrado y escalable.
Utiliza la misma herramienta git estándar, por lo que muchos desarrolladores ya están acostumbrados y cómodos usándola, por lo que no se requiere ningún cambio en esta comunicación e interacción con el repositorio.
Además, AWS CodeCommit tiene el
Escalabilidad, disponibilidad y durabilidad de Amazon S3
Cifrado en reposo mediante claves de cliente
Tamaño de repositorio ilimitado
Y desencadenador posterior a la confirmación que puede invocar Amazon SNS o Lambda
La experiencia que ya tienes con git es la misma. Cambia solo la dirección de conexión, que estará en el codecommit de AWS.
Ejemplo en la pantalla aquí se hace un clon de git en el repositorio de AWS, repositorio llamado aws.cli. Se crea un archivo readme y posteriormente se realiza el commit de ese archivo en el repositorio.
Vea toda la interacción usando git.
Otro servicio de AWS en la pipeline de CI/CD es AWS CodeBuild. Ampliamente utilizado en los pasos de compilación y prueba también.
AWS CodeBuild es un servicio de administración de servidores de acumulación y complicidad que compilará código fuente, ejecutará pruebas y creará paquetes de software.
Escala continuamente y procesa múltiples compilaciones en paralelo
Puede crear entornos de compilación personalizados con imágenes de Docker
Paga solo por lo que usaste
Integración nativa con AWS CodePipeline y Jenkins
¿Cómo funciona?
Descargará el código fuente del repositorio, ejecutará los comandos definidos en buildspec, enviará los registros de compilación a la consola y en los registros de Amazon Cloudwatch donde podrá realizar un seguimiento y supervisar la ejecución de buildspec.
Y al final de la ejecución, los artefactos de compilación se reenvían a un bucket en Amazon S3. Cuáles son los resultados de esa construcción.
¿Cómo automatizar este proceso? Puede utilizar AWS CodePipeline, que está totalmente integrado en CI/CD.
Puede usar api y cli para automatizar la ejecución.
Cree su entorno de compilación, cree imágenes de Docker para su uso en servidores de compilación de código ya con las herramientas necesarias.
Utilice Jenkins con él, utilice AWS CodeBuild como trabajador maestro de Jenkins.
Y aquí un ejemplo de un buildspec.yml, es básicamente un cojunto de comandos que se ejecutará en su servidor de compilación que se aprovisionará.
En este ejemplo aquí se utiliza maven, que es una herramienta de automatización de compilación utilizada principalmente en proyectos Java.
El archivo se construye en fases, la primera fase allí de instalación, donde se realiza la instalación de maven.
El segundo comando prebuild, solo se coloca un comentario en este ejemplo.
La compilación, que ejecuta la instalación de Maven mvn.
Y el post-Build que también agrega un comentario que indica que la compilación se ejecutó y pone DATA allí ejecutándose.
Finalmente, los artefactos, que se señala el camino hacia donde estarán.
Este archivo se puede adaptar. En la fase de instalación, puede usar una imagen ya pre personalizada, por ejemplo, donde ya venía con maven o alguna otra herramienta para acelerar y disminuir el tiempo de ejecución de la compilación.
Otros pasos se podrían realizar aquí. Todo dependerá de la solicitud y del proceso que quieras aplicar en ella.
Además, como comenté, también puede usar CodeBuild para ejecutar pruebas, que podrían aplicarse en alguna etapa de buildspec o tener una buildspec exclusiva para esto, que tomaría el artefacto generado por Build como entrada y ejecutaría pruebas desde él.
Este proceso integrado se facilita y se hace disponible a través de AWS CodePipeline que veremos más adelante.
Otra herramienta que quiero destacar es AWS CodeDeploy.
AWS CodeDeploy es un servicio de implementación totalmente administrado que automatiza las implementaciones de software en varios servicios informáticos, como Amazon EC2, AWS Fargate, AWS Lambda y servidores in situ.
Ler topicos.
Al igual que buildspec.yml, para codeploy tienes algo similar, que es appsec.yml.
En este ejemplo, la estructura de archivos comienza allí enviando los archivos de aplicación a un director y los archivos de configuración a otro.
Se realizan modificaciones al permiso de directorios y archivos
Y finalmente, en este caso se realiza la eliminación de las instancias antiguas del ELB, se instalan las dependencias, se realizan las pruebas, se vuelve a iniciar y se realiza el despliegue.
Para finalizar, el servicio AWS CodePipeline.
Es un servicio que ayuda en la entrega continua que ayuda a automatizar las canalizaciones de lanzamiento para ofrecer actualizaciones rápidas y confiables de aplicaciones e infraestructuras.
Le permite modelar y visualizar su proceso de lanzamiento de software
Automatiza los procesos mediante la ejecución de compilaciones, pruebas e implementaciones de código cada vez que se produce un cambio
Y también tiene integración con AWS y herramientas de terceros.
Aquí hay un ejemplo de la visualización de procesos que es creada por CodePipeline.
Aquí hay una canalización simple, en 3 pasos, Source que es el código fuente, repositorio y que generará el disparador para ejecutar la tubería.
En este ejemplo, se utiliza GitHub, que es uno de los repositorios que se integra con codepipeline. Por lo tanto, si ya utiliza GitHub, no tiene que utilizar AWS CodeCommit, por ejemplo, para poder crear su pipeline automatizado con CodePipeline.
A continuación, se realiza una compilación y finalmente se realiza la implementación.
La pipeline como ustedes pueden ver es composto de la acción, lo que se ejecutará allí,
El stage que és lo que se vá ejecutar, és la etapa: en build, se realizará la acción de iniciar codebuild con X build configuration por ejemplo.
Y luego está la transición. Terminado un paso, se procede al siguiente.
Y tenemos varias variaciones en el uso de esta pipeline.
Podríamos en el paso de Build, realizar dos acciones al mismo tiempo. Inicie la compilación y notifique a los desarrolladores, por ejemplo, que el trabajo ha comenzado.
También podríamos trabajar con acciones de secuencia, y luego comenzar a ingresar una inteligencia de prueba por ejemplo.
Inicia la compilación, notifica a los desarrolladores que se ejecutan al mismo tiempo.
Y cuando finalice, prueba la API para confirmar que todo está bien, aún en el paso De Build.
Y también en algunos casos donde sea necesario, antes de entrar en producción añadir allí una espera que está pendiente de aprobación manual.
Es una forma de ingresar a la interacción humana para aumentar la confiabilidad de la entrega, y puede usarla de esa manera con AWS CodePipeline.
Bueno, muchas gracias por seguir la presentación y poner a disposición un pedazo de la mañana para estar aquí conozco.
Ahora tendremos unos 15 minutos para responder a tus preguntas y recordando que cuando te vayas por favor responde al enlace de satisfacción para que podamos mejorar continuamente nuestras presentaciones y el contenido que traemos.
Si lo deseas, también puedes acceder al código QR disponible en pantalla para ver nuestras próximas sesiones y ya garantizar tu inscripción.
Vayamos a las preguntas ahora.
¡Muchas gracias a todos!