DevOps
Integração Contínua com a Microsoft Azure
Arthur Mazza – [email protected]
www.doqconsulting.com.br
Arquiteto de QA – Totvs
CEO na DOQ Consulting
Perfil
• Ágil• Dinâmico• Técnico• Curioso• Agregador• Colaborativo
O que é?
DevOps é o alinhamento do time de desenvolvimento com o time de operações, em relação à processos, ferramentas e responsabilidades, visando acelerar as entregas em produção com um elevado grau de qualidade.
Os 4 eixosCompartilhamento
• O feedback é tudo• Boa comunicação entre a equipe
Cultura• Colaboração• Fim das divisões• Relação saudável entre as áreas• Mudança de comportamento
Avaliação• Métricas• Medições• Performance• Logs e integração• Auditoria
Automação• Deploy• Controle• Monitoração• Gerência de configuração• Orquestração
Microsoft Azure
A Microsoft Azure é uma coleção crescente de serviços de nuvem integrados — análise, computação, banco de dados, serviços móveis, rede, armazenamento e Web.
Visual Studio Team Services
O Visual Studio Team Services oferece um conjunto de ferramentas de colaboração em nuvem que funcionam com o seu IDE ou editor, para que sua equipe possa trabalhar de forma efetiva em projetos de software de todos os formatos e tamanhos.
Ele fornece serviços como: Controle de versão, Ferramentas para equipes Agile, Integração contínua, Linguagens e ferramentas, Integração, Testes de desempenho.
Web App
O recurso de Aplicativos Web no Serviço de Aplicativo do Azure permite aos desenvolvedores compilar, implantar e gerenciar rapidamente sites e aplicativos Web avançados. Nele é possível hospedar aplicativos Web e APIs usando .NET, Node.js, PHP, Python e Java.
GIT
Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos.
GIT
Cada diretório de trabalho do Git é um repositório com um histórico completo com a habilidade total para acompanhamento das revisões.
O Git é um software livre.
Configurando Build automático
Primeiro passo da integração contínua, basicamente consiste em automatizar o processo de construção (build) de um sistema, gerando pacotes prontos para implantação de maneira controlada. Estes pacotes passam a ser a referência que todos os envolvidos no projeto utilizam, evitando a desculpa de que "na minha máquina compila".
Para a implementação desta prática, são utilizados diversos recursos e ferramentas em conjunto, como: controle de versões (Subversion, GIT, TFVC), automação de build e de dependências (Maven, Nuget, NPM), servidor de compilação, sistema de gerenciamento de Build(Team City, Jenkins, Visual Studio Team Services) slot de hospedagem (Web App, AWS Amazon), entre outros.
Toda build deve incluir uma suíte de testes(funcionais e unitários) automatizada, para diminuir a chance de problemas nos pacotes gerados.
Configurando Build automático
Testes unitáriosSão testes que verificam se uma parte específica do código, costumeiramente a nível de função, está funcionando corretamente. Em um ambiente orientado a objetos é usualmente a nível de classes e a mínima unidade de testes inclui construtores e destrutores. O objetivo do teste unitário é assegurar que cada unidade está funcionando de acordo com sua especificação funcional. Estes tipos de testes são frequentemente escritos por desenvolvedores quando trabalham no código, para assegurar que a função específica está executando como esperado.
Uma função deve ter muitos testes para dar cobertura a todos os caminhos possíveis do seu código. Sozinho, o teste unitário não pode verificar a funcionalidade de uma parte do software, mas em contrapartida é usado para assegurar que os blocos constituintes do software trabalham independentes dos demais.
Testes unitários
Testes Funcionais automatizados
Testes funcionais, basicamente são testes que validam os requisitos funcionais de uma aplicação, trabalhando o conceito: “A aplicação faz o que deveria fazer?”. Eles normalmente são representados por um caso de teste.
É altamente recomendado que os testes funcionais de um sistema sejam automatizados, o máximo possível, ou seja, sua execução fica responsável por uma tecnologia especifica integrada ao processo de integração contínua. Existem inúmeros benefícios, como:
• Acelerar os testes de um roteiro em vários navegadores;
• Retorno rápido de resultados de falhas no sistema, agilizando o processo de correção;
• Encontrar bugs mais cedo e aumentar a cobertura de testes;
• Executar testes mais rápido que um ser humano,
• Reutilização de testes.
Testes Funcionais automatizados
Publish / Deploy GIT commit and push ? - OK
Build success ? OK Unit Test passed? OK Functional Tests passed? OK
ready to...
Zona de conflito – Infra x Dev
Eles acham que o problema do devel não é problema deles
Eles falam não Eles falam não pela segunda vez Eles falam não pela terceira vez
Eles falam não o tempo todo por diversas razões, para diversos pedidosEles demoram, atrasam e perdem prazos de atendimento
Eles se preocupam com UPTIME e não com o negócio
Eles não se esforçam paraajudar o dev a encontrar o problema
O problema não são as máquinas, é o código
Está funcionando no meu notebook
Seja você o agente da mudança!
Fontes e links úteis
• http://www.devmedia.com.br/• http://www.seleniumhq.org/• https://www.visualstudio.com/pt-br/products/visual-studio-team-services-vs.aspx• https://www.visualstudio.com/• https://azure.microsoft.com/pt-br/?wt.mc_id=AID_sem_2x6tXtX3&• https://aws.amazon.com/pt/free/• http://junit.org/junit4/• https://www.visualstudio.com/en-us/docs/build/apps/aspnet/aspnetcore-to-azure• https://www.visualstudio.com/en-us/docs/build/overview• https://cloud.google.com
Top Related