26
Release Process Diego Muñoz Senior Frontend Engineer [email protected]

Tuenti release process

  • Upload
    tuenti

  • View
    1.623

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Tuenti release process

Release Process

Diego MuñozSenior Frontend [email protected]

Page 2: Tuenti release process

Agenda

Page 3: Tuenti release process

Agenda

Page 4: Tuenti release process

Equipos Tech. de Tuenti• Frontend: 

o Ca$hMoney, Community, Core, Gaming/Apps, Interactive, Local, Video

o Mobile Core, Client Apps o Tu (MVNO) 

• Framework/Architecture • Backend, Scalability, Stats• Testing Framework• Dev-Tools • IT• Systems• QA • Design & UX 

Page 5: Tuenti release process

¿Cómo de grande es Tuenti?• +10.000.000 usuarios• +76 minutos de media de uso diario• +175.000.000 mensajes de chat / dia• +4.000.000 fotos subidas al dia en picos• +30.000.000.000 page views / mes• +35.000 peticiones web / seg. en picos• +1.000 servidores• +180 empleados (de 18 nacionalidades)• +60% de los empleados de la parte de tech. 

Page 6: Tuenti release process

Pero...¿Y el código?• +14.000 archivos• +2.000 folders • Web• Web móvil• Aplicaciones móviles nativas• APIs• Jobs• Tools• Flash components• Tests• ...

Page 7: Tuenti release process

Checkout

Page 8: Tuenti release process

Checkout• Herramienta SCM: Mercurial• Como siempre lo pregunta la gente... 

¿Por qué Mercurial y no Git?o Interfaz y API muy limpios en Python o 100% Cross-platform (Linux/Mac/Windows)o Más user-friendly y parecido al viejo SVN

Page 9: Tuenti release process

Checkout• Un repositorio por equipo• Core, Backend, ClientApps...

o Branch por proyecto + default• stable

o default • hotfix

o default • integration

o default • release

o default 

Page 10: Tuenti release process

Coding

Page 11: Tuenti release process

Coding• Una vez hecho el checkout...• crear o actualizar al branch deseado...• y a programar! (la parte divertida)

Page 12: Tuenti release process

Testing

Page 13: Tuenti release process

Testing• Unit tests, Integration tests

o PHPUnitGrandes modificaciones y extensiones

o Mock objects Extendido de PHPUnit

• Acceptance testso Selenium + PHPUnito Normalmente desde VMs 

Page 14: Tuenti release process

Testing• Hudson para Continuous Integration

o Diferentes prioridades de build por brancho +30 branches de media 

Page 15: Tuenti release process

Merge

Page 16: Tuenti release process

Merge• Calendario: 2 releases a la semana (martes y jueves)• 8+ branches por release de media

o  A veces modificamos +2000 archivos!• Merges permitidos desde 2 dias laborables antes• Merges hasta 1 PM del dia anterior

o CTO approval para saltarse la norma 

Page 17: Tuenti release process

Merge• Push-Pull Party

o Procedimiento normal de Mercurial: Pull - Update - Merge - Commit - Push

o Mergeando branches: Pull - Update - Merge - Commit - Push abortado - Pull de nuevo - Update - ... etc.

Has de ser rápido mergeando :)• Merge conflicts

o Mercurial != magia (pero mejor que SVN)o A veces deja buenos estropicios mal mergeados "para revisión humana"

Page 18: Tuenti release process

Merge• Release meeting el dia anterior a la release• Ingenieros: 

o Pull de repositorio de equipo o Mergeando en repositorio de integration

• Release Manager:o Pull de repositorio de integrationo Mergeando en repositorio de release

• Errors spreadsheeto QA + ingenieros añaden bugso Ingenieros responsables del código arreglan en el repositorio de release 

Page 19: Tuenti release process

Release

Page 20: Tuenti release process

Release• Subida usualmente a primera hora de la mañana• Asistentes: 

o Todos los ingenieros que han subido códigomínimo 1 por equipo

o Responsable(s) de QAo Release Manager

usualmente parte del equipo de Dev-Toolso 1+ ingenieros de Testing FWo Otros implicados si es necesarioo Responsable de sistemas 

Page 21: Tuenti release process

Release• Build process

o Tuenti es PHP pero no se sube tal cual

Page 22: Tuenti release process

Release• Build process

o Aplicar traduccioneso Minimizar código o Agrupar archivoso Y otros tweaks...

• Full build: 10 minutos aprox.o Delta builds (cambios solamente)

• Envio de archivos a todos los servidores: Segundos

Page 23: Tuenti release process

Stabilize

Page 24: Tuenti release process

Stabilize• "Live bugfixing" hasta ~11:30 AM• Canal de chat con todos los implicados• Errors spreadsheet (el mismo creado el dia anterior)

o Bugs conocidos que ya estén en el bugs backlog: ignorar o priorizar

o Nuevos bugs de prioridad baja: bugs backlog• Es importante aprender a priorizar

o No siempre da tiempo a arreglar durante la release

Page 25: Tuenti release process

Stabilize• Cierre de la release• Release Manager: 

o Merge a repositorios stable y hotfix• Ingenieros (1 por equipo):

o Pull del repositorio de stableMerge en default de repositorio del equipo 

o Merge del default de repositorio de equipo En cada rama en que se esté trabajando

Page 26: Tuenti release process

The End

Gracias por vuestro tiempo!