Levando um negócio
inovador, baseado em
outsourcing, ao continuous
delivery, com automação e
cloud services.
Welington Zan...
ConectSys
O sistema nervoso
da ConectCar
ConectSys
ConectSys
•
•
•
•
•
ConectSys
• 42 Windows Services
• 11 web services
• 5 Web Sites
• Distribuídos em 9 servidores
Caixa preta
Posse dos ativos
Infraestrutura no Azure
 As máquinas do TFS serão hospedas no
Windows Azure
 As máquinas necessitam estar inseridas
no d...
Infraestrutura no Azure
Processo de entrega e validação
Processo de entrega de software
Gestorde
configuração
ProjectOwnerAnalistaDesenvolvedor
An...
Processo de entrega e validação
Processo de entrega e validação
Complexidade operacional
• Operação, comercial e
financeiro
• Correções, melhorias e
projetos
• 36 Projetos em um ano
Complexidade operacional
Complexidade operacional
Complexidade operacional
Desenvolvimento paralelo
Banco de dados como código
Processo de entrega e validação
Processo de entrega de demandas (Melhorias e Projetos)
Gestorde
configuração
FábricaAutoma...
Processo de entrega e validação
Liberação de versão
IntegradorComitêAutomação
Gestorde
configuração
Infra
Analistasde
negó...
Automação
Automação
Automação
Homologação sob demanda
Homologação sob demanda
Cadência de entrega
• Modularizado e com baixo acoplamento
• Suporte à falhas
Refatorar o sistema
Automação de testes
• Aumentar a cobertura dos teste unitários
• Automatizar testes funcionais
Análise automática de código
• Métricas de código
• Padrões de desenvolvimento
Monitoramento em tempo real
• Uso da aplicação
• Performance
• Problemas
Obrigado!
Levando um negócio inovador baseado em outsourcing ao Continuous Delivery, com automação e Cloud Services.
Levando um negócio inovador baseado em outsourcing ao Continuous Delivery, com automação e Cloud Services.
Levando um negócio inovador baseado em outsourcing ao Continuous Delivery, com automação e Cloud Services.
Próximos SlideShares
Carregando em…5
×

Levando um negócio inovador baseado em outsourcing ao Continuous Delivery, com automação e Cloud Services.

295 visualizações

Publicada em

Estudo de caso da ConectCar apresentado no
ALM Practices III.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
295
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • O desenvolvimento das aplicações é todo terceirizado e hoje está concentrado em uma fábrica de software.
    A fábrica controla todos os ativos de software e detém todo o conhecimento técnico da aplicação. Isso representa um risco à ConectCar. Uma crise na fábrica ou na sua relação com a ConectCar representaria um grande custo de mudança.
  • O desenvolvimento das aplicações é todo terceirizado e hoje está concentrado em uma fábrica de software.
    A fábrica controla todos os ativos de software e detém todo o conhecimento técnico da aplicação. Isso representa um risco à ConectCar. Uma crise na fábrica ou na sua relação com a ConectCar representaria um grande custo de mudança.
  • Trazer os ativos e o conhecimento da aplicação para dentro de casa.
    Contratamos um gestor de configuração, um arquiteto e o especificacoes.com
    Precisávamos disso rápido e acessível externamente, por isso optamos por manter a infraestrutura do TFS no Azure, o que simplificou muito todo o processo. Servidores que não estão em uso podem ser desligados. Ex: Servidores de build e release.
  • Definimos um processo de entrega e validação de software que contempla:
    A entrega dos fontes deve ser feita no TFS da ConectCar
    As versões do sistema serão geradas automaticamente no ambiente da ConectCar
    O processo de build automatizado garante que todo o código fonte e dependências do sistema estão em posse da ConectCar
  • Nesse processo tivemos uma séria resistência da fábrica, e também notamos a dificuldade que ela própria tinha de gerir os ativos de software.
    Frases como:
    Precisamos de três dias para te entregar a última versão do software
    Minha máquina contém todas as dependências para compilar a aplicação, preciso de tempo para separá-las. A dependências eram desconhecidas e o processo dependia da máquina do desenvolvedor.
  • Uma start-up, com um negócio em crescimento e evoluindo constantemente.
    36 projetos no ano passado.
    Solicitações de áreas diferentes, com tempos diferentes, que concorrem pelos mesmos recursos
    Correções, melhorias, projetos
    Um ambiente propício à problemas de concorrência e integração
    A fábrica atual tem limite de capacidade de entrega, precisamos de mais parceiros
  • Hoje temos um esforço grande de gestão dos ambientes de homologação e com o planejamento das releases.
    Com uma quantidade limitada de servidores e um processo de instalação trabalhoso, temos que planejar com cuidado a integração das demandas e sua validação.
    Ainda temos que lidar com velocidades diferentes entre as áreas no processo de homologação.
  • Com um agravante no planejamento, que é:
    * Disponibilizar mais ambientes em um momento de alta demanda significa ter que arcar com os custos desse ambiente quando não houver demanda.
  • Para endereçarmos esse desafio, começamos com a criação de uma estrutura de desenvolvimento paralelo que acomodasse todos tipos de demandas
  • Iremos trabalhar com banco de dados da mesma forma com que trabalhamos com o restante do código da aplicação. Com a habilidade de fazer check-in e check-out, comparar e compilar. Para uma versão da aplicação teremos tudo o que é necessário para coloca-la no ar disponível no Source Control.
    Isso também simplifica a automação da instalação das mudanças de banco, que será feita no mesmo momento da instalação da aplicação.
  • Definimos o processo de forma que a homologação das funcionalidades solicitadas por cada área possa correr em paralelo, de forma gerenciada.
    Cada demanda/projeto será homologado separadamente, respeitando o tempo do cliente, evitando dependência entre eles (comercial, operação e financeiro).

  • Após as demandas terem sido aprovadas, um processo de fechamento de versão, altamente baseado em automação, será responsável por integrar as demandas, validar a versão e promove-la até produção.

  • A automação será realizada utilizando o TFS Build para compilar e empacotar a versão, e o Release Management para instalar e gerir a promoção da mesma.
    Já temos as customizações desenvolvidas e testadas.
  • Aqui temos um exemplo em que vários estágios de promoção estão definidos, cada um com seus aprovadores.
  • E em cada estágio o processo de instalação é automatizado na ferramenta e controlado.
    Esse processo instala Windows Services, Web Services e Web Sites.
    Em breve também o banco de dados.
  • Suportados pela posse dos ativos e pela automação do processo de build e deploy, exploraremos a nuvem para disponibilizar ambientes para homologação das demandas em paralelo. Diminuindo o time-to-Market para as áreas de negócio, sem implicar em custos, já que esses ambientes são desativados durante todo o período em que não estão em uso.
  • Se não há demandas a serem homologadas, podemos, simplesmente, desligar os ambientes e reduzir a quase zero os custos.
  • Outro aspecto importante do novo processo de trabalho objetiva uma mudança cultural, com a criação de uma cadência de entrega de melhorias. Queremos que os usuários comecem a se adaptar com o a entrega frequente, e isso irá gerar consequências como maior proximidade e entendimento mútuo, mais compromisso com prazos, maior visibilidade dos resultados. Tudo isso nos prepara para a etapa 3.
  • Queremos garantir a resposta mais rápida possível ao negócio, aumentando nossa frequência de entrega até que ela seja contínua.
  • Queremos garantir a resposta mais rápida possível ao negócio, aumentando nossa frequência de entrega até que ela seja contínua.
  • Queremos garantir a resposta mais rápida possível ao negócio, aumentando nossa frequência de entrega até que ela seja contínua.
  • Queremos garantir a resposta mais rápida possível ao negócio, aumentando nossa frequência de entrega até que ela seja contínua.
  • Levando um negócio inovador baseado em outsourcing ao Continuous Delivery, com automação e Cloud Services.

    1. 1. Levando um negócio inovador, baseado em outsourcing, ao continuous delivery, com automação e cloud services. Welington Zanelato System Manager wzanelato@conectcar.com
    2. 2. ConectSys O sistema nervoso da ConectCar
    3. 3. ConectSys
    4. 4. ConectSys • • • • •
    5. 5. ConectSys • 42 Windows Services • 11 web services • 5 Web Sites • Distribuídos em 9 servidores
    6. 6. Caixa preta
    7. 7. Posse dos ativos
    8. 8. Infraestrutura no Azure  As máquinas do TFS serão hospedas no Windows Azure  As máquinas necessitam estar inseridas no domínio da ConectCar  A máquina do TFS Application Tier precisa estar exposta na internet para permitir acesso externo, para isto será necessário um subdomínio do tipo: tfs.conectcar.com  Para acesso ao TFS os usuários utilizarão contas do Active Directory, terceiros necessitarão ter usuários ativos no Active Directory para ter acesso ao TFS Build ServerData Tier Team Foundation ClientApplication Tier Active Directory
    9. 9. Infraestrutura no Azure
    10. 10. Processo de entrega e validação Processo de entrega de software Gestorde configuração ProjectOwnerAnalistaDesenvolvedor Analistade testes Usuáriochave Selecionar Demanda Abrir branchs Analise da demanda Artefatos Desenvolver demandas Artefatos Testes desistema Passou nos testes? Testes funcionais Evidência s Não Implanta em homologação Passou nos testes? Merge dos fontes para Main Sim Implanta em integração Roda testes gravados Passou nos testes? Corrige erros de integração Aplica Label Implanta em produção Abrir GMUD Não Check-in TFS-ConectCar
    11. 11. Processo de entrega e validação
    12. 12. Processo de entrega e validação
    13. 13. Complexidade operacional • Operação, comercial e financeiro • Correções, melhorias e projetos • 36 Projetos em um ano
    14. 14. Complexidade operacional
    15. 15. Complexidade operacional
    16. 16. Complexidade operacional
    17. 17. Desenvolvimento paralelo
    18. 18. Banco de dados como código
    19. 19. Processo de entrega e validação Processo de entrega de demandas (Melhorias e Projetos) Gestorde configuração FábricaAutomaçãoUsuáriochave Desenvolver demandas / Resolver bugs Executa testes de sistema Passou nos testes? Homologa demandas Não Entrega demanda desenvolvida Sim Homologada? Sim Inicia iteração/ projeto Compila e executa análise estática de código Inicia processo de homologação Aprova instalação em homologação Instala versão no ambiente de homologação Aprova demandas desenvolvidas Não Demandas aprovadas? Sim Liberação de versão Não
    20. 20. Processo de entrega e validação Liberação de versão IntegradorComitêAutomação Gestorde configuração Infra Analistasde negócio Fábricas Demandas aprovadas Seleciona demandas para a próxima versão Realiza o merge das demandas na Main / Correção Solicita fechamento da versão Compila e executa análise estática de código Instala versão no ambiente de integração Executa testes de regressão na versão Sim Aprova a versão Planeja a liberação da versão e uso da janela de mudança Passou nos testes? Não Diagnostica erros [Erro em código] [Conflito em Requisitos] Resolve conflito em requisitos Solicita instalação da aplicação Instala aplicação em produção Instala alterações em banco dedados Executa testes fumaça Confirma liberação da versão Notifica interessados Versão instalada corretamente? Sim Não Rollback Versão em produção Realiza merge para cada branch ativo Branchs atualizados
    21. 21. Automação
    22. 22. Automação
    23. 23. Automação
    24. 24. Homologação sob demanda
    25. 25. Homologação sob demanda
    26. 26. Cadência de entrega
    27. 27. • Modularizado e com baixo acoplamento • Suporte à falhas Refatorar o sistema
    28. 28. Automação de testes • Aumentar a cobertura dos teste unitários • Automatizar testes funcionais
    29. 29. Análise automática de código • Métricas de código • Padrões de desenvolvimento
    30. 30. Monitoramento em tempo real • Uso da aplicação • Performance • Problemas
    31. 31. Obrigado!

    ×