Con Copa Airlines, S4N inicia su nueva línea de negocio de operación de software

Copa Airlines

En S4N vimos la necesidad de ir más allá de la construcción y entrega de un producto. Entendimos que poder operarlos era una oportunidad para complementar nuestras habilidades técnicas, a la vez que afianzábamos las relaciones con nuestros clientes. Es así como con Copa Airlines abrimos la puerta a esta nueva línea de negocio llena de retos donde podremos evidenciar los resultados de los productos que construimos en etapa productiva.

Jean Philip Zucchet, quien lidera actualmente esta iniciativa, y David Montaño, del equipo DevOps, nos contarán los desafíos que enfrentaron en el diseño, construcción y despliegue del portal público copaaair.com el cual está apalancado sobre infraestructura en la nube.

¿Cuáles eran los principales objetivos del producto CopaAir.com y cómo los pudieron cumplir?

El producto persiguió tres objetivos específicos:

  1. Renovar el diseño y tener una plataforma multidispositivo: La renovación de la imagen y garantizar compatibilidad en múltiples dispositivos fue determinante para que los usuarios finales del producto pudieran ver reflejada una evolución significativa. A decir verdad, es uno de los productos que más exigencias a nivel de capa de presentación ha tenido en los años que S4N lleva desarrollando software.
  2. Cumplir con las normas de accesibilidad que exige el Departamento de Transporte de Estados Unidos y las Pautas de Accesibilidad para el Contenido Web de la WCAG. (Ver Copa Airlines fortaleció su experiencia digital gracias al apoyo de S4N). En años anteriores, el tema de WCAG se pudo abordar en proyectos que S4N ejecutó para entidades gubernamentales, pero nunca con el grado de completitud y complejidad abordado en este proyecto. En este aspecto, el aprendizaje fue bastante amplio.
  3. Desplegar la totalidad de la solución en la nube. La diferencia con proyectos anteriores en S4N que también se apalancan en nube, es que S4N se responsabilizó totalmente de tomar y ejecutar decisiones a nivel de seguridad perimetral, Content Delivery Network, DNS, políticas de replicación y custodia de datos, entre otros. En este sentido, el nivel de conocimiento con que cuenta S4N hoy en día en la nube de AWS, servicio seleccionado para el proyecto, es algo que nos permitirá afrontar futuros retos con mayor propiedad.

¿Cómo se conecta la Operación de Software con el cumplimiento del tercer objetivo?

CopaAir.com es el principal canal digital de Copa Airlines y del cual dependen el 19% de las ventas de la compañía, por lo cual S4N debe garantizar unos niveles de rendimiento y disponibilidad de la solución bastante altos. Aquí es donde un buen modelo de despliegue hace la diferencia, es decir, aquel que habilita el cumplimiento de los atributos de calidad más críticos para la solución, en el caso de CopaAir.com, disponibilidad, rendimiento y seguridad.

Bien sea en la nube o en cualquier tipo de infraestructura On-Premise, el modelo de despliegue evidencia la totalidad de servicios que deberán ser operados. A mayor complejidad en su aprovisionamiento, mantenimiento y administración, mayor costo operativo.

En este proyecto hemos podido aplicar prácticas de DevOps que nos han permido, por un lado, involucrar a los equipos de desarrollo en temáticas y conocimientos no relacionados directamente con la codificación de software, y por otro, fortalecer las bases para el aprovisionamiento automatizado de ambientes, orequestación del proceso de liberación de software, así como la ejecución de prácticas de infraestructura inmutable que faciliten a S4N y al cliente la comprensión del estado de sus servicios de nube y la forma de atender eventos de falla o catastrofes que puedan generar indisponibilidad en el servicio.

¿Cómo se crea el equipo de DevOps y cuáles son sus responsabilidades?

Esta es una idea que surge de un tiempo atrás como consecuencia de la curiosidad de S4N en experimentar con tecnologías como Chef, Puppet, Docker, Ansible, Mesos, Kubernetes para el aprovisionamiento rápido de ambientes de desarrollo y QA para los equipos.

Con la formalización del partnership con AWS y la disponibilidad de servicios como EC2 Container Registry, AWS Lambda (Serverless architectures), entre otros, fue posible pasar a una siguiente fase, aquella en donde el cliente se beneficia directamente de prácticas y estas tecnologías.

El componente humano de DevOps, aquel en donde desarrolladores y operadores de infraestructura trabajan de manera conjunta, parece ser en principio un reto más sencillo de superar por la cultura de trabajo en equipo que existe en la compañía.

Actualmente en S4N el equipo de DevOps está conformado por Andrés Grosso y nosotros dos (David Montaño y Jean Philip Zucchet). Más adelante se unirá Natalia Parrado. El propósito más importantes de este equipo es poder aportar ideas al proceso de desarrollo, despliegue y evolución de nuestros productos de software.

Luego de esta primera experiencia con Copa Airlines, la idea del equipo es empezar a facilitar conocimiento y acompañamiento técnico estructurado a los equipos de trabajo.

¿Qué prácticas de DevOps se adoptaron y cuáles fueron los resultados?

De otra parte, hay servicios muy específicos de AWS que permiten el autoescalamiento y monitoreo. Este monitoreo nos informa cuál es el estado de las máquinas, de manera que ya hemos configurado medidas automatizadas en caso de presentarse inestabilidad en la aplicación. En caso que una máquina se caiga automáticamente hay otra que se levanta, o también si los datos sobrepasan los umbrales determinados tomamos decisiones para volver esos valores a su estado normal.

¿Qué servicios particulares de AWS fueron utilizados para este proyecto?

Como mencionamos anteriormente, este fue un reto donde teníamos que aprender sobre nuevos servicios y tecnologías. En este caso se pueden destacar los siguientes:

EC2 (Elastic Compute Cloud): Son máquinas virtuales instanciadas en Amazon que nos proporcionan control completo sobre los recursos informáticos, sobre qué sistema operativo instalar, quiénes van a acceder a esos sistemas y dónde va a estar instalado. Permite escalar la aplicación en función de sus necesidades. De igual forma, al equipo de desarrollo le permite tener las herramientas necesarias para crear aplicaciones resistentes a los errores.

Un ejemplo práctico del uso de este servicio en CopaAir.com fue el aprovisionamiento de una gran variedad de servidores en Irlanda, Sao Paulo, California y Virginia del Norte que nos permitió en varias ocasiones ejecutar y certificar los niveles de carga y stress de la solución, todo en cuestión de minutos.

S3 (Simple Storage Service): Ofrece varios tipos de almacenamiento. Es como tener discos en la nube en donde podemos guardar datos, actualizarlos fácilmente, y asignarles políticas de acceso. Otras ventajas es que ofrece una durabilidad del 99,999999999% de los objetos, podrá escalar el volumen según sea necesario, puede enviar notificaciones de eventos, y ofrece varios métodos para ayudar a los equipos a transferir grandes cantidades de datos desde y hacia la nube.

RDS (Relational Database Service): Son servicios de base de datos distribuidos. También se puede definir políticas de acceso y de respaldo.

ECR (Elastic Container Repository): Servicio que permite administrar, subir y descargar imágenes de Docker.

CloudWatch: Permite monitorear el estado de las instancias EC2 y demás recursos y aplicaciones que se ejecuten en AWS. Este servicio genera alertas cuando una máquina está usando más CPU o cualquier recurso del sistema. De esta manera el equipo tiene visibilidad de todo el sistema y la utilización de sus recursos, su desempeño y estado de funcionamiento.

CloudFront: Es un servicio de Content Delivery Network que agiliza el acceso a los recursos de la página. Sirve como un caché y permite obtener informes estadísticos del mismo para conocer tasa de errores y aciertos, permite la segmentación geográfica de los usuarios finales, identificar cuáles son los contenidos más populares de los usuarios y generar alertas en caso que estos contenidos estén fallando, y también acelera la carga de datos de los usuarios finales.

Route 53: Es un servicio de DNS escalable y de alta disponibilidad. Facilita el enrutamiento de peticiones desde un dominio, convierte URLs en direcciones IP, permite direccionar usuarios a infraestructuras externas, en caso de interrupción del servicio se dirige a los usuarios a un sitio web alterno, y también monitoriza el estado y funcionamiento de las aplicaciones.

WAF (Web Application Firewall): Es un mecanismo de seguridad perimetral para proteger el acceso a la infraestructura de servidores web.

Retos:

No teníamos experiencia subiendo un sistema tan complejo en la nube. Los retos estaban en ver qué herramientas nos ofrecía AWS, identificar cuáles servicios nos podían servir, y elegir los más esenciales para la operación.

Otros retos al enfrentarnos a este gran conjunto de herramientas fueron elegir los computadores o tipos de instancias, hacer pruebas de estrés, y evaluar si la aplicación podría sostener cierta cantidad de peticiones.

¿Qué riesgos se hubieran podido materializar al no haber optado por la adopción de estos servicios?

Afirmar que sin los servicios de nube de AWS no se hubiese podido lograr el despliegue de una buena solución de software sería mentira, no obstante, se debe rescatar lo siguiente:

El mayor impacto negativo que se puede llegar a tener en etapa de operación es el de afectar la reputación y la marca de nuestra compañía ante el cliente pero más importante, ante los usuarios finales de la aplicación.

A diferencia de la etapa de desarrollo, en donde S4N brilla por su participación activa, en la etapa de operación lo que más valorarán nuestros clientes será la baja interacción con nosotros.

Finalmente, ¿qué se espera con este nuevo servicio de operaciones?

Facilitar a nuestros clientes la puesta en marcha y operación de los productos de software que construimos y en ese proceso, experimentar y divertirnos.

Tener oportunidad de medir los resultados y el impacto de nuestros productos después de su salida a producción, y como consecuencia, poder realizar sugerencias a nuestros clientes para su evolución lo que significa, mayores oportunidades de desarrollo de software.

(Ver Operación de software es una nueva línea de negocio que afianzará las relaciones con el cliente: Jean Philip Zucchet)

<
>