Palestra DevOps Days RJ – Continuous Deployment com Azure DevOps

Palestrante: Leonardo Matsumota
Cargo: IT Systems Manager
Evento: DevOps Days – Rio de Janeiro
Tema: DevSOXOps – Continuous Deployment com Azure DevOps em ambientes de compliance
Data: 09/11/2018
Material: DevSOXOps – DevOps Days RJ

image1.jpeg

Tópicos da apresentação

  • Inovação & Controle
    • Time to market
    • Build – test – release – monitor – plan
    • Compliance e auditorias
    • ITGCs – itens de controle
  • SOX – Sarbanes Oxley
  • Processo de Change Management
    • Lead Time
    • Gargalos
    • Processos Manuais
  • Pilar Pessoas
  • Pilar Processos
    • Boas práticas, Continuous Integration e Testes
  • Pilar Ferramentas
    • Microsoft Azure DevOps e extensões

 

Ciclo de vida da aplicação com Azure DevOps – do backlog a homologação

E como está o processo de desenvolvimento e homologação das entregas no seu time? Além da DoD (Definition of Done), recomendo estabelecer um processo que compartilhe as responsabilidades entre as áreas durante o ciclo de vida da aplicação, e assim, garantir a qualidade desde a entrada do backlog até a liberação para homologação.

Veja o diagrama proposto, iniciando a construção do backlog com o PO. O SM facilita o time de desenvolvimento na quebra das histórias em tarefas e estimativas. O time de desenvolvimento utiliza boas práticas (como testes unitários, check-in frequentes, etc.) para liberar a área de QA. Por aqui temos a proposta da execução dos planos de testes e também da automação deles*.

QA-dev-processo
* avalie a maturidade da sua equipe em relação a testes automatizados. Claro, que a automação pode ser incorporada na sua equipe de desenvolvimento.

Azure DevOps possui uma solução completa para te apoiar neste processo. Por exemplo, no Azure Boards podemos criar o backlog da Sprint e gerenciar a capacidade do time. No Azure Pipelines Azure Repos trabalhamos com o desenvolvimento das aplicações, integração contínua e versionamento. E o Azure Test Plans permite criar os planos de testes para estes work items.

azure-devops-01

Azure Boards: além da configuração das Sprints, é imprescindível estruturar o backlog em Epic – Feature – User Story com as tarefas para o time de desenvolvimento executar.

backlog-estrutura.png

Utilize as melhores práticas (INVEST, etc.) para auxiliar o PO a escrever boas estórias com critérios de aceitação claros. As técnicas como planning poker contribuem nas estimativas das histórias.

historias-VSTS

Azure Pipelines e Azure Repos: para mais informações, veja meu post de Pipeline de Build e Release.

azure-devops-pipeline-06.png

Azure Test Plans: o Plano de Testes também pode ser criado no Azure DevOps. Visite este post e veja o passo-a-passo deste processo.

Change Management e DevSOXOps com Azure DevOps

Este post é direcionado as empresas regidas por compliance e que possuem um processo mais formal de publicação de releases em produção. Sem dúvida, precisamos trabalhar com o mínimo de intervenção manual, utilizando ferramentas para automatizar e rastrear os pontos de controle exigidos em auditorias.

E o que é SOX? E como as empresas que estão no Brasil são impactadas?
soxE quais as principais recomendações para as empresas neste cenário?
compliance

Azure DevOps (Microsoft) e o processo de Change Management


Teste técnico: um dos primeiros passos é a evidência do teste técnico. Que tal consolidar com o Quality Gates do SonarQube? Este step pode ser configurado no pipeline do Build/Release.

change-management-01

Homologação: os planos de teste (na área de testes do Azure DevOps) são criados e vinculados com os Work Items. Eles possuem os recursos de gravação ou screenshot para apoiar a validação do sistema. Em caso de erro, você pode abrir um novo bug para aquele Work Item.

O Request Feedback é outro recurso para solicitar a homologação do usuário e armazenar as evidências.

This slideshow requires JavaScript.

Procedimento de publicação: por fim, a configuração do pipeline no Azure DevOps permite o controle das releases e aprovação para a liberação em ambientes como o de QA e produção.

This slideshow requires JavaScript.

 

 

 

 

Pipeline de Build e Release – Azure DevOps

Vamos demonstrar em poucos passos como configurar o Build e Release (Azure Pipelines) no Azure DevOps.

azure-devops

Build

1. Definição de tarefas e as etapas do Build.

azure-devops-pipeline-03

2. O versionamento é essencial para o Continuous Integration e a gerência de configuração. O Get Sources é o local das configurações e apontamento para o código-fonte.

azure-devops-pipeline-04

3. A compilação do código-fonte e a análise da cobertura dos testes unitários. O IntelliTest pode apoiar nesta atividade.

 

azure-devops-pipeline-05.png

4. Também há uma etapa para incluir a análise de código. O SonarQube é uma recomendação para analisar bugscode smellsvulnerabilitiesduplications.

azure-devops-pipeline-06.png

Release

5. E o posterior deploy da aplicação, identificando as tarefas, variáveis e opções. Por aqui referencia-se o Build realizado.

azure-devops-pipeline-01.png

6. O processo de aprovações é muito válido para empresas regidas por compliance. Pode ser configurado aprovadores antes do deploy em cada ambiente – desenvolvimento, homologação, QA e produção.

azure-devops-pipeline-02.png

Palestra Agile Trends – Habilitando o Continuous Deployment em empresas regidas por SOX

Palestrante: Leonardo Matsumota
Cargo: IT Innovation Manager
Evento: Agile Trends (Florianópolis)
Tema: DevSOXOps – Habilitando o Continuous Deployment em empresas regidas por SOX e compliance
Data: 10/10/2018
Download do material: Apresentação DevSOXOps – Agile Trends

Agile-trends-01

Tópicos da apresentação

  • Cadência Ágil e DevOps na Educação
    • SAFe
    • Azure DevOps e ferramentas que utilizamos
  • SOX
  • Processo de Change Management anterior
  • Azure DevOps Boards
    • Estruturando os times de projeto e template de processo
    • Cadência dos times
    • Backlog: Epic >Feature > User Story
  • Continuous Integration / Continuous Delivery / Continuous Deployment
  • Configuration Management
  • Definições de Build
  • Cultura DevOps na organização
  • Pipeline
  • Compliance and auditing
  • Change Management com Azure DevOps
  • Métricas e Dashboard

Usuários e grupos de permissões no Azure DevOps

Ao criar seus projetos e times no Azure DevOps, temos outro passo importante que é a gestão de usuários e permissões de quais recursos irão utilizar. Os principais planos de usuários são:

  • Basic: até 5 usuários e dispõe de recursos como criar e editar work items, build, release e outros.
  • Stakeholder: não tem limite de usuários, mas acesso restrito de recursos. Recomendado para usuários que precisam visualizar o backlog do projeto.
  • Visual Studio subscribers: possui recursos adicionais, tais como o Test Manager.

Para visualizar os usuários da conta de sua organização, acesse o Azure DevOps em  Organization Settings e Users. Veja no sumário quantos usuários estão utilizando cada tipo de licença e as extensões de Test Manager e Package Management.

azure-devops-users

Já em Organization Settings > Security do Azure DevOps, podemos criar grupos e habilitar as permissões relacionadas a estes grupos. Os membros do grupo herdam as permissões concedidas ou revogadas.

azure-devops-group

O quadro abaixo exibe as principais permissões que podemos gerenciar no Azure DevOps. As permissões estão relacionadas a estrutura (projetos ou times de projetos) ou as features. Veja que as configurações vão desde repositórios, CI (build/release), aprovações até análise de dados e manipulação de work items.

vsts-permissions
Fonte: Permissions – Azure Devops

O Azure DevOps já atribui permissões padrão aos usuários, como por exemplo de acesso a ferramenta.

E a gestão de acessos – inclusão e revogação de usuários, assim como a gestão dos grupos e permissões de acesso podem ser feitos nas mesmas áreas citadas anteriormente (Organization Settings > Security e Organization Settings > Users).

azure-devops-add

É isso… em breve falaremos sobre a gestão de usuários com Azure Active Directory (Azure AD) e os detalhes de como distribuir os recursos entre usuários e grupos.

Trabalhando com Git Tags no Azure DevOps

Azure Repos Azure Repos
Neste post vamos navegar no Azure Repos (do Azure DevOps) e compartilhar a aplicabilidade de Tags no histórico do seu repositório de código-fonte. Existem dois tipos de Tags:

  • Lightweight Tags: ponteiro para commits específicos.
  • Annotated Tags: possui informações adicionais como data, mensagem e tagger (marcador).

Entre os principais comandos de uso das Git Tags nas tarefas do Azure DevOps estão:  create tag / view tag / delete tag.

Criando Tags
Após a realização do commit de seu código, acesse a área Repos > Commits do Azure Devops. Procure o commit que você deseja criar a marcação e escolha Create tag. Defina o nome e descrição para a Tag.

This slideshow requires JavaScript.

* nesta área você pode criar somente annotated tags. Para lightweight tags, você deve enviar via push, utilizando linha de comando para aparecer no Azure DevOps.


Apagando Tags
Se você identificou o commit errado, ou por qualquer outro motivo, o recurso Delete Tag permite apagar a Tag do seu repositório. Para isso, você precisa da permissão de Force Push no nível do repositório.

Acesse Repos > Tags no Azure DevOps e escolha a tag que será apagada. Escolha a opção  Delete Tag.

delete-tag


Visualizando Tags
Em Repos > Tags você pode visualizar todas as Tags criadas. Utilize o filtro de busca para encontrar pelo nome. Em repositórios com um grande número de Tags, este recurso pode ser bem útil.

tag-repos

Criando branch a partir da Tag
Outro recurso interessante é a criação de uma nova branch a partir de uma Tag. Para isso, acesse Repos > Tags, clique em + New branch. Especifique o nome e work items a serem vinculados.

new-branch-tags

Veja que a branch foi criada no seu repositório, conforme as configurações realizadas.

branch-tags

 

Microsoft Teams – adicionando Dashboards ou Kanban board do Azure DevOps

Falamos anteriormente sobre tecnologias sociais e como utilizar a Wiki (do próprio Azure DevOps) ou a integração com o Slack para melhorar a comunicação no seu time. O acompanhamento dos projetos exige esta interação imediata entre as equipes, principalmente naquelas distribuídas com fusos e idiomas diferentes.

Além de manter o alinhamento com todos, tais como decisões técnicas e discussões, outra grande virtude é a distribuição rápida das informações e acesso imediato, por exemplo do gestor que precisa demonstrar o Kanban Board do projeto ou do Tester que precisa interagir com o desenvolvedor após a realização do Build.

Neste post vamos demonstrar a integração do Microsoft Teams com o Azure DevOps. Trata-se de um ótimo recurso para acessar os Dashboards ou Kanban Board (dos seus projetos no Azure DevOps) dentro do próprio Teams.

Acesse então o Microsoft Teams e adicione uma nova guia (+) em sua equipe.

teams-vsts-01

Escolha o aplicativo do VSTS e clique no botão Instalar. Faça a autenticação na sua conta do Azure DevOps (antigo VSTS) e conecte nela.

teams-vsts-02

Em seguida, faça a conexão com o Dashboard ou Kanban board do seu projeto e time.

teams-vsts-03

Pronto! O Kanban board * já está disponível dentro do Microsoft Teams. Agora você pode utilizar rapidamente quando precisar de alguma informação do Board do Azure DevOps daquele projeto.

teams-vsts-04

* no meu exemplo escolhi a opção Kanban board, mas há a opção Dashboard também.

 

 

Explorando o Analytics (Service e Views) no DevOps Azure

Abordamos o Azure DevOps em um dos últimos posts, e os principais recursos Boards (planejamento das atividades), Repos (gestão de fontes), Pipelines (CI/CD), Test Plans (suítes de teste) e Artifacts (artefatos organizados e pacotes protegidos).

E como está a análise dos dados? É possível gerenciar a sua equipe com indicadores? E as métricas de qualidade? Vejo como ponto fundamental coletar as informações de todo o ciclo de vida da aplicação e garantir a gestão dos principais processos – tarefas, sprints, builds/releases, bugs, qualidade do código, cobertura dos testes, etc.

Analytics é a solução do Azure DevOps para criar dashboards, relatórios, widgets e integração com Power BI para extrações mais detalhadas. Também possui acesso OData para extensibilidade. Há dois conceitos importantes sobre o Analytics:

  • Analytics Service: serviço que provém o modelo de dados para o Azure DevOps. É otimizado para acesso rápido de leitura e agregações no lado servidor. O Analytics extension é uma extensão utilizada neste contexto.
  • Analytics View: provém acesso imediato as informações, simplificando o uso de critérios e relatórios no Power BI. Algumas views já são automaticamente criadas após a instalação do Analytics extension.

Veja algumas views disponíveis no Analytics Views para serem utilizadas no Power BI. Você pode utilizar as views padrões ou criar utilizando o Power BI Data Connector ou no próprio Azure DevOps.

azure-devops-analytics

A área de Dashboards do Azure DevOps permite visualizar as principais métricas do ALM (Application Lifecycle Management) com o uso dos dados que explicamos anteriormente. Sugiro a leitura de 2 posts – Dashboard de projetos ágeis | Dashboard de projetos ágeis em larga escala para confirmar a aplicabilidade e uso em seu ambiente.

dashboard-vsts-agil-escala

O Power BI é a ferramenta mais completa para análise de informações. Se tiver necessidade de extrações mais avançada, veja como utilizar a conexão entre o Azure DevOps e Power BI:

E assim, criar os indicadores de acompanhamento do seu projeto. O destaque é com as múltiplas visões que podemos construir, por exemplo, a distribuição de tarefas em vários times, ou comparação de Sprints do projeto.