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