CI/CD — Historia de un amor loco

Antes de empezar

Hablemos de curvas

Lecturas recomendadas

  • “Cómo cambiar el mundo” de Jurgen Appelo: ¿Qué puedo hacer con esta pésima organización? Me gusta mi trabajo, pero no me gusta lo que hace la capa de gestión. ¿Cómo lo manejo? Miro a otro lado, me voy a otra empresa o intento cambiar el mundo. Jurgen Appelo es el creador de “Management 3.0” y en este libro ofrece puntos claves de cómo intentar cambiar una organización desde dentro.
  • “El arte de cautivar” de Guy Kawasaki. Guy implantó el concepto de “evangelizar” en los negocios tecnológicos, con la idea de atraer y focalizar a usuarios vinculados al mercado Apple. En este libro hay grandes consejos de cómo atraer al público. Y vaya si lo hicieron bien con el lanzamiento de iPhone.
  • “Talking with Tech Leads” de Patrick Kua. Si te encuentras en una situación como la mía en el que estás comenzando a realizar un rol de Team Lead, este libro puede ayudarte en el camino. Este Libro relata las conversaciones con Tech Leads con distintos niveles de experiencia. Concretamente 35 entrevistas a diferentes Tech Leads que describen cómo encuentran el equilibrio entre el mundo técnico y el no técnico.

Code Review

  • ¿Se comprende bien el contenido?
  • ¿Cumple con los objetivos que nos hemos establecidos?
  • ¿Está adaptado a la audiencia a la que va dirigido dicho documento?

Metodología

Contratos ágiles

Historias de Usuario

Equipos Multidisciplinares

Atomic Web Design

Performance Review

Testing / QA

Cultura del Testing

Equipo de QA

Continuous Integration

Pipeline as a code

Automatizaciones

Continuous Deployment

Serverless

  • Si hablamos de PaaS, uno de los pioneros fueron Heroku, pero ya todos los proveedores Cloud cuentan con este tipo de servicios como Firebase, AWS ElasticBeanstalk o Azure AppService
  • Si hablamos de FaaS, contamos con multitud de servicios que nos ayudan a desacoplar y apoyarnos en ellos para trabajar con arquitectura de microservicios, como pueden ser Firebase Functions, Azure Functions o AWS Lambda.
  • Si lo que necesitamos es no reinventar la rueda, podemos apoyarnos en muchos servicios SaaS que nos ofrecen funcionalidad que solo tenemos que integrar en nuestros desarrollos. Por ejemplo, toda la parte de mail marketing y marketing automation podemos apoyarla en servicios como Sendgrid, Mailchimp o Sendinblue. Lo mismo con otros tipos de herramientas como Twilio, Stripe o Zapier.

Twelve Factors

  • Codebase: El código base de la aplicación es único, sin embargo, puede haber tantos despliegues de la aplicación como sean necesarios. Un despliegue es una instancia de la aplicación que está en ejecución. Si hay múltiples códigos base, no es una aplicación — es un sistema distribuido. Cada componente en un sistema distribuido es una aplicación, y cada uno, individualmente, puede cumplir los requisitos de una aplicación “Twelve-factor”.
  • Backing Service: Un backing service es cualquier recurso que la aplicación puede consumir a través de la red como parte de su funcionamiento habitual. Entre otros ejemplos, podemos encontrar bases de datos (como MySQL o CouchDB), sistemas de mensajería y de colas (como RabbitMQ), los servicios SMTP de email o sistemas de cache.
    El código de una aplicación “twelve-factor” no hace distinciones entre servicios locales y de terceros. Para la aplicación, ambos son recursos conectados, accedidos mediante una URL u otro localizador o credencial almacenado en la config. Un despliegue de una aplicación “twelve-factor” debería ser capaz de reemplazar una base de datos local MySQL por una gestionada por un tercero sin ningún cambio en el código de la aplicación.
  • Stateless: Las apps “twelve-factor” no tienen estado, cualquier información que necesite persistencia se debe almacenar en un ‘backing service’ con estado, habitualmente una base de datos. Algunos sistemas webs dependen de “sticky sessions”, esto quiere decir que cachean la información de la sesión de usuario en la memoria del proceso de la aplicación y esperan peticiones futuras del mismo visitante para redirigir al mismo proceso. Las “sticky sessions” son una violación de “twelve-factor” y no deberían usarse nunca ni depender de ellas. La información del estado de la sesión es un candidato perfecto para almacenes de información que ofrecen mecanismos de tiempo de expiración, como Memcached o Redis.
  • Gestión de la configuración: Las aplicaciones “twelve-factor” almacenan la configuración en variables de entorno. Las variables de entorno se modifican fácilmente entre despliegues sin realizar cambios en el código; a diferencia de los ficheros de configuración, en los que existe una pequeña posibilidad de que se guarden en el repositorio de código accidentalmente. Las envvars son un estándar independiente del lenguaje y del sistema operativo.

Conclusión: El final del camino hacia CI/CD

Gracias a todos los que me apoyaron, dieron consejos para esta primer charla pública y asistieron al webinar. Y sobre todo gracias a todos los compañeros de Cloud District, que me hacen crecer cada día.

--

--

Full Stack Web Developer — adrianalonso.es

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store