Arquitetura nativa da nuvem: diretrizes para migração

Empresas estão adotando a arquitetura nativa da nuvem para desenvolver e implantar aplicativos e assim obter maior eficiência, disponibilidade, segurança, escalabilidade e produtividade. Apesar dos desafios, a cloud native se mostra mais vantajosa que as arquiteturas monolíticas, mais limitantes à medida que os sistemas e serviços se tornam maiores e mais complexos.

Equipes de alto desempenho de organizações orientadas à nuvem já apresentam melhores resultados que aquelas baseadas na arquitetura monolítica. Seus desenvolvedores não só aumentam a produtividade, como também fazem implantações várias vezes por dia, sobem as alterações em produção em menos de um dia, restauram os serviços em até 60 minutos e atingem  uma taxa de falha de alteração de 0 a 15%.

Mas mesmo com tantos benefícios, muitas empresas que iniciam a migração para a nuvem não obtêm o sucesso esperado ou não sabem como aproveitar todos os recursos dessa arquitetura.

Neste long post, vamos apresentar as diretrizes para adoção da cloud native, uma inovação que pode começar hoje mesmo na sua empresa.

Boa leitura!

1. O que é arquitetura nativa da nuvem?

O termo arquitetura nativa da nuvem, ou cloud native, se refere a uma abordagem para design, implementação e desenvolvimento de aplicativos que aproveita ao máximo os serviços e modelos de entrega baseados na computação em nuvem. Devido aos recursos escaláveis e elásticos oferecidos pela cloud computing, diversas organizações já estão adotando esse tipo de arquitetura para obter maior disponibilidade, escalabilidade e segurança, assim como redução de custos.

Aplicativos cloud native superam as limitações dos monolíticos

Apesar da facilidade de projeção e implantação de softwares e aplicativos monolíticos, essa abordagem pode se tornar um problema para a sua equipe de TI. À medida que se tornam mais complexos, os sistemas monolíticos demandam mais colaboradores, limitando a produtividade e a velocidade da implantação. Os testes ficam mais trabalhosos, assim como a inclusão de novos recursos, a manutenção e a disponibilidade dos softwares, afinal, estes são criados como uma única unidade.

Para lidar com o crescimento dos sistemas monolíticos, muitas empresas optam por dividir suas equipes de TI por função e então reatribuem tarefas a cada uma. Essa é uma estratégia válida, porém resulta no aumento do tempo de entrega e dos lotes, além de uma alta quantidade de retrabalho.

Segundo pesquisa da equipe DORA do Google, equipes de alto desempenho têm duas vezes mais chances de desenvolver e entregar softwares com uma única equipe multifuncional. 

Principais indicativos de que o design, implementação e desenvolvimento de aplicativos monolíticos está limitada

  • O esforço para gerenciamento da configuração dos ambientes de teste e produção é significativo;
  • Longos processos de compilação e que frequentemente são interrompidos; 
  • Ausência ou dificuldade na rotina de ciclos de testes e integração;
  • Esforço excessivo no apoio aos processos de compilação e teste de QA;
  • Redução da produtividade dos desenvolvedores;
  • Pode ter processos de implantação complicados e realizados fora do horário normal, exigindo períodos de inatividade programadas;
  • Dificuldade de debug e resolução de problemas, podendo oferecer uma experiência indesejada ao usuário.

Como funciona o cloud native

A arquitetura nativa da nuvem não se restringe a um tipo específico de arquitetura de aplicativo, design ou processo de entrega, mas sim a diferentes formas de criar um software na nuvem.

Alguns recursos, no entanto, são comuns a todos os sistemas cloud native:

  • Arquitetura baseada em serviços ou microsserviços, ou seja, as funcionalidades do aplicativo são distribuídas em vários recursos que interagem entre si para operar o sistema completo. Isso também permite que cada componente seja gerenciado de forma independente, sem a possibilidade de colocar em risco o funcionamento de outras funcionalidades;
  • Os sistemas nativos da nuvem utilizam serviços padrão fornecidos pela plataforma, como DBMS (sistemas de gerenciamento de banco de dados), CDN e terminação SSL;
  • São implantados em um ambiente distribuído e não em apenas um único servidor;
  • São atualizados de forma contínua e frequente com estratégias de Ci/CD e DevOps;
  • Uma única equipe multifuncional pode atender todo o ciclo de vida de entrega  de cada serviço.

2. Benefícios da arquitetura nativa da nuvem

Entrega rápida, versões confiáveis, conformidade mais simples e barata, custos menores e mais segurança. Conheça os principais benefícios arquitetura nativa da nuvem:

Confiabilidade e capacidade de recuperação

Os aplicativos da nuvem são implantados em ambientes distribuídos, o que é vantajoso em caso de falhas e interrupções. Uma falha de um único servidor, ou mesmo de vários servidores, não irá causar falha no aplicativo, já que os serviços podem ser reimplantados em outros ambientes.

Escalabilidade

A computação em nuvem facilita a escalabilidade, pois permite que os aplicativos sejam divididos em partes menores. Assim, cada porção pode ser dimensionada — e redimensionada — individualmente, o que proporciona mais eficiência e agilidade nesse processo. Você pode, portanto, ampliar apenas um serviço do software, mantendo a capacidade normal do restante do aplicativo.

Eficiência

Os sistemas nativos da nuvem se destacam pelo custo e desempenho, pois é possível consumir do seu provedor apenas os recursos necessários. Serviços compartilhados e padronizados são fornecidos pelo serviços de nuvem e os aplicativos são executados em uma infraestrutura compartilhada. 

Entrega mais rápida

Uma equipe multifuncional responsável por um aplicativo consegue atuar de forma mais autônoma, já que os serviços são divididos em partes menores e acoplados com flexibilidade. Dessa forma, os desenvolvedores podem aumentar a produtividade, acelerar o desenvolvimento e entregar mais rapidamente os serviços.

Velocidade na inovação

A cloud native divide os aplicativos em diversos componentes para que possam ser desenvolvidos individualmente com as bases de código disponíveis na plataforma. Inovações e novos recursos também são mais facilmente elaborados, pois metodologias para incentivar o desenvolvimento contínuo e interativo são aplicadas, como a CI/DI — continuous integration/continuous delivery ou integração contínua/entrega contínua, em português.

Segurança

Os servidores de plataformas na nuvem mantém os serviços compartilhados atualizados, com patches aplicados e em conformidade. Como o gerenciamento e a implantação dos provedores também são padronizados, atualizar e corrigir os serviços se torna uma tarefa mais fácil.

Automação

A arquitetura nativa da nuvem facilita o uso de ferramentas de automação na implantação e no gerenciamento de aplicativos. Ao implantar um sistema usando contêineres, por exemplo, você pode orquestrá-lo utilizando ferramentas como o Kubernetes, que lida automaticamente com tarefas como balanceamento de carga e posicionamento do workload.

3. Como migrar para o nativo da nuvem

Os benefícios da computação em nuvem são claros, mas muitas empresas ainda adotam uma abordagem de migração “lift-and-shift” para migrar serviços para a nuvem, pois esse processo exige poucas alterações. 

Nesses casos, no entanto, a nuvem é tratada como um datacenter tradicional, aproveitada apenas para armazenar softwares e cargas de trabalho. Dessa forma não é possível, portanto, desfrutar dos benefícios da arquitetura nativa da nuvem.

Muitas organizações não vão além devido aos custos e à complexidade da operação, uma vez que é preciso repensar todo o ciclo de vida de entrega de software. E não são poucas as empresas de grande porte que realmente perderam dinheiro ao optarem por uma migração “tudo ou nada”.

Por isso, a melhor estratégia é adotar uma abordagem evolutiva, incremental e iterativa para que, pouco a pouco, suas equipes aprendam a trabalhar na nuvem enquanto oferecem novas funcionalidades já nativas. 

Ao invés de escrever sistemas completamente do zero, os desenvolvedores podem escrever novos recursos baseados no nativo da nuvem, garantindo a interação com o aplicativo monolítico original para ter a funcionalidade atual.  À medida que se aprimoram na nova arquitetura, a equipe pode mudar a funcionalidade atual para ter a integridade conceitual dos serviços novos.

Como executar uma recuperação bem sucedida 

Veja três etapas fundamentais para ter sucesso na recriação de aplicativos no nativo da nuvem:

1. Entregue novas funcionalidades rapidamente

Num primeiro momento, não dedique tempo e esforço à reprodução da funcionalidade atual. É mais importante começar a entregar novas funcionalidades usando novos serviços para logo aprender e comunicar as práticas recomendadas adquiridas durante o trabalho no nativo da nuvem. 

2. Crie como nativo da nuvem

Utilize os serviços nativos da plataforma de nuvem para CDN, DBMS, rede, mensagens, armazenamento de blob e assim por diante, e, quando possível, aproveite os stacks de aplicativos padronizados do provedor. Armazene os serviços em contêineres e automatize os processos de compilação, teste e implantação. 

3. Desenvolva para equipes autônomas de forma não acoplada

Isso é fundamental para que cada equipe possa testar e implantar seus próprios serviços, garantindo uma alta produtividade e rápida entrega. Se uma equipe conseguir responder “sim” para as perguntas abaixo, os resultados serão melhores:

  1. Alterações em grande escala no projeto do sistema podem ser realizadas sem a permissão de uma pessoa de fora da equipe?
  1. Alterações em grande escala no projeto do sistema podem ser realizadas sem depender de alterações em sistemas de outras equipes ou demandar trabalho para outras equipes?
  1. O trabalho pode ser concluído sem necessidade de se comunicar ou depender de pessoas de fora da equipe?
  1. É possível implantar e lançar o produto ou serviço sob demanda independente de outros serviços dos quais ele precisa?
  1. Testes sob demanda podem ser executados sem exigir um ambiente de teste integrado?
  1. Implantações podem ser realizadas durante horário comercial normal, praticamente sem tempo de inatividade?

Não sabe por onde começar? Conheça os primeiros passos da mudança para uma arquitetura nativa da nuvem

Você não precisa levar tudo para a nuvem. Lembre-se de que é importante adotar a abordagem “migrar e aprimorar”. Só assim sua organização pode se beneficiar da arquitetura nativa da nuvem. 

1. Desenvolva uma prova de conceito

Busque uma equipe com capacidade e experiência para desenvolver uma prova de conceito — ou que já tenha feito isso.

2. Divulgue as lições aprendidas

Divulgue na sua organização todas as lições aprendidas no desenvolvimento da prova de conceito. 

3. Promova a adoção do padrão strangler fig

Suas equipes devem mover os serviços de maneira incremental e iterativa para a nuvem, conforme fornecem funcionalidades novas. Isso é o que chamamos de padrão strangler fig.

4. Garanta a autonomia e os recursos necessários às equipes

Para obter sucesso na migração, suas equipes multifuncionais precisam ter não só capacidade técnica, mas recursos e autonomia. Metas claras devem ser definidas — considerando as seis perguntas mencionadas —, mas seus desenvolvedores devem ter liberdade para decidir atingi-las.

Não espere para começar a migração, mas invista na melhor plataforma

A cloud computing é uma inovação cada vez mais fundamental nos negócios de todos os setores. Por isso, o mais importante é não esperar para começar a sua migração para a arquitetura nativa da nuvem. Só esteja certo de investir na plataforma mais completa.

O Google conta com uma solução com foco em aplicativos conteinerizados, o Google Cloud Platform. Além de uma infraestrutura completa, a multinacional conta com profissionais com profunda experiência em tecnologia nativa da nuvem e empresas parceiras para orientar organizações inovadoras em projetos de inovação na nuvem.

A Qi Network é Google Cloud Partner e pode ajudar sua empresa na migração para a nuvem do Google. Nossos especialistas vão ajudá-lo a entender seus principais desafios e planejar todas as etapas até suas cargas de trabalho migrarem.

Em nossa Jornada de Modernização de Infra, orientamos a migração, modernização e sustentação da infraestrutura no Google Cloud.

Fale com um de nossos especialistas e veja como a Qi Network pode se tornar sua parceira na inovação em nuvem.


Henrique Augusto

Henrique Augusto

Diretor de Inovação e sócio-fundador da Qi Network, há mais de nove anos ajudo empresas a inovarem por meio de soluções em nuvem nas áreas de produtividade, inteligência de dados e modernização de infraestrutura.