O cloud native é a forma moderna de desenvolver software.

Por Scott Carey e Florian Maier
A computação nativa das clouds tira partido de muitas técnicas de desenvolvimento de ponta, tais como microserviços, contentores, CI/CD, ágeis e devops. Leia o que precisa de saber sobre esta abordagem, a paisagem nativa das clouds e as vantagens e desvantagens.
Cloud native – Definição
Cloud Native é uma abordagem moderna ao desenvolvimento de aplicações de software. O modelo é especificamente adaptado às infraestruturas das clouds e tira partido da flexibilidade, escalabilidade e resiliência da cloud. Cloud Native engloba as várias ferramentas e técnicas utilizadas atualmente pelos programadores de software para construir aplicações para a cloud pública. Isto contrasta com arquiteturas tradicionais e abordagens de desenvolvimento (cascata) que são adequadas para centros de dados locais.
A abordagem nativa das clouds foi desenvolvida por um grupo de empresas às quais se aplica o atributo “nascido na cloud”. Estes incluem, por exemplo, os gigantes de streaming Netflix e Spotify, a empresa de serviços de viagens Uber ou a plataforma de reservas Airbnb. A abordagem nativa das clouds foi desde então adotada por outras empresas que procuram flexibilidade digital semelhante e vantagens competitivas disruptivas.
A Cloud Native Computing Foundation (CNCF) define cloud nativa de forma um pouco mais restrita, concentrando-se na contentorização de aplicações que são divididas em micros erviços e embaladas em contentores leves a serem implantados e orquestrados numa variedade de servidores e sistemas operativos: “As tecnologias nativas das clouds permitem às empresas desenvolver e fornecer aplicações escaláveis em ambientes modernos e dinâmicos, tais como clouds públicas, privadas e híbridas”.
O desenvolvimento de aplicações nativas da cloud combina tipicamente os seguintes elementos com técnicas tais como DevOps ou Agile:
- Microserviços
- Plataformas de clouds
- Contentores
- Kubernetes
- Infraestruturas imutáveis
- API declarativas
- Tecnologias de Entrega Contínua.
Cloud Native – Ecossistema
Esta mudança no desenvolvimento de software levou a um novo panorama de ferramentas predominantemente de código aberto. O CNCF fornece um gráfico interativo deste ecossistema:
Na computação nativa da cloud, existem quatro níveis a compreender:
A camada de definição e desenvolvimento da aplicação: a camada superior da pilha nativa da cloud centra-se nas ferramentas utilizadas pelos programadores para construir aplicações. Estas incluem, por exemplo, bases de dados, sistemas de mensagens, imagens de contentores e condutas CI/CD.
A camada de implantação: inclui tudo o que é necessário para criar e proteger o ambiente em que a aplicação é executada. No mundo nublado, isto geralmente significa tratar a infraestrutura como código; armazenar imagens num repositório; automatizar construções; e cumprir os requisitos de segurança da aplicação através de scan de vulnerabilidades, gestão de chaves e políticas, e ferramentas de autenticação.
A camada de tempo de execução: Esta camada inclui tudo relacionado com a execução de uma aplicação nativa da cloud, tal como o tempo de execução do contentor e o armazenamento e ligação em rede.
A camada de orquestração e gestão: Combina as ferramentas necessárias para implementar, gerir e escalar aplicações contentorizadas – incluindo orquestração e programação. Na maioria dos casos, isto significa Kubernetes, bem como descoberta de serviços, proxy de serviços, API gateway e malha de serviços.
Fora destas camadas, é também importante implementar uma monitorização funcional para monitorizar eficazmente todos estes serviços. Algumas organizações também optam por consolidar a sua pilha nativa de clouds numa plataforma interna de desenvolvimento de self-service ou recorrer a um fornecedor de PaaS para ajudar os desenvolvedores a começar.
Cloud Native vs. No Local
O desenvolvimento de aplicações nativas da cloud requer uma arquitetura completamente diferente das aplicações empresariais tradicionais, que normalmente funcionam num centro de dados no local. Estas são as principais diferenças e as vantagens que o Cloud Native oferece em relação aos modelos tradicionais de desenvolvimento de aplicações:
Linguagens de programação: As aplicações no local escritas para correr em servidores empresariais são tipicamente escritas em linguagens tradicionais como C/C++, C# e Enterprise Java. As aplicações nativas da cloud são mais suscetíveis de serem escritas numa linguagem centrada na web, como HTML, CSS, Java, JavaScript, .NET, Go, Node.js, PHP, Python ou Ruby. A utilização de linguagens e plataformas de programação modernas pode também ajudar a sua empresa a manter-se à frente da concorrência na “guerra pelos talentos”.
Atualização: As aplicações nativas das clouds são desenvolvidas para serem altamente disponíveis, resilientes e atualizáveis regularmente. As aplicações no local, por outro lado, são normalmente atualizadas uma ou duas vezes por ano, utilizando o método da cascata. A flexibilidade que a Cloud Native oferece aqui pode contribuir para a produtividade dos criadores de software, por um lado, e para a satisfação do cliente ou experiência do cliente, por outro.
Elasticidade: As aplicações nativas das clouds tiram normalmente partido da elasticidade da cloud, ajustando o consumo conforme necessário. No caso de uma aplicação no local, a implantação física exigiria infraestruturas adicionais para uma escala eficaz. Isto também tem implicações em termos de custos: Na cloud, só se paga pelo que se utiliza.
Multi-tenant: Uma aplicação nativa da cloud funciona facilmente num espaço virtualizado e partilha recursos com outras aplicações num modelo multi-tenant. Isto pode dar ao desenvolvimento de software um impulso na eficiência.
Tempo de inatividade: Devido ao seu tamanho e natureza descentralizada, a cloud oferece uma maior redundância. Ao redirecionar rapidamente o tráfego para outra região, as interrupções podem ser melhor geridas e o dispendioso tempo de inatividade evitado.
Automação: A Cloud Native abre uma grande variedade de possibilidades de automatização. Por isso, idealmente só precisa de se desenvolver uma vez e pode depois passar a outros desafios mais prementes.
Stateless: As aplicações nativas das clouds são tipicamente stateless, o que significa que não transferem dados armazenados de uma sessão para a seguinte. Este modelo facilita a escala em múltiplos servidores, facilita o cache para aumentar o desempenho e utilizar menos armazenamento. Também ajuda a evitar o temido bloqueio do fornecedor, uma vez que com aplicações nativas das clouds não se está ligado a uma infraestrutura específica.
Cloud native – Desafios
A tentativa de elevar e deslocar uma aplicação existente no local para nebulares nativos sem alterações arquitetónicas não funciona. Outros desafios para as empresas que querem tornar-se nativas da cloud incluem:
- encontrar a mistura certa de competências
- adaptar-se a um modelo de segurança centrado na cloud
- gerir a mudança do perfil de custos de um ambiente de clouds.
Os programadores devem procurar adotar a cloud nativa como princípio organizador, quer desenvolvendo novas aplicações para a cloud, quer dividindo as aplicações monolíticas existentes em microserviços para as tornar mais adequadas para um ambiente de cloud. Isto requer uma grande mudança de mentalidade do desenvolvimento tradicional das cascatas de água para princípios de desenvolvimento mais ágeis, tais como o Produto Mínimo Viáveis, automação, testes multivariados, observabilidade e o modelo Devops.