SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Arquitetura de Software 
para a Entrega Contínua 
Otávio Calaça Xavier 
otaviocx@oobj.com.br
Roteiro 
- O que é Entrega Contínua e DevOps? 
- O que é Integração Contínua? 
- Erros Comuns em Entrega de 
Software; 
- Princípios de Entrega Contínua; 
- Práticas em Arquitetura de Software;
O que é Entrega Contínua? 
“Entrega Contínua é uma 
disciplina de desenvolvimento 
na qual software é construído de 
tal maneira que o mesmo pode 
ser colocado em produção a 
qualquer momento.” 
Martin Fowler, Jez Humble
O que é Entrega Contínua? 
O principal problema: 
Se alguém tem uma grande ideia, 
como entregar isso aos usuários o 
mais rápido possível?
Por que? 
• Reduzir custos; 
• Colocar funcionalidade em produção 
mais rapidamente; 
• Menos defeitos em produção; 
• Ser mais rápido que os competidores; 
• Dormir em paz em dia de implantação / 
atualização.
E as pessoas? 
• A equipe precisa ter a entrega 
contínua como cultura; 
• Todos são envolvidos no processo 
• Comercial 
• Desenvolvimento 
• Testes 
• Operações 
• Usuários
DevOps
O que é Integração Contínua (CI)? 
“Integração contínua é uma prática 
em desenvolvimento de software em 
que os membros do time integram 
seu trabalho frequentemente, 
usualmente cada pessoa integra pelo 
menos uma vez ao dia – levando a 
múltiplas integrações por dia.” 
Martin Fowler, Paul M. Duvall
O que é Integração Contínua? 
Construir o software a 
cada mudança.
O que é uma construção (build) ? 
• Muito mais que compilação; 
• Consiste em: 
• Compilação; 
• Teste; 
• Inspeção; 
• Implantação e 
• Algumas outras coisas. 
• Processo de colocar código fonte junto e 
verificar se o software funciona como uma 
unidade coesa.
Por que? 
• Reduzir riscos; 
• Reduzir processos manuais repetitivos; 
• Gerar software que pode ser implantado a 
qualquer momento e em qualquer local; 
• Permitir maior visibilidade do projeto; 
• Estabelecer maior confiança na produção 
de software da equipe de desenvolvimento.
Um dia na vida com CI
Como ter a tal da Integração “contínua”? 
• Identificar; 
• Um processo que precise ser automatizado. 
• Construir; 
• Fazer a automação repetível e confiável. 
• Compartilhar; 
• Usando sistemas de controle de versão (SVN). 
• Fazer isso contínuo. 
• Garantir que o processo automatizado rode a 
cada mudança.
Integração contínua e você... 
• Commit o código frequentemente; 
• Não commit código quebrado! 
• Corrija builds quebrados imediatamente; 
• Escreva testes automatizados; 
• Todos os testes e inspeções devem passar; 
• Execute construções privadas; 
• Evite código quebrado.
Fluxo da Integração Contínua 
Pegue o 
código fonte 
mais recente 
Desenvolva 
sua 
atividade 
Faça um 
build na 
sua máquina 
Rode os testes 
automatizados 
Commit seu 
código 
Faça um 
build na 
máquina de 
integração
Erros Comuns em 
Entrega de Software
Implantar software manualmente 
• Criação de extensos manuais de 
implantação; 
• Falhas frequentes em implantações que 
requerem apoio do time de 
desenvolvimento; 
• Medo da implantação/atualização tanto 
pela operação quanto pelo cliente.
Implantar em um ambiente parecido com o de 
produção apenas depois do desenvolvimento 
ser concluído 
• Riscos de falsos positivos com testes em 
ambiente de desenvolvimento; 
• A fase de homologação pode ser o 
primeiro momento que a equipe de 
operações tem contato com o software; 
• Pouca colaboração entre equipes (DevOps)
Gerenciamento de Configurações 
Manual dos Ambientes de Produção 
• Mesmo que a implantação em ambiente de 
homologação seja bem sucedida, pode falhar em 
produção; 
• O time de operações gasta muito tempo 
preparando um ambiente para uma nova release; 
• Diferentes versões de Sistemas Operacionais e 
Infraestrutura de terceiros, não intencional e 
desnecessária; 
• Impossível voltar atrás rapidamente à uma 
versão anterior do ambiente (S.O., banco de dados, 
servidor de aplicação, etc.).
Entrega Contínua baseia-se em 
dois pilares: Automação e 
Frequência
Toda modificação deve iniciar o processo de 
feedback 
• Um software em funcionamento pode 
ser decomposto em 4 componentes: 
• Código Executável; 
• Configuração; 
• Ambiente de Hospedagem; 
• Dados (estrutura). 
• Se qualquer uma das partes mudar, 
isso significa uma mudança no 
comportamento da aplicação.
O feedback deve ser recebido o quanto antes 
• Em um processo completamente automatizado, o 
maior problema será o hardware necessário para 
atender o problema; 
• Se for manual, dependemos de pessoas. 
• Pessoas demoram, podem introduzir erros e são 
difíceis de serem auditadas. Além disso, 
construção, teste e implantação manuais, são 
atividades cansativas e desmotivantes.
O time de entrega deve receber o feedback e 
agir 
• Time de entrega inclui: desenvolvedores, 
testadores, equipe de operação, 
especialistas de infraestrutura e gestores; 
• Trabalhar juntos com reuniões rápidas e 
frequentes para melhorar o processo de 
entrega; 
• Comunicação deve ser clara, eficiente e 
eficaz (atingir as pessoas certas no 
momento certo).
Princípios da Entrega 
Contínua
Crie um processo repetível e confiável 
de lançamento do software 
https://www.flickr.com/photos/feliperoos/4304276481/
Automatize 
praticamente tudo 
https://www.flickr.com/photos/tjblackwell/7819341478/
Mantenha 
tudo em 
controle de 
versão
SSee ddooii,, ffaaççaa ccoomm mmaaiiss 
ffrreeqquuêênncciiaa,, ee aaddiiaannttee aa ddoorr
IInnccoorrppoorree qquuaalliiddaaddee 
àà ccoonnssttrruuççããoo 
http://www.flickriver.com/photos/42421638@N07/sets/72157628665077677/
““FFeeiittoo”” ssiiggnniiffiiccaa llaannççaaddoo 
ppaarraa oo cclliieennttee..
TTooddooss ssããoo rreessppoonnssáávveeiiss ppeelloo 
pprroocceessssoo ddee eennttrreeggaa
Melhoria 
Contínua
Benefícios 
• Capacitação de times; 
• Redução de Erros; 
• Redução do Estresse; 
• Flexibilidade de Implantação; 
• A prática leva a perfeição;
Mudanças
Introdução de Mudanças
Mudanças pelo tempo
Mudanças pelo tempo
Controle de Versão 
• Colocar tudo em controle de versão; 
• Não guarde nada apenas em seu 
ambiente; 
• Faça merges frequentes (o mais 
breve possível); 
• Use mensagens significantes em 
seus commits;
Arquitetura 
“Existem dois elementos comuns [nas definições]: 
um é a decomposição em alto nivel de um sistema 
em suas partes; o outro são decisões difíceis de 
alterar. 
…existem diversas arquiteturas em um sistema, e a 
visão do que é significativo em termos de 
arquitetura pode mudar durante o ciclo de vida de 
um sistema.” 
Martin Fowler - Padrões de Arquitetura 
de Aplicações Corporativas.
O impacto da arquitetura
Arquitetura 
• Crie uma arquitetura modular que 
possua partes que possam ser 
implantadas sozinhas. 
• A cultura de desenvolvimento deve 
seguir a arquitetura proposta. 
• Revise e Inspecione alterações que 
podem quebrar a arquitetura.
Arquitetura – feature toggles
Arquitetura – branch by abstraction
Arquitetura – branch by abstraction
Arquitetura – branch by abstraction
Arquitetura – branch by abstraction
Arquitetura – branch by abstraction
Referências 
Continuous Delivery: Reliable Software Releases through Build, 
Test, and Deployment Automation by Jez Humble , David Farley 
Continuous Integration: Improving Software Quality and Reducing 
Risk by Paul M. Duvall , Steve Matyas, Andrew Glover 
BranchByAbstraction by Martin Fowler 
http://martinfowler.com/bliki/BranchByAbstraction.html 
FeatureTogle by Martin Fowler 
http://martinfowler.com/bliki/FeatureToggle.html 
Implementando Entrega Contínua by Marco Valtas 
http://www.slideshare.net/mavcunha/implementando-entrega-contnua
Obrigado! 
• Dúvidas? 
Otávio Calaça Xavier 
otaviocx@oobj.com.br

Mais conteúdo relacionado

Mais procurados

DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Devops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaDevops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaFernando Celarino
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariTaller Negócio Digitais
 
Explicando DevOps
Explicando DevOpsExplicando DevOps
Explicando DevOpss4nx
 
DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A OrigemAndré Dias
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014Leo Lorieri
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arteilegra
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começarAdriano Tavares
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014Rodrigo Campos
 
Anti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaAnti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaThoughtworks
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...Denis Santos
 
Migração SVN para GIT
Migração SVN para GITMigração SVN para GIT
Migração SVN para GITDenis Santos
 
Integração contínua - Parte 1
Integração contínua - Parte 1Integração contínua - Parte 1
Integração contínua - Parte 1Fernando Fabricio
 

Mais procurados (20)

DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Devops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaDevops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estrutura
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
Explicando DevOps
Explicando DevOpsExplicando DevOps
Explicando DevOps
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A Origem
 
04 Unified process
04 Unified process04 Unified process
04 Unified process
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arte
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começar
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014
 
Anti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaAnti-Padrões de Integração Contínua
Anti-Padrões de Integração Contínua
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
 
Migração SVN para GIT
Migração SVN para GITMigração SVN para GIT
Migração SVN para GIT
 
Integração contínua - Parte 1
Integração contínua - Parte 1Integração contínua - Parte 1
Integração contínua - Parte 1
 

Destaque

Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebOtávio Calaça Xavier
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebOtávio Calaça Xavier
 
Fuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionFuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionOtávio Calaça Xavier
 
Deep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeDeep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeOtávio Calaça Xavier
 
Integrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPIntegrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPOtávio Calaça Xavier
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxOtávio Calaça Xavier
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsOtávio Calaça Xavier
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLOtávio Calaça Xavier
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
 

Destaque (15)

Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Fuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionFuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and Induction
 
Deep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeDeep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizade
 
Padrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVCPadrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVC
 
Integrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPIntegrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHP
 
Redes Neurais com PHP
Redes Neurais com PHPRedes Neurais com PHP
Redes Neurais com PHP
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
 
Introdução à Google Maps API
Introdução à Google Maps APIIntrodução à Google Maps API
Introdução à Google Maps API
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com Ajax
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.js
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQL
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 

Semelhante a Arquitetura de Software para a Entrega Continua

Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoMario Mendonça
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...Antonio Lobato
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de softwareQualister
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Jaqueline Ramos
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwareJúlio de Lima
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareAragon Vieira
 
Maio 2016 - Integração e Validação Contínua
Maio 2016 - Integração e Validação ContínuaMaio 2016 - Integração e Validação Contínua
Maio 2016 - Integração e Validação ContínuaGrupo de Testes Carioca
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e AzureJaqueline Ramos
 
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline....Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...iMasters
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsEdson Celio
 

Semelhante a Arquitetura de Software para a Entrega Continua (20)

Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimento
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
Lista de Práticas Ágeis
Lista de Práticas ÁgeisLista de Práticas Ágeis
Lista de Práticas Ágeis
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Maio 2016 - Integração e Validação Contínua
Maio 2016 - Integração e Validação ContínuaMaio 2016 - Integração e Validação Contínua
Maio 2016 - Integração e Validação Contínua
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
DevOps
DevOpsDevOps
DevOps
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
 
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline....Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 

Mais de Otávio Calaça Xavier

Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksOtávio Calaça Xavier
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a DecisãoOtávio Calaça Xavier
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPOtávio Calaça Xavier
 
Classe V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleClasse V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleOtávio Calaça Xavier
 

Mais de Otávio Calaça Xavier (6)

Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social Networks
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
PHP: Atualidade e Tendências
PHP: Atualidade e TendênciasPHP: Atualidade e Tendências
PHP: Atualidade e Tendências
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Classe V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleClasse V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no Moodle
 

Arquitetura de Software para a Entrega Continua

  • 1. Arquitetura de Software para a Entrega Contínua Otávio Calaça Xavier otaviocx@oobj.com.br
  • 2. Roteiro - O que é Entrega Contínua e DevOps? - O que é Integração Contínua? - Erros Comuns em Entrega de Software; - Princípios de Entrega Contínua; - Práticas em Arquitetura de Software;
  • 3. O que é Entrega Contínua? “Entrega Contínua é uma disciplina de desenvolvimento na qual software é construído de tal maneira que o mesmo pode ser colocado em produção a qualquer momento.” Martin Fowler, Jez Humble
  • 4. O que é Entrega Contínua? O principal problema: Se alguém tem uma grande ideia, como entregar isso aos usuários o mais rápido possível?
  • 5. Por que? • Reduzir custos; • Colocar funcionalidade em produção mais rapidamente; • Menos defeitos em produção; • Ser mais rápido que os competidores; • Dormir em paz em dia de implantação / atualização.
  • 6. E as pessoas? • A equipe precisa ter a entrega contínua como cultura; • Todos são envolvidos no processo • Comercial • Desenvolvimento • Testes • Operações • Usuários
  • 8. O que é Integração Contínua (CI)? “Integração contínua é uma prática em desenvolvimento de software em que os membros do time integram seu trabalho frequentemente, usualmente cada pessoa integra pelo menos uma vez ao dia – levando a múltiplas integrações por dia.” Martin Fowler, Paul M. Duvall
  • 9. O que é Integração Contínua? Construir o software a cada mudança.
  • 10. O que é uma construção (build) ? • Muito mais que compilação; • Consiste em: • Compilação; • Teste; • Inspeção; • Implantação e • Algumas outras coisas. • Processo de colocar código fonte junto e verificar se o software funciona como uma unidade coesa.
  • 11. Por que? • Reduzir riscos; • Reduzir processos manuais repetitivos; • Gerar software que pode ser implantado a qualquer momento e em qualquer local; • Permitir maior visibilidade do projeto; • Estabelecer maior confiança na produção de software da equipe de desenvolvimento.
  • 12. Um dia na vida com CI
  • 13. Como ter a tal da Integração “contínua”? • Identificar; • Um processo que precise ser automatizado. • Construir; • Fazer a automação repetível e confiável. • Compartilhar; • Usando sistemas de controle de versão (SVN). • Fazer isso contínuo. • Garantir que o processo automatizado rode a cada mudança.
  • 14. Integração contínua e você... • Commit o código frequentemente; • Não commit código quebrado! • Corrija builds quebrados imediatamente; • Escreva testes automatizados; • Todos os testes e inspeções devem passar; • Execute construções privadas; • Evite código quebrado.
  • 15. Fluxo da Integração Contínua Pegue o código fonte mais recente Desenvolva sua atividade Faça um build na sua máquina Rode os testes automatizados Commit seu código Faça um build na máquina de integração
  • 16. Erros Comuns em Entrega de Software
  • 17. Implantar software manualmente • Criação de extensos manuais de implantação; • Falhas frequentes em implantações que requerem apoio do time de desenvolvimento; • Medo da implantação/atualização tanto pela operação quanto pelo cliente.
  • 18. Implantar em um ambiente parecido com o de produção apenas depois do desenvolvimento ser concluído • Riscos de falsos positivos com testes em ambiente de desenvolvimento; • A fase de homologação pode ser o primeiro momento que a equipe de operações tem contato com o software; • Pouca colaboração entre equipes (DevOps)
  • 19. Gerenciamento de Configurações Manual dos Ambientes de Produção • Mesmo que a implantação em ambiente de homologação seja bem sucedida, pode falhar em produção; • O time de operações gasta muito tempo preparando um ambiente para uma nova release; • Diferentes versões de Sistemas Operacionais e Infraestrutura de terceiros, não intencional e desnecessária; • Impossível voltar atrás rapidamente à uma versão anterior do ambiente (S.O., banco de dados, servidor de aplicação, etc.).
  • 20. Entrega Contínua baseia-se em dois pilares: Automação e Frequência
  • 21. Toda modificação deve iniciar o processo de feedback • Um software em funcionamento pode ser decomposto em 4 componentes: • Código Executável; • Configuração; • Ambiente de Hospedagem; • Dados (estrutura). • Se qualquer uma das partes mudar, isso significa uma mudança no comportamento da aplicação.
  • 22. O feedback deve ser recebido o quanto antes • Em um processo completamente automatizado, o maior problema será o hardware necessário para atender o problema; • Se for manual, dependemos de pessoas. • Pessoas demoram, podem introduzir erros e são difíceis de serem auditadas. Além disso, construção, teste e implantação manuais, são atividades cansativas e desmotivantes.
  • 23. O time de entrega deve receber o feedback e agir • Time de entrega inclui: desenvolvedores, testadores, equipe de operação, especialistas de infraestrutura e gestores; • Trabalhar juntos com reuniões rápidas e frequentes para melhorar o processo de entrega; • Comunicação deve ser clara, eficiente e eficaz (atingir as pessoas certas no momento certo).
  • 25. Crie um processo repetível e confiável de lançamento do software https://www.flickr.com/photos/feliperoos/4304276481/
  • 26. Automatize praticamente tudo https://www.flickr.com/photos/tjblackwell/7819341478/
  • 27. Mantenha tudo em controle de versão
  • 28. SSee ddooii,, ffaaççaa ccoomm mmaaiiss ffrreeqquuêênncciiaa,, ee aaddiiaannttee aa ddoorr
  • 29. IInnccoorrppoorree qquuaalliiddaaddee àà ccoonnssttrruuççããoo http://www.flickriver.com/photos/42421638@N07/sets/72157628665077677/
  • 31. TTooddooss ssããoo rreessppoonnssáávveeiiss ppeelloo pprroocceessssoo ddee eennttrreeggaa
  • 33. Benefícios • Capacitação de times; • Redução de Erros; • Redução do Estresse; • Flexibilidade de Implantação; • A prática leva a perfeição;
  • 38. Controle de Versão • Colocar tudo em controle de versão; • Não guarde nada apenas em seu ambiente; • Faça merges frequentes (o mais breve possível); • Use mensagens significantes em seus commits;
  • 39. Arquitetura “Existem dois elementos comuns [nas definições]: um é a decomposição em alto nivel de um sistema em suas partes; o outro são decisões difíceis de alterar. …existem diversas arquiteturas em um sistema, e a visão do que é significativo em termos de arquitetura pode mudar durante o ciclo de vida de um sistema.” Martin Fowler - Padrões de Arquitetura de Aplicações Corporativas.
  • 40. O impacto da arquitetura
  • 41. Arquitetura • Crie uma arquitetura modular que possua partes que possam ser implantadas sozinhas. • A cultura de desenvolvimento deve seguir a arquitetura proposta. • Revise e Inspecione alterações que podem quebrar a arquitetura.
  • 43. Arquitetura – branch by abstraction
  • 44. Arquitetura – branch by abstraction
  • 45. Arquitetura – branch by abstraction
  • 46. Arquitetura – branch by abstraction
  • 47. Arquitetura – branch by abstraction
  • 48. Referências Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble , David Farley Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall , Steve Matyas, Andrew Glover BranchByAbstraction by Martin Fowler http://martinfowler.com/bliki/BranchByAbstraction.html FeatureTogle by Martin Fowler http://martinfowler.com/bliki/FeatureToggle.html Implementando Entrega Contínua by Marco Valtas http://www.slideshare.net/mavcunha/implementando-entrega-contnua
  • 49. Obrigado! • Dúvidas? Otávio Calaça Xavier otaviocx@oobj.com.br