Implementación de Continuous Delivery en OLX

OLX?

Departamento de Infrastructura

Release Team

¿Por qué

Continuous ...?

  • Branches:
    • Trunk. Codigo en desarrollo
    • Branch. Versiones de Release
    • Tag. Fixes, bugs, etc.
  • 3 Ambientes:
    • DEV. Próximo release
    • QA. Release en produción
    • PROD. 

Development

codigo + deploy steps 

  • crear carpetas
  • ejecutar sql
  • deployar configuracion
  • rollback steps

JIRA Issues - code commits with jira_id on subject

Releases

Lunes: Code freeze

Miércoles: Deploy a producción

Cada 15 dias

08:00 Arrancaba el deploy

...

terminaba cuando terminaba

Releases

Problemas?

  • Feriados
  • Rollbacks
  • Tiempo de implementación para nuevas funcionalidad

Code workflow

Developers -> commit code in SVN

Release Team -> Push/Tag Code -> Deploy Code

Coordinación via: IRC 

Code workflow

Problemas

  • Dependencia en el Release Team
  • Proceso manual

Continuous qué?

  • Continuous Delivery

  • Continuous Integration

  • Continuous Deployment

Git

Ventajas

  • Branches
  • mejor interface web (github)
  • repositorios distribuidos
  • interface svn (migración)

Otros problemas

oficinas distribuidas geograficamente

Etapa 1

  • comenzar migración a git
  • separar componentes
  • separar configuración del código
  • reescribir deployment scripts. separación del código y los datos de configuración

Etapa 2

  • disparar jobs de jenkins automáticamente cuando se comiteara código en github
  • crear paquetes por componentes
  • deployar paquetes automáticamente en ambientes de desarrollo

Etapa 3

  • deploys directo a producción
  • crear las flags: paquetes con la configuración de funcionalidad de la aplicación

Lecciones

  • Convention over configuration
  • treat servers like cattle not pets
  • automate everything
  • infrastructure as code
  • use dev/qa environments
  • empower developers - with great power came great responsabilities 
  • blameless postmortems

Tools

  • splunk

  • graphite

  • newrelic

  • nagios

  • github

  • ansible / bash

  • jenkins

  • IRC / hipchat

Gracias!

Continuous Delivery

By osvaldo

Continuous Delivery

  • 455