SlideShare una empresa de Scribd logo
Noviembre
2017
Integración continua
en AWS
con ECS y PHP7
Carlos Arilla Navarro carillan@gmail.com
Manuel Boira Cuevas manuelbcd@gmail.com
Background
¿Quiénes somos? ¿Cuál era el reto?
Carlos Arilla Navarro – Cloud architect. Everis Zaragoza.
Manuel Boira Cuevas – Software architect. Everis Zaragoza.
Trabajamos en un proyecto para una compañía multinacional con sede
en UK y ámbito europeo.
Nuestro equipo está deslocalizado. Lo forman 21 desarrolladores y 10
testers siguiendo metodología SCRUM. Colaboramos con diversos
equipos del cliente y proveedores externos.
¿Quiénes somos?
¿Cuál era el reto?
El cliente buscaba una solución capaz de ofrecer a cada uno de sus partners un
producto “marca blanca” para la gestión de grandes flotas de vehículos.
Requisitos clave:
• Multi-tenant.
• Configurable, flexible.
• Orientado a integración.
• Auditable.
• Alta disponibilidad.
• Desarrollo ágil: Time-To-Market.
Como manager de
compras de ACME
quiero introducir 2000
nuevas unidades
Como jefe de
mantenimiento
quiero inspeccionar
todas las unidades
Como jefe de ventas
quiero que se anuncien
los unidades de esta
marca concreta.
Voy a comprar
unidades usadas para
mi tienda.
Casos de uso
La aplicación
Arquitectura de software y stack tecnológico
Static content Web
API
BPM
Integration
API
Business Rules Engine
Service Modules
Persistence
Estructura de la aplicación
Cliente
Front End
Orquestador
(Workflows)
Decisiones
Lógica de
negocio
Interfaces
External services
Stack tecnológico
Portable
Despliegue en Azure
Despliegue en Azure
• Despliegue en máquinas virtuales ordinarias.
• Un entorno completo dentro de cada VM.
• Orquestado de contenedores mediante
Docker compose.
• Todos los servicios funcionando sobre
Docker, incluyendo MySQL y MongoDB.
Despliegue en Azure
Esquema de un entorno:
• docker-compose.yml
• Volúmenes permanentes para las BD
• Instalación manual
• Jenkins, registro y otras herramientas en VM auxiliar
Despliegue en Azure
Esquema de la infraestructura:
Despliegue en Azure
Desde DevOps:
● Docker registry para imágenes.
● Jenkins para CI
● Testlink para QA
● SonarQube para code review
● Otras herramientas (Newman, Protractor, Composer…)
usadas sobre Docker
Despliegue en Azure
Ventajas de esta estructura:
•Difícilmente escalable, admite scale-up pero no scale-out
•Servicios altamente acoplados
•Dificulta crecer en tamaño de datos
•Montaje más sencillo posible
•Muy sencillo de arrancar y parar
•Fácil de portar
•Sin vendor lock-in
Desventajas de esta estructura:
Conclusiones:
•Entorno válido para desarrollo
Migración a AWS
Migración a AWS
El entorno de Azure es demasiado básico, necesitamos un entorno más
potente:
• El escalado horizontal es imprescindible.
• El escalado ha de poder ser asimétrico.
• El mantenimiento de grandes bases de datos debe ser sencillo.
• La gestión del registro de Docker debe ser más sencilla.
• El entorno debe ser resiliente y estable.
Migración a AWS
• El escalado horizontal es imprescindible.
Migración a AWS
El escalado ha de poder ser asimétrico.
El mantenimiento de grandes bases de datos debe ser sencillo.
Migración a AWS
La gestión del registro de Docker debe ser más sencilla.
El entorno debe ser resiliente y estable.
En el momento en que se tomó la decisión no todas estas alternativas existían.
Migración a AWS
Tareas necesarias para la migración:
• Diseño de la arquitectura.
• Modificación de los contenedores.
• Traslado de los datos.
• Adaptación y configuración de las herramientas DevOps.
• Transición del equipo de desarrollo a la nueva plataforma.
Migración a AWS
Arquitectura de AWS
Migración a AWS
Infraestructura completa de AWS
DevOps pipelines
DevOps pipelines
Pull Request testing
Pull Request
DevOps pipelines
APP Build and Deployment from Jenkins
Deploy
Start
Build API
Build
WEB
Build
BPM
Build
CRON
Deploy to
DEV ECS
Launch
Regression
Test
Git
checkout
app code
Git
checkout
infra code
Docker
Build
Docker
Build
Docker
TAG
ECR
push
DevOps pipelines
¿Qué más hacemos con Jenkins?
360° Quality Assurance
360º Quality Assurance
Los procesos de QA deben estar presentes en cada paso de la línea de
desarrollo de software para garantizar la integridad y ofrecer feedback
inmediato así como información para diagnósticos precisos.
Peer review
Unit testing
Pull Request test
Regression tests
API Client
Health check
Deploy
Development
Pull request
Build
Pull
360º Quality Assurance
Code metrics
Load Tests
Security scan
Control explícito y periódico con mayor o menor automatización.
E2E Integration
Exploratory
tests
Technical debt
Security
threats
Performance
Bugs
BACKLOG
Profiling
360º Quality Assurance
QA Monitoring dashboard
Usando un plugin de Jenkins y un PC sencillo hemos montado un monitor
de tiempo real a la vista del equipo en todo momento.
Green = Todo bien : Red = Blaming despiadado
Health checks
Build information
Regression tests
Pull requests
Code metrics Deployment info
Oportunidades de
mejora
Oportunidades de mejora
Actualmente Oportunidad/Mejora
Multiple cluster Single cluster
(ALB+ELB) - ALB ALB+NLB
Sync operations SQS for async operations
Symfony API API mgt. middleware
Strong server side Serverless microservices
Infrastructure services Infrastructure as code
Basic log management ELK stack + Lambda automations
Lecciones aprendidas
Lecciones aprendidas
Muchas
gracias
¿Preguntas?
Carlos Arilla Navarro carillan@gmail.com
Manuel Boira Cuevas
manuelbcd@gmail.com

Más contenido relacionado

La actualidad más candente

Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
Helder De Oliveira
 
Devsecops con azure devops en global azure bootcamp 2019
Devsecops con azure devops en global azure bootcamp 2019Devsecops con azure devops en global azure bootcamp 2019
Devsecops con azure devops en global azure bootcamp 2019
Luciano Moreira da Cruz
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
Rodolfo Finochietti
 
Liquid Day - Desmitificando serverless
Liquid Day - Desmitificando serverlessLiquid Day - Desmitificando serverless
Liquid Day - Desmitificando serverless
Software Guru
 
Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineIntegración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio Online
Ernesto Cardenas Cangahuala
 
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
Plain Concepts
 
DevOps Spain 2019. Antonio David Fernández-atSistemas
DevOps Spain 2019. Antonio David Fernández-atSistemasDevOps Spain 2019. Antonio David Fernández-atSistemas
DevOps Spain 2019. Antonio David Fernández-atSistemas
atSistemas
 
DEISER expoQA 2017
DEISER expoQA 2017DEISER expoQA 2017
DEISER expoQA 2017
Leo Díaz Murillo
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
Carlos Landeras Martínez
 
dockerize.it
dockerize.itdockerize.it
dockerize.it
betabeers
 
Yo soy Dev, yo soy Ops y somos dos en un equipo
Yo soy Dev, yo soy Ops y somos dos en un equipoYo soy Dev, yo soy Ops y somos dos en un equipo
Yo soy Dev, yo soy Ops y somos dos en un equipo
Leo Díaz Murillo
 
Bases de Datos en Kubernetes
Bases de Datos en KubernetesBases de Datos en Kubernetes
Bases de Datos en Kubernetes
Christian Melendez
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
CDS
 
Webinar automatizacion de pruebas con smart selenium kit
Webinar automatizacion de pruebas con smart selenium kitWebinar automatizacion de pruebas con smart selenium kit
Webinar automatizacion de pruebas con smart selenium kit
atSistemas
 
Scrum overview
Scrum overview Scrum overview

La actualidad más candente (15)

Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
 
Devsecops con azure devops en global azure bootcamp 2019
Devsecops con azure devops en global azure bootcamp 2019Devsecops con azure devops en global azure bootcamp 2019
Devsecops con azure devops en global azure bootcamp 2019
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Liquid Day - Desmitificando serverless
Liquid Day - Desmitificando serverlessLiquid Day - Desmitificando serverless
Liquid Day - Desmitificando serverless
 
Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineIntegración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio Online
 
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
 
DevOps Spain 2019. Antonio David Fernández-atSistemas
DevOps Spain 2019. Antonio David Fernández-atSistemasDevOps Spain 2019. Antonio David Fernández-atSistemas
DevOps Spain 2019. Antonio David Fernández-atSistemas
 
DEISER expoQA 2017
DEISER expoQA 2017DEISER expoQA 2017
DEISER expoQA 2017
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
dockerize.it
dockerize.itdockerize.it
dockerize.it
 
Yo soy Dev, yo soy Ops y somos dos en un equipo
Yo soy Dev, yo soy Ops y somos dos en un equipoYo soy Dev, yo soy Ops y somos dos en un equipo
Yo soy Dev, yo soy Ops y somos dos en un equipo
 
Bases de Datos en Kubernetes
Bases de Datos en KubernetesBases de Datos en Kubernetes
Bases de Datos en Kubernetes
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Webinar automatizacion de pruebas con smart selenium kit
Webinar automatizacion de pruebas con smart selenium kitWebinar automatizacion de pruebas con smart selenium kit
Webinar automatizacion de pruebas con smart selenium kit
 
Scrum overview
Scrum overview Scrum overview
Scrum overview
 

Similar a Integración continua en AWS con Docker, ECS y PHP7

DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructuraDevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
Alejandro García Miravet
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de Aplicaciones
Bitnami
 
KronOps - Perfil Corporativo
KronOps - Perfil CorporativoKronOps - Perfil Corporativo
KronOps - Perfil Corporativo
KronOps
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
Amazon Web Services LATAM
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
Amazon Web Services LATAM
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
Javier Suárez Ruiz
 
Cómo maximizar todos los beneficios traidos por la promesa de los contenedores
Cómo maximizar todos los beneficios traidos por la promesa de los contenedoresCómo maximizar todos los beneficios traidos por la promesa de los contenedores
Cómo maximizar todos los beneficios traidos por la promesa de los contenedores
Docker, Inc.
 
Técnicas para la Implementación de Desarrollo Continuo en AWS
Técnicas para la Implementación de Desarrollo Continuo en AWSTécnicas para la Implementación de Desarrollo Continuo en AWS
Técnicas para la Implementación de Desarrollo Continuo en AWS
Amazon Web Services LATAM
 
Técnicas para implementación de Continuous Delivery en AWS
Técnicas para implementación de Continuous Delivery en AWSTécnicas para implementación de Continuous Delivery en AWS
Técnicas para implementación de Continuous Delivery en AWS
Amazon Web Services LATAM
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
Eduardo Campañó
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev Day
Plain Concepts
 
IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions
Zemsania Services & Consulting
 
Evaluación y prácticas para migrar a la nube
Evaluación y prácticas para migrar a la nubeEvaluación y prácticas para migrar a la nube
Evaluación y prácticas para migrar a la nube
Amazon Web Services LATAM
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
Ernesto Anaya
 
SQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosSQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de Datos
Joseph Lopez
 
Sql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datosSql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datos
SpanishPASSVC
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
Luis Merino Troncoso
 
Las empresas españolas se suben a la nube
Las empresas españolas se suben a la nube Las empresas españolas se suben a la nube
Las empresas españolas se suben a la nube
Jacqueline Zuñiga
 
Monster migrations & hybrid cloud
Monster migrations & hybrid cloudMonster migrations & hybrid cloud
Monster migrations & hybrid cloud
Cloudmas
 
DevOps en AWS
DevOps en AWS DevOps en AWS

Similar a Integración continua en AWS con Docker, ECS y PHP7 (20)

DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructuraDevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de Aplicaciones
 
KronOps - Perfil Corporativo
KronOps - Perfil CorporativoKronOps - Perfil Corporativo
KronOps - Perfil Corporativo
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
 
Cómo maximizar todos los beneficios traidos por la promesa de los contenedores
Cómo maximizar todos los beneficios traidos por la promesa de los contenedoresCómo maximizar todos los beneficios traidos por la promesa de los contenedores
Cómo maximizar todos los beneficios traidos por la promesa de los contenedores
 
Técnicas para la Implementación de Desarrollo Continuo en AWS
Técnicas para la Implementación de Desarrollo Continuo en AWSTécnicas para la Implementación de Desarrollo Continuo en AWS
Técnicas para la Implementación de Desarrollo Continuo en AWS
 
Técnicas para implementación de Continuous Delivery en AWS
Técnicas para implementación de Continuous Delivery en AWSTécnicas para implementación de Continuous Delivery en AWS
Técnicas para implementación de Continuous Delivery en AWS
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev Day
 
IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions
 
Evaluación y prácticas para migrar a la nube
Evaluación y prácticas para migrar a la nubeEvaluación y prácticas para migrar a la nube
Evaluación y prácticas para migrar a la nube
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
SQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosSQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de Datos
 
Sql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datosSql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datos
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
 
Las empresas españolas se suben a la nube
Las empresas españolas se suben a la nube Las empresas españolas se suben a la nube
Las empresas españolas se suben a la nube
 
Monster migrations & hybrid cloud
Monster migrations & hybrid cloudMonster migrations & hybrid cloud
Monster migrations & hybrid cloud
 
DevOps en AWS
DevOps en AWS DevOps en AWS
DevOps en AWS
 

Último

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 

Último (10)

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 

Integración continua en AWS con Docker, ECS y PHP7

  • 1. Noviembre 2017 Integración continua en AWS con ECS y PHP7 Carlos Arilla Navarro carillan@gmail.com Manuel Boira Cuevas manuelbcd@gmail.com
  • 3. Carlos Arilla Navarro – Cloud architect. Everis Zaragoza. Manuel Boira Cuevas – Software architect. Everis Zaragoza. Trabajamos en un proyecto para una compañía multinacional con sede en UK y ámbito europeo. Nuestro equipo está deslocalizado. Lo forman 21 desarrolladores y 10 testers siguiendo metodología SCRUM. Colaboramos con diversos equipos del cliente y proveedores externos. ¿Quiénes somos?
  • 4. ¿Cuál era el reto? El cliente buscaba una solución capaz de ofrecer a cada uno de sus partners un producto “marca blanca” para la gestión de grandes flotas de vehículos. Requisitos clave: • Multi-tenant. • Configurable, flexible. • Orientado a integración. • Auditable. • Alta disponibilidad. • Desarrollo ágil: Time-To-Market.
  • 5. Como manager de compras de ACME quiero introducir 2000 nuevas unidades Como jefe de mantenimiento quiero inspeccionar todas las unidades Como jefe de ventas quiero que se anuncien los unidades de esta marca concreta. Voy a comprar unidades usadas para mi tienda. Casos de uso
  • 6. La aplicación Arquitectura de software y stack tecnológico
  • 7. Static content Web API BPM Integration API Business Rules Engine Service Modules Persistence Estructura de la aplicación Cliente Front End Orquestador (Workflows) Decisiones Lógica de negocio Interfaces External services
  • 10. Despliegue en Azure • Despliegue en máquinas virtuales ordinarias. • Un entorno completo dentro de cada VM. • Orquestado de contenedores mediante Docker compose. • Todos los servicios funcionando sobre Docker, incluyendo MySQL y MongoDB.
  • 11. Despliegue en Azure Esquema de un entorno: • docker-compose.yml • Volúmenes permanentes para las BD • Instalación manual • Jenkins, registro y otras herramientas en VM auxiliar
  • 12. Despliegue en Azure Esquema de la infraestructura:
  • 13. Despliegue en Azure Desde DevOps: ● Docker registry para imágenes. ● Jenkins para CI ● Testlink para QA ● SonarQube para code review ● Otras herramientas (Newman, Protractor, Composer…) usadas sobre Docker
  • 14. Despliegue en Azure Ventajas de esta estructura: •Difícilmente escalable, admite scale-up pero no scale-out •Servicios altamente acoplados •Dificulta crecer en tamaño de datos •Montaje más sencillo posible •Muy sencillo de arrancar y parar •Fácil de portar •Sin vendor lock-in Desventajas de esta estructura: Conclusiones: •Entorno válido para desarrollo
  • 16. Migración a AWS El entorno de Azure es demasiado básico, necesitamos un entorno más potente: • El escalado horizontal es imprescindible. • El escalado ha de poder ser asimétrico. • El mantenimiento de grandes bases de datos debe ser sencillo. • La gestión del registro de Docker debe ser más sencilla. • El entorno debe ser resiliente y estable.
  • 17. Migración a AWS • El escalado horizontal es imprescindible.
  • 18. Migración a AWS El escalado ha de poder ser asimétrico. El mantenimiento de grandes bases de datos debe ser sencillo.
  • 19. Migración a AWS La gestión del registro de Docker debe ser más sencilla. El entorno debe ser resiliente y estable. En el momento en que se tomó la decisión no todas estas alternativas existían.
  • 20. Migración a AWS Tareas necesarias para la migración: • Diseño de la arquitectura. • Modificación de los contenedores. • Traslado de los datos. • Adaptación y configuración de las herramientas DevOps. • Transición del equipo de desarrollo a la nueva plataforma.
  • 24. DevOps pipelines Pull Request testing Pull Request
  • 25. DevOps pipelines APP Build and Deployment from Jenkins Deploy Start Build API Build WEB Build BPM Build CRON Deploy to DEV ECS Launch Regression Test Git checkout app code Git checkout infra code Docker Build Docker Build Docker TAG ECR push
  • 26. DevOps pipelines ¿Qué más hacemos con Jenkins?
  • 28. 360º Quality Assurance Los procesos de QA deben estar presentes en cada paso de la línea de desarrollo de software para garantizar la integridad y ofrecer feedback inmediato así como información para diagnósticos precisos. Peer review Unit testing Pull Request test Regression tests API Client Health check Deploy Development Pull request Build Pull
  • 29. 360º Quality Assurance Code metrics Load Tests Security scan Control explícito y periódico con mayor o menor automatización. E2E Integration Exploratory tests Technical debt Security threats Performance Bugs BACKLOG Profiling
  • 30. 360º Quality Assurance QA Monitoring dashboard Usando un plugin de Jenkins y un PC sencillo hemos montado un monitor de tiempo real a la vista del equipo en todo momento. Green = Todo bien : Red = Blaming despiadado Health checks Build information Regression tests Pull requests Code metrics Deployment info
  • 32. Oportunidades de mejora Actualmente Oportunidad/Mejora Multiple cluster Single cluster (ALB+ELB) - ALB ALB+NLB Sync operations SQS for async operations Symfony API API mgt. middleware Strong server side Serverless microservices Infrastructure services Infrastructure as code Basic log management ELK stack + Lambda automations
  • 35. Muchas gracias ¿Preguntas? Carlos Arilla Navarro carillan@gmail.com Manuel Boira Cuevas manuelbcd@gmail.com