spinner

¿Cómo aplicamos metodologías DevSecOps con AWS en nuestros proyectos?

La exigencia cada vez mayor en los servicios requiere de métodos que permitan evolucionar la plataforma (código e infraestructura) de manera ágil, robusta y segura. Y justo esto, es lo que nos proporcionan las metodologías DevSecOps.

DevSecOps surge de la unión de Desarrollo (Development), Seguridad (Security) y Operaciones (Operations).

Desarrollo vs Operaciones: la eterna lucha

Con frecuencia en las organizaciones hay un departamento de Desarrollo que se encarga de programar el software y cuando está terminado o han realizado una nueva versión, se pasa al departamento de Operaciones que se encarga de promocionar este software al entorno de producción. Esta aproximación presenta varios problemas:

  • Cuando hay problemas quién lo corrige ¿el equipo de desarrollo o el de operaciones?
  • Cada vez que hay que subir una nueva versión, hay que realizar una petición entre departamentos lo cual es muy poco ágil.

Estos problemas y otros muchos más, se conocían como el “Muro de la confusión” y se corrigen empleando metodologías DevSecOps, en las que desaparecen estas separaciones y ambos equipos trabajan como un único ente, siendo responsable de todo el ciclo de vida de la aplicación.

Ventajas de emplear DevSecOps

Empleando DevSecOps podremos mejorar nuestros procesos en distintas líneas:

  • Agilidad: Queremos poder implementar nuevas funcionalidades en nuestras aplicaciones y servicios y que estén disponibles cuanto antes para los usuarios, es decir reducir lo que se conoce como Time to Market.
  • Adaptabilidad: A través del feedback frecuente, nos permite encontrar y solucionar problemas rápidamente, así como cubrir nuevas necesidades del cliente.
  • Trazabilidad: Podemos tener un seguimiento de la evolución de nuestros desarrollos.
  • Confiabilidad: automatizando procesos se reduce el error humano y los despliegues de nuestra aplicación son menos propensos a distintos tipos de errores.
  • Seguridad: realizando tests automáticos, procedimientos automatizados, empleando secretos, etc. se consigue mejorar la seguridad de la plataforma y la aplicación.
  • Disponibilidad: queremos que nuestros servicios y aplicaciones estén siempre disponibles para el usuario y que no haya pérdidas de servicio.

A continuación vamos a describir los distintos servicios de AWS que podemos emplear.

Servicios de AWS de DevSecOps

Respecto a las metodologías DevSecOps podemos mencionar distintos de AWS agrupando por las distintas fases del ciclo de vida:

  • Sistemas de control de versiones: Es fundamental en cualquier proyecto software. Nos permite añadir una mayor trazabilidad a nuestros desarrollos, incluyendo en el proceso, la capacidad de retornar a un punto anterior o release, garantizando el rollback. En AWS CodeCommit podemos almacenar nuestro código.
  • Compilación: Con AWS CodeBuild podemos realizar la construcción o compilación del código de nuestra aplicación.
  • Tests automáticos: Con AWS CodeBuild también podemos lanzar los tests que hayamos diseñado.
  • Infraestructura como código: Es muy conveniente definir la infraestructura como código (IaC) para que sea fácilmente mantenible y repetible. Las soluciones que provee AWS para aprovisionar infraestructura como código son AWS CloudFormation o la más reciente AWS CDK.
  • Despliegue: Empleando AWS CodeDeploy podemos desplegar nuestra aplicación en el entorno correspondiente.
  • Orquestación: Usando AWS CodePipeline podemos coordinar las distintas tareas anteriormente mencionadas.
  • Monitorización: Una vez desplegada la plataforma es importante disponer de mecanismos de monitorización y auditoría para los cuales AWS proporciona distintos servicios como AWS CloudWatch y AWS CloudTrail.
  • Seguridad: En la fase de testing se pueden ejecutar tests que detecten posibles vulnerabilidades en el código. Además, una vez desplegado podemos disponer de servicios como AWS WAF que protegen nuestra infraestructura ante diversos ataques. Además, empleando AWS Security Hub podemos ver en un panel integrado las distintas alertas de seguridad.

A la hora de empezar un proyecto nuevo tendríamos que crear una versión inicial de nuestro código fuente, definir la infraestructura con CloudFormation, desplegarla, luego configurar todo lo necesario en CodePipeline, CodeBuild y CodeDeploy para que cuando se subiese un cambio al repositorio, se lance automáticamente el job de construcción y luego se despliegue.

Sin embargo, para facilitarnos todo este proceso, hay un servicio llamado AWS CodeStar. Este servicio nos ahorra muchísimo tiempo y nos permite tener en pocos minutos un repositorio con una plantilla inicial de código y un pipeline ya configurado que realiza la construcción y el despliegue automático de nuestro código.

Lógicamente estos servicios se apoyan en otros servicios de AWS como AWS S3 (almacenamiento), AWS SNS (notificaciones), AWS Lambda (funciones serverless), AWS CloudWatch (monitorización), AWS Config (configuración de políticas), AWS ECR (registro de contenedores), AWS ECS (servicio de contenedores), etc.

AWS-Cloud-BBVA-Next-Technologies
¿Por qué con AWS?

Tenemos las ventajas propias de usar un proveedor cloud:

  • Pago por uso: pagamos por lo que necesitamos ni más ni menos.
  • Escalabilidad: Aprovisiona únicamente lo que necesites.
  • Flexibilidad: Para elegir cómo y dónde ejecutar las cargas de trabajo.
  • Facilidad de integración: Las distintas piezas conectan fácilmente unas con otras.
  • Facilidad en la operación: estos servicios de construcción y despliegue están administrados por AWS por lo que no necesitamos preocuparnos por el mantenimiento de los mismos.
  • Seguridad: Los datos que fluyen en la red global de AWS, van cifrados
  • Disponibilidad: Cada región está completamente aislada y compuesta de múltiples AZ.
  • Globalidad: Variedad de regiones para acercar tu producto a tus clientes.

Además, AWS tiene una gran diversidad de servicios que nos facilita la integración con distintos modelos de arquitectura: híbridos, cloud, multicloud lo cual nos brinda un nuevo paradigma respecto a las oportunidades de negocio.

¿Por qué BBVA Next Technologies?

Nuestra trayectoria nos ha llevado a consolidarnos en arquitecturas cloud empleando AWS. Contamos con especialistas en estrategia y gobierno Cloud, Machine Learning y metodologías ágiles en formación continua para afrontar nuevos retos.
La experiencia acumulada en el desarrollo de soluciones sobre Cloud nos ha permitido conseguir el grado máximo de partnership con AWS desde 2016 como Partner Premier, además de las competencias Data & Analytics y MSP. Durante el año 2018, hemos sido uno de los partners europeos verificados por AWS para poder realizar auditorías WAF (Well Architected Framework). Nuestra situación actual como partner es la siguiente:

Casos de éxito con AWS

Entre nuestros clientes se encuentran empresas de diferentes sectores como infraestructuras, financiero, eléctrico, seguridad o alimentación. Compañías como Capital Energy, Orange o DIA han depositado su confianza en nosotros para llevar a cabo varios casos de uso de relacionados con la práctica DevOps.