DevOps em um mundo nativo da nuvem: a colisão entre dois dos termos mais badalados da tecnologia
Muitos líderes tecnológicos estão se perguntando: como é o DevOps para desenvolvimento nativo na nuvem?
Como é o DevOps para desenvolvimento nativo na nuvem?
O DevOps é o mais veterano dos dois, sendo popular há mais de uma década. Mas sua longevidade não trouxe necessariamente clareza ao que ele realmente significa nem a como funciona na prática. Acrescente aí o nativo da nuvem, que é mais novo e ainda menos compreendido, a confusão se acentuará naturalmente.
Provavelmente por isso, percebemos que, sem um ponto de partida convencionado quanto às definições, essas conversas podem rapidamente se tornar equivocadas. Antes de analisarmos como funcionam juntos, precisamos estabelecer o que significam — ou o que não significam.
Comecemos com o DevOps. O DevOps não é um serviço, um produto ou um cargo. É um modelo operacional que mescla funções de desenvolvimento e infraestrutura em equipes multifuncionais, apoiado por automação e coordenado por metodologias ágeis. Depois, em linhas gerais, desenvolvimento "nativo da nuvem" significa modularizar sua pilha de aplicativos e utilizar microsserviços para criar uma arquitetura sem servidor e otimizar recursos. Trata-se de construir ou modernizar aplicativos para aproveitar e maximizar os principais atributos da computação em nuvem, relativos a escalabilidade, confiabilidade e automação.
E é aí que o DevOps e o nativo da nuvem se congregam. Porque o que é moderno e nativo da nuvem hoje talvez não o seja daqui a cinco anos. Hiperescaladores com novos serviços surgem o tempo todo, e a tecnologia avança rapidamente.
Se feito corretamente, o DevOps permite aprimorar constantemente a forma como você constrói seus aplicativos e equipes, mantendo você em compasso com as novas tecnologias praticamente à medida que vão surgindo.
Há três pré-requisitos para se alcançar um estado de DevOps verdadeiro
Chegar a um estado real de DevOps, especialmente quando também é preciso lidar com o uso de serviços nativos da nuvem, é uma jornada. E, provavelmente, uma jornada bem comprida. Mas há três pré-requisitos que vemos serem repetidamente combinados para formar as bases do sucesso.
Primeiro, você precisa livrar-se das concepções equivocadas sobre a natureza do DevOps e como ele é implementado. As empresas não criam uma equipe DevOps nem compram uma solução de fornecedor e imediatamente automatizam seus processos. Elas, sim, removem silos e barreiras entre as equipes para combinar disciplinas e possibilitar compreensão e propósito compartilhados. Para realmente começar a adotar o DevOps e as metodologias ágeis correspondentes no desenvolvimento nativo da nuvem, cada uma dessas equipes precisa ter incorporadas as habilidades para assumir a responsabilidade de ponta a ponta por sua respectiva parcela do produto ou serviço.
Em segundo lugar, é preciso envolver todas as partes interessadas pertinentes desde o início da jornada. Muitas vezes, uma parte interessada influente ouve "DevOps" numa apresentação e volta ao escritório dizendo que "a gente agora faz DevOps". Esse entusiasmo é ótimo, mas se você não envolver as pessoas certas — aquelas que lideram as equipes de desenvolvimento, as equipes de aplicativo, as equipes de banco de dados e as equipes de infraestrutura —, então será um começo difícil.
Por fim, deixe os donos dos aplicativos e os desenvolvedores direcionarem os requisitos de arquitetura. Eles saberão de quais tecnologias precisam e o que é necessário na pilha de aplicativos para que possam implementar. No entanto, devem ser orientados pelas equipes de infraestrutura a adotar PaaS e SaaS por padrão. Muitas vezes, as equipes chegam a esse estado vindas do uso de instâncias e VMs. Mas, se alguém quer uma VM ou um banco de dados Mongo ou Redis, então, num mundo DevOps, é tarefa da equipe de infraestrutura encontrar e recomendar substitutos nativos da nuvem. (Se, tendo feito a pesquisa, ou conforme surjam necessidades adicionais de desenvolvimento, você precisar reverter para VMs, então tudo bem.)
Como é o DevOps verdadeiro no nativo da nuvem quando as empresas lançam novas versões?
A primeira coisa a dizer sobre lançamentos ou novas versões com DevOps num mundo nativo da nuvem é que, se você tiver sucesso em combinar os dois, essas grandes implantações não serão mais consideradas grandes acontecimentos. Você já suavizou o processo, chegou lá peça por peça, e o dia do lançamento é apenas a peça final do quebra-cabeça. É um lugar libertador para se estar.
Nos estágios finais, ao se aproximar da data de liberação, a máquina que construiu começará a zunir, à medida que você chamar cada equipe, no momento exato, para preparar os testes de carga em prontidão para o lançamento. E isso funciona porque você gastou meses (daí para mais) trabalhando em um plano no qual todos entendem as necessidades e o cronograma, em termos de aprontar o ambiente de desenvolvimento até o momento X, a infraestrutura até o momento Y, para atingir a meta Z.
É uma sinfonia. As pessoas precisam saber sua parte, quando tocá-la e como ela contribui para o quadro geral. Quando isso funciona, é lindo. Quando não funciona, a obra fica dissonante.
Como chegar lá: é melhor fazer parceira ou ir sozinho?
Se você está adotando DevOps e nativo da nuvem por meio de parceria com um terceiro, deve encontrar no fornecedor pessoas e capacidades que complementem e aprimorem o que você já tem. Isto é fundamental: você deve conectar habilidades que se adéquem ao seu modelo operacional para criar equipes multifuncionais, e não ficar dependente de partes externas. Então, se você tem uma sólida equipe de desenvolvimento e produto, mas precisa de ajuda no lado da infraestrutura, seu parceiro precisa se encaixar como uma extensão dessa equipe (em vez de ser a equipe). Chamamos essa abordagem de "fazer juntos".
Se for sozinho, comece pequeno e faça iterações. Haverá muito deficit técnico a ser resolvido e muito aprendizado em ambos os lados, então será preciso ter paciência. Mas você pode experimentar essa sensação vencedora desde cedo, colhendo primeiro os frutos mais acessíveis e usando-os como uma oportunidade para trabalhar com as ferramentas e fazer com que todos se acostumem a estar juntos na sala. Isso talvez signifique automatizar um aspecto muito específico da implantação; ou considerar as necessidades empresariais de tempo de atividade, backups e monitoramento e planejar o primeiro projeto a partir daí.
Com DevOps e nativo da nuvem, o aprendizado nunca termina — por isso, comece agora (ou pelo menos em breve)
Trata-se de uma jornada, e o destino não é estático — há sempre mais para aprender ou novos desafios a resolver na hora de estabelecer ou manter as competências do DevOps.
As organizações nos estágios iniciais do DevOps costumam lidar com pontos de dor tradicionais da TI, como custos altos, dispersão de instâncias e questões de tempo de atividade. Mas, ao tentarem resolver esses problemas retroativamente, elas descobrem que é muito mais difícil voltar e corrigi-los do que considerá-los desde o início. As empresas em estágio avançado de DevOps, por outro lado, já descobriram a metodologia ágil e colocaram as equipes para conversar; há profundidade em ambos os lados da casa e uma compreensão madura da pilha e das ferramentas. Mas sempre é possível otimizar custos e desempenho.
Obviamente, as empresas em estágio inicial são as que têm mais para aprender. Por isso, vamos concluir abordando os melhores conselhos para os líderes de tecnologia começarem a jornada até o DevOps e o nativo da nuvem.
- Seja criterioso e objetivo com a as ferramentas e padrões que for escolher na hora de começar, para garantir que não sejam provocados deficits técnicos no futuro. Há muitas opções por aí, e é fácil continuar aumentando eternamente a cadeia de ferramentas.
- Entenda em que ponto você está nas suas jornadas de DevOps e de maturidade na nuvem e crie um plano para corrigir todos os problemas primeiro. Pergunte a si mesmo: você ainda enxerga a nuvem apenas como um lugar para suas VMs, instâncias EC2 ou apenas para executar seus aplicativos? Como suas equipes estão estruturadas? Elas complementam ou atrapalham umas às outras?
- Comece o mais rápido possível. A tecnologia de nuvem evolui o tempo todo e, quanto mais você esperar, maior será a distância a ser percorrida.
Algo importante está chegando
About the Authors
VP, Public Cloud
Josh Prewitt
Since joining Rackspace Technology in 2010 as a Linux Administrator in our Customer Success organization, Josh has led numerous teams and functions across Rackspace including global technical support organizations, operations, product management, software development and engineering. In his current role as VP, Public Cloud, Josh oversees Rackspace Technology’s Public Cloud Solutions strategy for services on AWS, Azure, and GCP creating innovative solutions for customers. Prior to joining Rackspace, Josh was a customer of Rackspace from 2003-2009 and led a handful of affiliate marketing startups.
Read more about Josh Prewitt