cloud computing e integração contínua com o windows azure

Post on 21-Jan-2017

124 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DevOps

Integração Contínua com a Microsoft Azure

Arthur Mazza – arthur.mazza@doqconsulting.com.br

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...

Arthur Gabriel Mazza de Oliveira

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!

top related