Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais

Shift Left em DevOps

Alura+ são pequenos vídeos com conteúdo complementar aos cursos da Alura. Aqui você tem novidades, dicas, tutoriais, novos assuntos e muito mais. Excelente para aprender algo novo naqueles pequenos momentos que sobram no dia.

Resumo do conteúdo

Geralmente em processos de desenvolvimento de software as atividades de testes, segurança e deploy são deixadas para o final, causando assim gargalos, bloqueios e dificuldades em se finalizar os ciclos de desenvolvimento e entrega de software.

Shift Left é uma prática que consiste em deslocar para a esquerda tais atividades, que normalmente estão mais à direita no processo, para que assim desde o ínicio de cada ciclo elas possam ser discutidas e planejadas, evitando problemas e acelerando a entrega de software.


Transcrição

Olá, tudo bem? Meu nome é Rodrigo Ferreira, sou um dos instrutores da Alura, da Escola de Programação e DevOps.

Audiodescrição: Rodrigo Ferreira é uma pessoa de pele clara, com olhos castanhos e cabelos também castanhos e lisos. Usa uma camiseta cinza lisa. No fiundo, uma luz LED verde ilumina uma parede com redes de gatos.

Hoje, aprenderemos sobre Shift Left. Vamos lá?

Audiodescrição: Abertura do Alura +. No fundo toca uma música animada. Sobre um fundo azul, as palavras "Mergulhe", "em", "tecnologia" piscam na tela. Depois aparece a logo do Alura+. Quando a abertura termina, a câmera do Rodrigo está no canto inferior esquerdo e, no centro da tela, temos "Shift Left" escrito em azul-claro sob o fundo azul-marinho.

Metodologias ágeis e o trabalho como dev

Talvez esse termo não seja familiar, mas é muito utilizado por pessoas que trabalham com DevOps e metodologias ágeis. Entenderemos melhor o que ele significa e como pode nos ajudar.

Se trabalhamos em uma empresa de desenvolvimento de software, é comum fazermos parte de um time. Desenvolver software não é apenas escrever código, tornou-se uma tarefa complexa que envolve várias etapas e pessoas.

Antigamente, o modelo Cascata, uma abordagem comum para organizar o desenvolvimento de software, como podemos observar na imagem a seguir:

Diagrama de fluxo simples do processo de desenvolvimento de software com cinco etapas sequenciais conectadas por setas na direção da esquerda para a direita: PLANEJAMENTO (roxo claro), ANÁLISE (azul claro), CODIFICAÇÃO (verde claro), TESTES (amarelo claro), e DEPLOY (rosa claro).

Era uma abordagem comum para organizar o desenvolvimento de software. Esse modelo incluía etapas como:

  • Planejamento,
  • Análise
  • Codificação
  • Testes
  • Deploy

Com o deploy, a aplicação era liberada para o acesso das pessoas usuárias terem acesso. Entretanto, esse processo tinha problemas, percebidos ao longo dos anos.

Por isso, com o tempo, surgiram novas abordagens, como o manifesto ágil e as metodologias ágeis, amplamente utilizadas hoje. No entanto, mesmo com metodologias ágeis, como o Scrum, ainda precisamos realizar atividades do modelo cascata, mas aconteciam durante as sprints (ciclos de desenvolvimento).

Dependendo da empresa e do projeto, pode haver etapas adicionais, como segurança, onde são realizados testes para garantir a segurança da aplicação. Em outros casos, pode ser que uma das etapas sejam substituídas ou não realizadas.

Mesmo com metodologias ágeis, ainda precisamos dividir tarefas e perfis. É comum trabalharmos em times com pessoas em diferentes papéis, como codificadoras e testadoras.

Desafios da metodologia ágil

Esse tipo de ambiente, com separação de atividades, pode levar a problemas, mesmo em ambientes ágeis. Um problema comum é a criação de barreiras entre responsabilidades e papéis, que ficam com pessoas ou times diferentes, resultando em silos e isolamento, ao invés de colaboração.

Diagrama anterior, mas com linhas verticais grossas na cor preta separando e isolando cada processo.

Isso pode causar problemas, especialmente nas últimas etapas do processo, como testes e deploy. Um dos problemas é a espera. As etapas finais, como deploy, só são executadas no final, deixando as pessoas responsáveis por essas etapas ociosas.

Outro problema é o travamento, porque as atividades são realizadas em ciclos. As pessoas responsáveis pelas últimas tarefas vão receber o projeito no final do ciclo, resultando em sobrecarga de trabalho e atrito entre as pessoas. As pessoas do final do processo precisam fazer horas extras para conseguir cumprir sua etapa antes do final do ciclo para entregarem sua parte, ampliando as chances de tensão entre os times do final do processo com os times do começo.

Problemas

  • Espera
  • Gargalo
  • Sobrecarga de trabalho
  • Atrito entre as pessoas/times

Consequentemente, esses problemas podem gerar conflitos entre times, e eu trouxe uma imagem engraçada que representa essa situação, como um cachorro e um gato brigando:

Fotografia colorida editada para fins de humor. Na fotografia, um cachorro está com uma postura tensa e raivosa, à esquerda, mostrando os dentes para um gato a sua frente, indicando que pudesse estar rosnando. O gato, também está com uma postura bastante raivosa e parece rosnar para o cachorro. Além disso, a imagem foi capturada quando o gato estava prestes a dar uma patada no cachorro. Para fins de humor, adicionarem uma garrafa na pata do gato que bateria no cachorro. Essa cena está acontecendo em uma praia rochosa. Na parte de baixo da foto, está escrito "Devs vs Ops", como se o cachorro representasse o time de Devs e o gato representasse o time de Operações.

Isso costuma acontecer com os times de desenvolvimento e operações, mas pode acontecer com outros times também, como programação e testes. A considerada demora da entregam o que pode levar a discussões e brigas, criando mais barreiras entre os times.

Solucionando atritos com Shift Left

Se identificamos essa situação em nossa empresa, onde as pessoas do final do processo estão sobrecarregadas, podemos minimizar esses problemas com o conceito de Shift Left. O termo "Shift" pode lembrar a tecla de mesmo nome, mas não se trata disso, e sim de um conceito.

A ideia é deslocar as últimas etapas do processo, como testes, segurança e deploy, para a esquerda, ou seja, para o início do processo. Por isso "Shift Left" (Deslocar para esquerda).

Por exemplo, pode-se discutir desde o início quais serão os testes aplicados e, dependendo da implementação, como de testes automatizados, também pode ser iniciado. O Mesmo funciona para o deploy. Pode-se discutir se será necessária alguma estrutura, como firewall ou servidor, e antecipar alguns processos.

Isso significa planejar e discutir essas etapas desde o início, evitando problemas e retrabalho. Ao aplicar o Shift Left, promovemos a colaboração entre os times, eliminando conflitos e melhorando o planejamento. Isso evita travamentos e sobrecarga nas etapas finais, agilizando a entrega do software e evitando retrabalho.

Vantagens do Shift Left:

  • Colaboração entre pessoas/times
  • Planejamento prévio das etapas de teste, segurança e entrega
  • Evita travamentos no processo de desenvolvimento
  • Agiliza a entrega do software
  • Evita retrabalho

Essas são as vantagens de utilizar a prática do Shift Left. Se ainda não a utilizam, esperamos que esse conhecimento seja útil no seu dia a dia. Podemos aplicar essa ideia em times e empresas que estejam sofrendo com esses problemas de gargalos, retrabalhos e travamentos, deslocando as últimas etapas para a esquerda, promovendo planejamento e colaboração.

Nos vemos em outros cursos e conteúdos da Alura.

Obrigado por assistir.

Um abraço!

Já é Aluno?

Comece agora

15min para conclusão

Comece a estudar agora na maior escola de tecnologia do país

Conheça os Planos para Empresas