TDC 2015 - Além do pen-drive: empacotando seu software para distribuição e implantação

Preview:

Citation preview

Além do pen-drive:

Empacotando seu software para distribuição e implantaçãoIGOR ABADE V. LEITE (@IGORABADE)

MICROSOFT MVP, VISUAL STUDIO ALMLAMBDA3 (WWW.LAMBDA3.COM.BR)

Desde 2006• Visual Studio Team System• Visual Studio ALM

Sobre mim

@igorabadewww.tshooter.com.br

Desde 2010• Consultoria• Desenvolvimento• TreinamentoDemocracia Organizacional

Code Complete!Fim da codificaçãoSoftware pronto e testado

Hora de entregar ao usuário finalMas como entregar os bits?

Como entregar os bits?

Como eu vejoComo realmente é

Como entregar os bits?

Demo

Windows Installer• Geração declarativa

(data-driven) de instaladores

• Maduro (introduzido com Office 2000)

• Suporta cenários avançados de instalação em Windows• Upgrade/downgrade• Patching, Advertising,

Repair• Modularização (MSM)• Instala qualquer coisa que

rode sobre Windows

Visual Studio Installer• Simples mas limitado• Suporta cenários mais

comuns• Incompatível com CIWindows Installer XML (Wix)• Mais usado; complexo• Todos os recursos do

MSI• Compatível com CI

ClickOnce• Criado para “Smart

Clients”• Distribuição online• Auto Update• Apenas .NET• Suporte limitado a CI

Legal, mas... Não.

NuGet• Gestão de “pacotes de

componentes”• Similar a Ruby Gems e

Maven• Open-source• Descreve formato de

pacote e protocolo• Elimina dependency hell

www.nuget.org

Chocolatey• Gestão de “pacotes de

sistemas"• Similar ao apt-get no

Linux• Utiliza formato de

pacote e protocolo no NuGet

• Baseado em PowerShell

www.chocolatey.org

Além do desktopE deploy na web?Sites, serviços, APIsConteúdo estático e dinâmico

Mesmas necessidades, desafios diferentes.Posso ate usar MSI, mas...

Será que é uma boa ideia?

Web Deploy“Windows Installer para IIS”• Gera um única arquivo ZIP

(similar ao WAR no Java EE)• Pode conter também bancos

de dados, assemblies GAC, chaves Registry, metadados IIS e mais

• Usado também para backup e versionamento

Crie pacotes com• Linha de comando• APIs .NET• Visual Studio• IIS Manager

Web Deploy faz parte do IIS• Componente opcional• Instalar com Web

Platform Installer• Client-side• Web Deployment Tool• Linha de comando

• Server-side• Web Deploy• Serviço IIS

Web Deploy no IIS• Remote Agent Service

• Depende do Web Management Service

• Management Service Delegation

• IIS Deployment Handler

• UI de administração• Importar/exportar• Permissões

Configuração de Infraestrutura

PowerShell DSC

AssumedState

Começa com a descrição de umambiente-alvo

Executa uma sériede ações

DesiredState

Termina no estadodesejado (com sorte!)

Envia uma descrição doestado desejado

DSC atinge o estado desejadoGet.Test.Set

DSC Resources

TFS

Config as Code

Galeriade

Recursos

Configuração de Infraestrutura

O que é DSC?

Defina e Planeje

Desenvolva

Meça e Aprenda

Implante e Opere

MonitoreImplemente

Product backlog

OPS backlog

Software em produção

Requisitos

Perda de focoQualidade é uma fasePassagem de bastão entre desenv e testesIntegração de times multiplataforma

Expectativa dos usuários não atendidas

Requisitos de produção não atendidos/estabelecidos

Dificuldade para identificar causas raiz em incidentes de produção

Ferramentas e processos distintos

Usuários/Stakeholders

Operações

Desenv & Teste

Feedback não gera ação para desenvolvimento

Requisitos não compreendidosPrioridades conflitantes

DevOps, Continuous Delivery, Release Management...

Implantação ContínuaProcesso de implantação unificado para todos os ambientes.Implantações em ambientes específicos a partir de builds automatizados.

Visibilidade do pipelineHistórico de liberações de uma aplicação num só lugar.Monitorar o progresso de cada liberação.

Liberações ConsistentesAprovações para cada etapa da liberação.Fluxo de trabalho de liberação para cada uma de suas aplicações.PowerShell DSC: Infrastructure as Code

Release Management

Ative a implantação contínua

Identifique problemas e padrõesem suas liberações

Verifique o statusde suas liberações

Controle granular sobre todo o processo de liberação

Totalmente integrado ao build automatizado do TFS

Use ações pré-definidasou crie as suas

Defina, por ambiente, o workflow de liberação e as atividades

Dispare ações baseadasnas aprovações

Maneira simples de solicitar e responder a aprovações

Implantações Agent-basedImplantações Agentless (PowerShell DSC)

TFS Drop Location

RM DesktopRM Web

QA

DEV

RM Server

Q&A

tshooter.com.br

@igorabade