Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Gerenciamento de entregas
Apresentação
A integração contínua é uma prática de desenvolvimento de software em que os desenvolvedores, 
frequentemente, disponibilizam suas alterações de código em um repositório central. Refere-se ao 
estágio de criação ou integração do processo de lançamento de software, no qual também se 
originam um componente de automação e um componente cultural. Como principais objetivos da 
integração contínua estão o de encontrar e investigar bugs de forma mais rápida, melhorar a 
qualidade do software e reduzir o tempo que leva para validar e lançar novas atualizações de 
software.
Nesta Unidade de Aprendizagem, você aprenderá conceitos e exemplos de integração contínua, 
blue green deployment e provisionamento em ambientes distribuídos.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Comparar integração contínua, entrega contínua e implantação contínua.•
Explicar blue-green deployment.•
Descrever provisionamento em ambientes distribuídos.•
Desafio
Na implementação da integração contínua, é necessário trabalhar com uma cópia dos códigos ou 
aplicações que estão disponibilizados em produção.
Certificar-se de que seus ambientes sejam os mesmos requer uma certa disciplina para aplicar boas 
práticas de gerenciamento de configuração. Veja isso no seguinte caso:
A partir dessas informações, quais são os procedimentos corretos para garantir que nenhuma 
informação se perderá e que o site continuará funcionando corretamente após a atualização?
Infográfico
O provisionamento garante que servidores sejam preparados para receber a implantação de novos 
projetos e colaborar durantes as operações de rotina de manutenção.
Neste Infográfico, você verá as quatro responsabilidades para o provisionamento em ambientes 
distribuídos.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/f913b33e-c074-4d61-95d6-39e15b25ccb1/02ac130e-e098-490d-82fd-2da2e4ee4547.jpg
Conteúdo do Livro
A integração contínua (IC) é um enorme passo à frente em produtividade e qualidade para a maioria 
dos projetos que a adotam. Ela assegura que as equipes que trabalham juntas para criar sistemas 
grandes e complexos possam fazê-lo com um nível mais alto de confiança e controle do que é 
possível sem ele. A IC garante que o código que foi criado funcione fornecendo feedback rápido 
sobre quaisquer problemas que possam apresentar com as alterações que são realizadas. É focado, 
principalmente, em afirmar que o código compila com sucesso e passa por um corpo de testes de 
unidade e aceitação.
No capítulo Gerenciamento de entregas, da obra Testes de Software e Gerência de Configuração, 
para facilitar o seu entendimento, você verá conceitos e exemplos de integração contínua, blue 
green deployment e provisionamento em ambientes distribuídos.
Boa leitura.
TESTES DE 
SOFTWARE E 
GERÊNCIA DE 
CONFIGURAÇÃO
Priscila Gonçalves
Gerenciamento de entregas
Introdução
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Comparar integração contínua, entrega contínua e implantação 
contínua.
  Explicar o que é blue-green deployment.
  Descrever o provisionamento em ambientes distribuídos.
Introdução
A integração contínua tem como objetivo facilitar a implantação de 
softwares desenvolvidos de forma que o sistema fique inoperante pelo 
menor tempo possível ou que não fique inoperante em momento algum. 
Como você vai ver, a técnica blue-green deployment pode colaborar para 
isso e para a implantação contínua de desenvolvimento.
Neste capítulo, você vai estudar a integração, a entrega e a implan-
tação contínuas. Além disso, vai se familiarizar com a técnica blue-green 
deployment e com o provisionamento em ambientes distribuídos.
Integração, entrega e implantação contínuas
A integração contínua é uma prática de desenvolvimento de software por 
meio da qual os desenvolvedores frequentemente disponibilizam suas 
alterações de código em um repositório central. Ela se refere ao estágio 
de criação ou integração do processo de lançamento de software, em que 
também se originam um componente de automação e um componente 
cultural. Os principais objetivos da integração contínua são: encontrar e 
investigar bugs de forma mais rápida, melhorar a qualidade do software 
e reduzir o tempo que se leva para validar e lançar novas atualizações de 
um software.
A integração contínua é necessária para facilitar e agilizar a convergência 
de alterações realizadas por diferentes desenvolvedores, minimizando os 
erros. Dessa forma, a atualização para os clientes é mais rápida e eficiente. 
A integração contínua é a primeira etapa da entrega contínua, na qual cada 
desenvolvedor mantém o seu trabalho em andamento continuamente integrado 
ao trabalho de todos os outros desenvolvedores.
A diferença entre entrega contínua e implantação contínua está na decisão de negócios 
referente à implantação em produção. A entrega contínua consiste em manter a 
aplicação em um estado em que sempre possa ser implantada em produção. Já a 
implantação contínua implanta todas as alterações em produção todos os dias, ou 
com maior frequência.
O funcionamento da integração contínua ocorre da seguinte forma:
  os desenvolvedores utilizam um repositório de forma comparti-
lhada por meio de um sistema de controle de versão, como o Git e 
o Bitbucket;
  antes que ocorra cada confirmação por parte dos desenvolvedores, 
eles podem optar por executar testes de unidade localmente em seus 
códigos, como uma verificação extra que se dá antes da integração;
  o serviço de integração contínua cria e executa de forma automática 
os testes de unidade nas novas alterações de código, apresentando de 
imediato todos os erros (caso existam);
  a cada revisão confirmada pelo desenvolvedor, a integração contínua 
cria o teste automatizado, executando a distribuição contínua.
Por meio da distribuição contínua, as alterações de códigos são criadas, 
testadas e preparadas de forma automática para que sejam liberadas em 
produção. Dessa forma, a distribuição contínua expande-se com base na 
integração contínua quando realiza a implantação de todas as alterações 
de código em um ambiente de teste ou produção. É o que você pode ver na 
Figura 1.
Gerenciamento de entregas2
Figura 1. Integração contínua, entrega contínua e implementação contínua.
Fonte: O que... (2019).
Entre os benefícios da integração contínua, estão os listados a seguir.
  Melhora na produtividade do desenvolvedor: a integração contínua 
ajuda a equipe a ter maior produtividade ao liberar desenvolvedores 
de tarefas manuais, o que também reduz erros e bugs para os clientes.
  Investigação mais rápida e fácil de bugs: com a maior frequência de 
testes, a possibilidade de descobrir e investigar bugs mais cedo é maior, 
impedindo ou minimizando grandes problemas no futuro.
  Distribuição mais rápida de atualizações: a equipe consegue distri-
buir atualizações para os clientes de forma mais rápida e com maior 
frequência.
Blue-green deployment
A blue-green deployment é uma técnica utilizada para reduzir o risco de 
implementações. Considere que o ambiente de produção atual está associado 
à cor azul; a técnica consiste em introduzir um ambiente paralelo verde, no 
qual estará a nova versão do software. Assim, quando tudo estiver testado e de 
acordo com o esperado para iniciar a operação, é necessário apenas direcionar 
os usuários para que passem a acessar o ambiente verde.
Essa técnica é muito importante para implementar a entrega contínua, 
pois reduz o risco, permitindo a realização de testes antes que seja lançada 
a nova versão para produção. Além disso, ela permite implantações com 
tempo inoperacional quase zero e uma forma rápida de reverter o processo 
caso algo dê errado. A ideia fundamental é ter dois ambientes facilmente 
3Gerenciamento de entregas
alternáveis para intercalarentre eles. Há muitas maneiras de variar os de-
talhes. Um projeto pode fazer a troca saltando o servidor web em vez de 
trabalhar no roteador. Outra variação seria usar o mesmo banco de dados, 
fazendo os switches azul e verde para as camadas da web e do domínio, 
como você pode ver na Figura 2.
Figura 2. Blue-green deployment.
Fonte: Fowler (2010, document on-line).
A implantação azul-verde oferece uma maneira rápida de reverter o processo 
— se algo der errado, basta alternar o roteador de volta para o ambiente azul. 
Ainda há a questão de lidar com transações perdidas enquanto o ambiente 
verde estiver ativo. Contudo, dependendo do projeto, é possível alimentar 
transações para ambos os ambientes de forma a manter o ambiente azul como 
backup quando o verde estiver ativo.
Uma vez que você tenha colocado o ambiente verde como ativo e ele 
estiver estável, você pode utilizar o ambiente azul como ambiente de prepa-
ração para a etapa final de teste da próxima implementação. Quando você 
estiver pronto para o seu próximo lançamento, pode mudar de verde para 
azul da mesma forma. Assim, os ambientes verde e azul alternam regular-
mente entre a versão anterior ativa (para retrocesso) e o armazenamento 
da próxima versão.
Uma vantagem dessa abordagem é que ela põe em cena o mesmo mecanismo 
básico necessário para um trabalho hot-standby. Portanto, isso permite que se-
jam testados os procedimentos de recuperação de erros graves em cada versão.
Gerenciamento de entregas4
Provisionamento em ambientes distribuídos
Diante do alto crescimento de informações das empresas, aumenta a quantidade 
de servidores e, consequentemente, ampliam-se os custos gerenciais e a comple-
xidade do ambiente. Para solucionar essas questões, é indicada a virtualização 
de servidores, que oferece uma otimização da infraestrutura de tecnologia de 
informação (TI). Entre as vantagens da virtualização, considere as seguintes:
  redução do espaço físico necessário para armazenamento;
  redução do consumo de energia por equipamentos;
  redução da dissipação de calor e da necessidade de refrigeração;
  redução de conexões de cabos de rede;
  redução de tomadas e cabos de energia;
  redução de switches.
Ou seja, caso seja necessário um novo servidor, basta criar uma máquina 
virtual nova, que vai reduzir o tempo de provisionamento de novos servidores. 
As máquinas virtuais são arquivos, e é muito simples criar máquinas que se 
tornam novos servidores em minutos. Esses novos servidores não significam 
gastos com a aquisição de equipamentos físicos nem aumento da complexidade. 
Quando um servidor não aguentar mais a adição de novas máquinas virtuais, 
basta adicionar mais um novo servidor físico à sua rede.
O provisionamento garante que servidores sejam preparados para receber 
a implantação de novos projetos e colaborar durante as operações de rotina 
de manutenção. As etapas do provisionamento de servidores consistem em:
  selecionar servidores (um ou mais) entre os que estão disponíveis;
  instalar softwares, entre eles sistema operacional, aplicações, midd-
leware e drivers;
  definir e configurar recursos do servidor, como endereço de Internet 
Protocol (IP), espaço em disco, entre outros.
O provisionamento é um processo que exige tempo de gestores e técnicos 
de TI envolvidos. Existem ferramentas de automação que podem ser utiliza-
das para agilizar esse processo. Entre as ferramentas, estão Chef e Puppet, 
que são open source. Outra forma de realizar essa automação é por meio de 
scripts desenvolvidos pela própria equipe, ou de uma combinação de soluções 
externas, internas e processos manuais, articulados a fim de que o processo 
seja agilizado.
5Gerenciamento de entregas
FOWLER, M. BlueGreenDeployment. In: MARTIN Fowler. [S. l.: s. n.], 2015. Disponível em: 
https://martinfowler.com/bliki/BlueGreenDeployment.html. Acesso em: 30 jun. 2019.
O QUE significa integração contínua? In: AMAZON. [S. l.: s. n.], 2019. Disponível em: 
https://aws.amazon.com/pt/devops/continuous-integration/. Acesso em: 30 jun. 2019.
Leituras recomendadas
BLUE-GREEN deployment. In: INFOQ Brasil. [S. l.: s. n., 2019]. Disponível em: https://
www.infoq.com/br/presentations/blue-green-deployment. Acesso em: 30 jun. 2019.
HUMBLE, J.; FARLEY, D. Continuous delivery: anatomy of the deployment pipeline. In: 
INFORMIT. Hoboken: [S. n.], 2010. Disponível em: http://www.informit.com/articles/
article.aspx?p=1621865. Acesso em: 30 jun. 2019.
PRESSMAN, R.; MAXIM, B. Engenharia de software: uma abordagem profissional. 8. ed. 
Porto Alegre: AMGH, 2016.
ROUSE, M. Software process improvement and capability determination (SPICE). In: 
TECHTARGET. [S. l.: s. n.], 2008. Disponível em: https://searchsoftwarequality.techtarget.
com/definition/Software-Process-Improvement-and-Capability-dEtermination. Acesso 
em: 30 jun. 2019.
SCHACH, S. R. Engenharia de software: os paradigmas clássicos & orientado a objetos. 
Porto Alegre: AMGH, 2010.
VIRTUALIZAÇÃO: o que é gerenciamento de virtualização? In: RED HAT. [S. l.: s. n., 2019]. 
Disponível em: https://www.redhat.com/pt-br/topics/virtualization/what-is-virtualiza-
tion-management#. Acesso em: 30 jun. 2019.
Gerenciamento de entregas6
Dica do Professor
A integração contínua é a primeira etapa da entrega contínua, em que cada desenvolvedor mantém 
seu trabalho em andamento continuamente integrado a todos os outros desenvolvedores. A 
diferença entre entrega contínua e implantação contínua está na decisão de negócios referente à 
implantação em produção, pois a entrega contínua consiste em manter a aplicação em um estado 
em que sempre possa ser implantada em produção. No entanto, a implantação contínua está 
implantando todas as alterações em produção diariamente ou com maior frequência.
Nesta Dica do Professor, você verá mais sobre os benefícios de utilizar a entrega contínua.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/bfad6e24d80d14232fd6fa8f7108b66d
Exercícios
1) A seguinte afirmação: “Os dois ambientes precisam ser diferentes, mas tão idênticos quanto 
possível” se refere a qual das alternativas a seguir?
A) Armazenamento em servidores físicos.
B) Cloud computing.
C) Puppet.
D) Blue-green deployment.
E) Spice.
2) Na implantação contínua, cada nova alteração que é enviada ao repositório dá início de 
forma automática a um processo automatizado que realiza o envio de mudanças para o 
ambiente solicitado. Existem muitas vantagens em relação à implantação contínua. Assinale 
a alternativa que apresenta algumas dessas vantagens:
A) Visibilidade de produção de seus aplicativos e fornece feedback a cada alteração no sistema.
B) Ajuda a controlar as mudanças, sem impedir seriamente as mudanças justificáveis, e controla 
a configuração.
C) Gerenciamento e assinatura de documentos eletronicamente, e controla o ciclo de vida do 
software.
D) Gerencia a acessibilidade e controla as mudanças sem impedir seriamente as mudanças 
justificáveis.
E) Viabiliza o trabalho em equipe e gerencia assinatura de documentos eletronicamente.
3) O código alterado e/ou desenvolvido no projeto principal é integrado na mesma frequência 
com que as funcionalidades são desenvolvidas. O objetivo principal de sua utilização é 
verificar se as alterações ou novas funcionalidades não criarão defeitos no projeto já 
existente.
Assinale a alternativa correspondente a essa afirmação:
A) Blue-green deployment.
B) Controle de mudanças.
C) Virtualização de servidores.
D) Provisionamento de aplicações.
E) Integração contínua.
4) Integração contínua é uma prática realizada no desenvolvimento de softwares para realizar 
uma junção dos códigos, alternando e inserindo-os em um repositório central. Quais são os 
benefícios na utilização de ferramentas automatizadas para a integração contínua?
A) Permitem que os desenvolvedores encontrem de forma rápida conflitos de versão,e não 
podem solucionar problemas de forma contínua.
B) Permitem que sejam configurados o sistema e o ambiente de desenvolvimento. Permitem a 
configuração do sistema de build automatizado, integram com o repositório de controle de 
versão e permitem o envio de e-mails de notificação.
C) O trabalho em equipe gera mais erros, minimizando os riscos, bugs não se acumulam, pois o 
erro pode ser detectado em horas e resolvido de forma mais rápida.
D) O trabalho em equipe gera mais erros, maximiza os riscos, bugs podem se acumular, pois o 
erro pode ser detectado em horas, mas nem sempre podem ser resolvidos rapidamente.
E) Permitem que os desenvolvedores encontrem de forma rápida conflitos de versão, 
maximizam os riscos e os bugs podem se acumular.
5) A entrega contínua é um processo automático em que é iniciado de forma manual quando o 
desenvolvedor tem a intenção de enviar uma versão atual da aplicação. Dentre os benefícios 
da entrega contínua, estão:
A) Agilizar os processos, minimizar a performance da equipe, melhorar a segurança e a qualidade 
para os prazos e aumentar a insatisfação dos clientes.
B) Agilizar os processos, acumular bugs, melhorar a segurança e a qualidade para os prazos e 
aumentar a insatisfação dos clientes.
C) Agilizar os processos, melhorar a performance da equipe, dar maior segurança e qualidade 
para as entregas e aumentar a satisfação dos clientes.
D) Agilizar os processos, maximizar a performance da equipe, melhorar a segurança e a qualidade 
para os prazos e aumentar a insatisfação dos clientes.
E) Automatizar os processos, minimizar a performance da equipe, melhorar a segurança e a 
qualidade para os prazos e aumentar a insatisfação dos clientes.
Na prática
A entrega contínua funciona com a lógica de que quanto mais se gastar tempo para entregar um 
produto ou serviço, maior será o custo do projeto. Sendo assim, será menos viável para os 
desenvolvedores. Algumas práticas podem melhorar o processo, garantindo a participação do 
cliente em todo o período evolutivo do ciclo do software, evitando que processos longos ocorram, 
buscando integração das equipes e melhorando o processo de comunicação.
Na Prática, você verá o caso da empresa Dev S.A., que está implantando o processo de entrega 
contínua. Para que isso ocorra da melhor forma possível, é necessário seguir as etapas. Jorge, que 
trabalha na área técnica, ficou responsável por elencar essas etapas para que todos consigam 
realizar a tarefa.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/df41c77f-722c-4b0f-a916-317b650f9cc2/256a5e7c-edc7-4a6f-a252-4422de5de0b1.png
Saiba mais
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Integração contínua
A integração contínua é a primeira etapa da entrega contínua, na qual cada desenvolvedor mantém 
seu trabalho em andamento continuamente integrado a todos os outros desenvolvedores. Leia este 
artigo para entender como funciona todo o processo.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
AWS CodeDeploy — Deploy descomplicado
Para saber o passo a passo da técnica blue-green deployment, veja este conteúdo, que descreve o 
que é o CodeDeploy, mostrando os principais conceitos por trás da ferramenta e os cenários em 
que é possível ou não utilizá-la.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Blue-green deployment: entrega contínua e rollback imediato
Blue-green deployment é uma técnica utilizada para automatizar a implantação, reduzir erros e 
aumentar a velocidade nas entregas para os clientes. Acesse o vídeo e saiba mais a respeito da 
utilização, das vantagens e das desvantagens sobre a técnica.
https://www.desenvolvimentoagil.com.br/xp/praticas/integracao
https://medium.com/trainingcenter/aws-codedeploy-deploy-descomplicado-5306170eab8b
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.infoq.com/br/presentations/blue-green-deployment

Mais conteúdos dessa disciplina