Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tuenti - Release Process

Kartones
November 24, 2011

Tuenti - Release Process

@ Google IO Pre-Keynote at Google's Madrid offices (May 2011)

Kartones

November 24, 2011
Tweet

More Decks by Kartones

Other Decks in Programming

Transcript

  1. 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
  2. ¿Cómo de grande es Tuenti? • +11.000.000 usuarios • +76

    minutos de media de uso diario • +180.000.000 mensajes de chat / dia • +4.000.000 fotos subidas al dia en picos • +30.000.000.000 page views / mes • +40.000 peticiones web / seg. en picos • +1.000 servidores • +220 empleados (de ~18 nacionalidades) • +60% de los empleados de la parte de tech.
  3. 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 • ...
  4. 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
  5. 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
  6. Coding • Una vez hecho el checkout... • crear o

    actualizar al branch deseado... • y a programar! (la parte divertida)
  7. Testing • Unit tests, Integration tests o PHPUnit  Grandes

    modificaciones y extensiones o Mock objects  Extendido de PHPUnit • Acceptance tests o Selenium + PHPUnit o Normalmente desde VMs
  8. 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
  9. 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"
  10. 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 integration o Mergeando en repositorio de release • Errors spreadsheet o QA + ingenieros añaden bugs o Ingenieros responsables del código arreglan en el repositorio de release
  11. Release • Subida usualmente a primera hora de la mañana

    • Asistentes: o Todos los ingenieros que han subido código  mínimo 1 por equipo o Responsable(s) de QA o Release Manager  usualmente parte del equipo de Dev-Tools o 1+ ingenieros de Testing FW o Otros implicados si es necesario o Responsable de sistemas
  12. Release • Build process o Aplicar traducciones o Minimizar código

    o Agrupar archivos o Y otros tweaks... • Full build: 10 minutos aprox. o Delta builds (cambios solamente) • Envio de archivos a todos los servidores: Segundos
  13. 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
  14. Stabilize • Cierre de la release • Release Manager: o

    Merge a repositorios stable y hotfix • Ingenieros (1 por equipo): o Pull del repositorio de stable  Merge en default de repositorio del equipo o Merge del default de repositorio de equipo  En cada rama en que se esté trabajando