SlideShare uma empresa Scribd logo
1 de 41
CONTINUOUS DELIVERY PARA
APLICAÇÕES DESKTOP
O case-study FARO
jose.pereira@faro.com
miguel.alho@faro.com
AGENDA
▪ O contexto FARO
▪ Revisão de Continuous Delivery (CD)
▪ O caminho para Continuous Delivery
▪ Desafios encontrados
▪ Próximas iterações
▪ Conclusões
▪ Q&A
O CONTEXTO FARO
O CONTEXTO FARO
O CONTEXTO FARO
O CONTEXTO FARO
O CONTEXTO FARO
▪ Até 2018 ..
 2 releases por ano
 Releases intermédios de manutenção
 Lead Time e MTTR bastante longos
▪ Observabilidade Nula
 Só obtemos o feedback de clientes depois de passar pelo suporte ao cliente
 Crashes frequentes => má reputação
O CONTEXTO FARO
▪ Grandes aplicações
 CAM2 – 600MB
 CAD Translator – 1,4GB
 Device Center – 300MB
▪ Clientes com más ligações
▪ Aplicações que funcionam como sistemas
 Dependentes de SDKs que também precisam de ser instalados
 Aplicações independentes que interagem entre si
O CONTEXTO FARO
▪ O que mudar no processo de desenvolvimento para suportar a entrega contínua de
valor?
 Análise de erros
 Dinâmicas das equipas
 Alterações ao nível do CI
▪ Como implementar a operação de atualização das aplicações?
 Rápida entrega de novas funcionalidades
 Rápida correção de erros
 Teste e validação de provas de conceito de funcionalidades.
CONTINUOUS DELIVERY 101
Clientes
Repositório Servidor CI Servidor
distribuição
Servidor
Artefactos
Backlog
Logs e Métricas
Crashes
Customer Support
CHAVES DO CONTINUOUS DELIVERY
▪ Continuous Integration
▪ Suite de testes rápido
▪ Versionamento claro
▪ Imutabilidade da release
▪ Armazenamento de artefactos para distribuição
 Descrição da composição da release
▪ Deployment automatizado
O CAMINHO PARA CONTINUOUS
DELIVERY
Clientes
Repositório Servidor CI Servidor
distribuição
Servidor
Artefactos
Backlog
Logs e Métricas
Crashes
Customer Support
CD
CD CD
SOURCE CONTROL
•Mudança para GIT
•Tendência para o “Trunk-based
development”
 Projetos novos => GitHubFlow
 Projetos com release-cycle => GitFlow
CD CD
CD
GITFLOW
GITHUBFLOW
AUTOMATIZAÇÃO DE BUILDS
•Todas as aplicações tem build job
associado
 Team-City
 Build para pull-requests
 Build para master
•Build scripts = Gulp
 Consistente
 Repetível
 Fácil de automatizar
CD CD
CD
PASSOS DE BUILD
•Veto
•Restore de packages
 NPM + NuGet
•Versionamento
•Compilação
•Execução de testes
•Empacotamento
•Publicação de artefactos
CD CD
CD
OBSERVABILIDADE
•Deteção e recolha de info de crash
•Logging remoto
 Dados ofuscados
 Log de erros
 Log de tipos de operações
 Métricas de utilização
 Dashboards e alertas
CD CD
CD
INTOUCH ANALYSER
•Analisa os ficheiros resultantes da build
•Upload de ficheiros alterados
 Para DLLs e EXEs gerados
=> Hash “Funcional”
 Restantes ficheiros
=> Hash dos bytes do ficheiro
CD CD
CD
DETEÇÃO DE ALTERAÇÕES – HASH “FUNCIONAL”
HASH( cleanILDASM(dll) + getResources(dll) )
DETEÇÃO DE ALTERAÇÕES – REMOÇÃO
•AssemblyVersion fixa
 Major.0.0.0
•Decompilação e remoção de info auto-
gerado do IL
 AssemblyFileVersion
 AssemblyInformationalVersion
 MVID
 Timestamp
 Checksum
 ImageBase
DETEÇÃO DE ALTERAÇÕES – INCLUSÃO
•Resources => extração e hash dos
ficheiros concatenados
•XAML => Comparação de BAML
INTOUCH DATA SERVICES
•WebApi para metadados
 Armazenamento de definição de release
 Imutável
 Commit-level traceability
 Relações entre aplicações
 Armazenamento de pré-requisitos das
aplicações
 Autenticação para clientes
•Armazenamento para os ficheiros
CD CD
CD
INTOUCH CLIENT
•Windows Service
 Polling aos Data Services
 Download de incremento
 Orchestração de instalação e atualização
•Autohealing incorporado
 Validação de ficheiros (hash)
 Recuperação de instalação
 Remoção de lixo
CD CD
CD
DESAFIOS ENCONTRADOS Continuous Delivery à escala
global
DEPLOYMENT – IMPLEMENTAÇÃO NAÍVE
CD
CD File Storage
CD
push
pull
manifest files
build files
DEPLOYMENT - IMPLEMENTAÇÃO ESCALÁVEL-
NAÍVE
CD
CD
Blob Storage
CD
push
pull
CDN POP
build files
manifest files
PRÓXIMAS ITERAÇÕES Deployments com confiança
DEPLOYMENT – CDN WARMUP
CD
CD
Blob Storage
CD
CDN POP
build files
manifest files
Warmup
CONTINUOUS DEPLOYMENT
•Deployment ≠ Release
•Feature Toggles controlam
disponibilização
•Canarying permite ativar gradualmente
funcionalidades
•Rollback automático
 Baseado em métricas
 Blue/green deployment no cliente
CD
CDCD
CONCLUSÕES
LIÇÕES DA EXPERIÊNCIA
▪ Validar com spikes e dados as assunções
▪ Planear a história da distribuição em escala e globalização
▪ Requer alteração de hábitos e mindset
▪ Atenção à qualidade e infrastrutura de testes
▪ Definição de linguagem ubíqua
Q & A
Obrigado !
WE’RE HIRING!
jose.pereira@faro.com
miguel.alho@faro.com
SW DEV
QA
SW RESEARCH
WWW.FARO.COM > CAREERS

Mais conteúdo relacionado

Semelhante a Continuous Delivery for Desktop Applications: a case study - Miguel Alho & José Pereira Carvalho

2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Symantec Brasil
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsRenato Groff
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDImarlosimon
 
Apresentacao tec talks - lean e scrum v05
Apresentacao   tec talks - lean e scrum v05Apresentacao   tec talks - lean e scrum v05
Apresentacao tec talks - lean e scrum v05nsitechtalks
 
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Invent IT Solutions
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Anderson Silveira
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
TI Verde - Tecnologia da Informação Verde
TI Verde - Tecnologia da Informação VerdeTI Verde - Tecnologia da Informação Verde
TI Verde - Tecnologia da Informação VerdeJuliana Luz
 
Lecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareLecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareRogerio P C do Nascimento
 
Portfólio - Soluções Integradas.Net
Portfólio - Soluções Integradas.NetPortfólio - Soluções Integradas.Net
Portfólio - Soluções Integradas.NetMessias Dias Teixeira
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...iMasters
 
Workshop Rational Team Concert - RTC - Planejamento - aula 01
Workshop  Rational Team Concert - RTC - Planejamento - aula 01Workshop  Rational Team Concert - RTC - Planejamento - aula 01
Workshop Rational Team Concert - RTC - Planejamento - aula 01Wise Systems
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringFelipe Klerk Signorini
 

Semelhante a Continuous Delivery for Desktop Applications: a case study - Miguel Alho & José Pereira Carvalho (20)

2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application Insights
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDI
 
Apresentacao tec talks - lean e scrum v05
Apresentacao   tec talks - lean e scrum v05Apresentacao   tec talks - lean e scrum v05
Apresentacao tec talks - lean e scrum v05
 
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Apresentação fdd
Apresentação fddApresentação fdd
Apresentação fdd
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
TI Verde - Tecnologia da Informação Verde
TI Verde - Tecnologia da Informação VerdeTI Verde - Tecnologia da Informação Verde
TI Verde - Tecnologia da Informação Verde
 
Aula2
Aula2Aula2
Aula2
 
Lecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de SoftwareLecture 6 :: Gestão de Configuração de Software
Lecture 6 :: Gestão de Configuração de Software
 
Portfólio - Soluções Integradas.Net
Portfólio - Soluções Integradas.NetPortfólio - Soluções Integradas.Net
Portfólio - Soluções Integradas.Net
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
Workshop Rational Team Concert - RTC - Planejamento - aula 01
Workshop  Rational Team Concert - RTC - Planejamento - aula 01Workshop  Rational Team Concert - RTC - Planejamento - aula 01
Workshop Rational Team Concert - RTC - Planejamento - aula 01
 
Conceitos DW
Conceitos DWConceitos DW
Conceitos DW
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 

Mais de Comunidade NetPonto

Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Comunidade NetPonto
 
Sessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariSessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariComunidade NetPonto
 

Mais de Comunidade NetPonto (20)

Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
 
Sessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariSessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto Ferrari
 

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & José Pereira Carvalho

  • 1. CONTINUOUS DELIVERY PARA APLICAÇÕES DESKTOP O case-study FARO jose.pereira@faro.com miguel.alho@faro.com
  • 2. AGENDA ▪ O contexto FARO ▪ Revisão de Continuous Delivery (CD) ▪ O caminho para Continuous Delivery ▪ Desafios encontrados ▪ Próximas iterações ▪ Conclusões ▪ Q&A
  • 7. O CONTEXTO FARO ▪ Até 2018 ..  2 releases por ano  Releases intermédios de manutenção  Lead Time e MTTR bastante longos ▪ Observabilidade Nula  Só obtemos o feedback de clientes depois de passar pelo suporte ao cliente  Crashes frequentes => má reputação
  • 8. O CONTEXTO FARO ▪ Grandes aplicações  CAM2 – 600MB  CAD Translator – 1,4GB  Device Center – 300MB ▪ Clientes com más ligações ▪ Aplicações que funcionam como sistemas  Dependentes de SDKs que também precisam de ser instalados  Aplicações independentes que interagem entre si
  • 9. O CONTEXTO FARO ▪ O que mudar no processo de desenvolvimento para suportar a entrega contínua de valor?  Análise de erros  Dinâmicas das equipas  Alterações ao nível do CI ▪ Como implementar a operação de atualização das aplicações?  Rápida entrega de novas funcionalidades  Rápida correção de erros  Teste e validação de provas de conceito de funcionalidades.
  • 11.
  • 12. Clientes Repositório Servidor CI Servidor distribuição Servidor Artefactos Backlog Logs e Métricas Crashes Customer Support
  • 13. CHAVES DO CONTINUOUS DELIVERY ▪ Continuous Integration ▪ Suite de testes rápido ▪ Versionamento claro ▪ Imutabilidade da release ▪ Armazenamento de artefactos para distribuição  Descrição da composição da release ▪ Deployment automatizado
  • 14. O CAMINHO PARA CONTINUOUS DELIVERY
  • 15. Clientes Repositório Servidor CI Servidor distribuição Servidor Artefactos Backlog Logs e Métricas Crashes Customer Support
  • 17. SOURCE CONTROL •Mudança para GIT •Tendência para o “Trunk-based development”  Projetos novos => GitHubFlow  Projetos com release-cycle => GitFlow CD CD CD
  • 20. AUTOMATIZAÇÃO DE BUILDS •Todas as aplicações tem build job associado  Team-City  Build para pull-requests  Build para master •Build scripts = Gulp  Consistente  Repetível  Fácil de automatizar CD CD CD
  • 21. PASSOS DE BUILD •Veto •Restore de packages  NPM + NuGet •Versionamento •Compilação •Execução de testes •Empacotamento •Publicação de artefactos CD CD CD
  • 22. OBSERVABILIDADE •Deteção e recolha de info de crash •Logging remoto  Dados ofuscados  Log de erros  Log de tipos de operações  Métricas de utilização  Dashboards e alertas CD CD CD
  • 23. INTOUCH ANALYSER •Analisa os ficheiros resultantes da build •Upload de ficheiros alterados  Para DLLs e EXEs gerados => Hash “Funcional”  Restantes ficheiros => Hash dos bytes do ficheiro CD CD CD
  • 24. DETEÇÃO DE ALTERAÇÕES – HASH “FUNCIONAL” HASH( cleanILDASM(dll) + getResources(dll) )
  • 25. DETEÇÃO DE ALTERAÇÕES – REMOÇÃO •AssemblyVersion fixa  Major.0.0.0 •Decompilação e remoção de info auto- gerado do IL  AssemblyFileVersion  AssemblyInformationalVersion  MVID  Timestamp  Checksum  ImageBase
  • 26. DETEÇÃO DE ALTERAÇÕES – INCLUSÃO •Resources => extração e hash dos ficheiros concatenados •XAML => Comparação de BAML
  • 27. INTOUCH DATA SERVICES •WebApi para metadados  Armazenamento de definição de release  Imutável  Commit-level traceability  Relações entre aplicações  Armazenamento de pré-requisitos das aplicações  Autenticação para clientes •Armazenamento para os ficheiros CD CD CD
  • 28. INTOUCH CLIENT •Windows Service  Polling aos Data Services  Download de incremento  Orchestração de instalação e atualização •Autohealing incorporado  Validação de ficheiros (hash)  Recuperação de instalação  Remoção de lixo CD CD CD
  • 29. DESAFIOS ENCONTRADOS Continuous Delivery à escala global
  • 30. DEPLOYMENT – IMPLEMENTAÇÃO NAÍVE CD CD File Storage CD push pull manifest files build files
  • 31.
  • 32.
  • 33. DEPLOYMENT - IMPLEMENTAÇÃO ESCALÁVEL- NAÍVE CD CD Blob Storage CD push pull CDN POP build files manifest files
  • 34.
  • 36.
  • 37. DEPLOYMENT – CDN WARMUP CD CD Blob Storage CD CDN POP build files manifest files Warmup
  • 38. CONTINUOUS DEPLOYMENT •Deployment ≠ Release •Feature Toggles controlam disponibilização •Canarying permite ativar gradualmente funcionalidades •Rollback automático  Baseado em métricas  Blue/green deployment no cliente CD CDCD
  • 40. LIÇÕES DA EXPERIÊNCIA ▪ Validar com spikes e dados as assunções ▪ Planear a história da distribuição em escala e globalização ▪ Requer alteração de hábitos e mindset ▪ Atenção à qualidade e infrastrutura de testes ▪ Definição de linguagem ubíqua
  • 41. Q & A Obrigado ! WE’RE HIRING! jose.pereira@faro.com miguel.alho@faro.com SW DEV QA SW RESEARCH WWW.FARO.COM > CAREERS