Skip to content

Capítulo 1: Introdução a Computação em Nuvem

1.7 Cloud Native

Cloud Native é um termo que se refere a uma abordagem de desenvolvimento voltada para aplicações projetadas e executadas nativamente na nuvem. Essas aplicações são projetadas para serem distribuídas e desenvolvidas com o objetivo de aproveitar ao máximo as características e benefícios da Computação em Nuvem, como escalabilidade, resiliência e agilidade.

Uma aplicação que se beneficia dos recursos da nuvem possui a capacidade de se antecipar a falhas e manter sua estabilidade, mesmo diante de indisponibilidades na infraestrutura, sejam elas planejadas ou não (zero downtime). Nesse contexto, a "indisponibilidade" pode se referir tanto a problemas técnicos quanto também a qualquer alteração que exija a implementação de um novo código.

É importante dizer que aplicações Cloud Native não se limitam a serem executadas apenas em serviços básicos do modelo IaaS, como rede, máquinas virtuais ou bare metal. Em vez disso, elas são projetadas para tiraram o máximo de proveito dos diversos serviços e recursos oferecidos pela nuvem. Uma abordagem que se restringe apenas ao "move to cloud", não torna sua aplicação Cloud Native.

Como discutido na seção sobre DevOps, a responsabilidade de manter o Uptime das aplicações não recai apenas sobre a equipe de operações, mas também sobre os desenvolvedores. Ambas as equipes têm a responsabilidade de projetar sistemas com baixo acoplamento que sejam resilientes, gerenciáveis e observáveis.

Arquiteturas baseadas em microserviços são especialmente adequadas nesse contexto, pois promovem a decomposição de uma aplicação monolítica em serviços menores, autônomos e distribuídos, evitando assim os chamados pontos únicos de falha. Cada serviço possui uma única responsabilidade, e a proposta é que esses serviços colaborem entre si para formar a aplicação como um todo.

Nesse contexto, Computação em Nuvem refere-se ao ambiente onde o software é executado, enquanto Cloud Native diz respeito à forma como esse software é projetado e executado.

Além de tudo o que já foi dito, desenvolver software de acordo com os padrões Cloud Native frequentemente contribui para a redução de custos, pois elimina o overprovisioning ao permitir que os recursos sejam escalados conforme a demanda de utilização.

NOTA

Overprovisioning é um termo utilizado em ambientes de computação e infraestrutura de TI que se refere à prática de alocar mais recursos do que o necessário para atender à demanda de uma aplicação ou serviço.

Aqui estão os principais componentes e características que compõem uma aplicação cloud native:

Contêineres

Os contêineres, como os fornecidos pelo Docker, são usados para empacotar microserviços e suas dependências em um ambiente isolado. Isso garante que os serviços sejam executados de maneira consistente em diferentes ambientes, desde o desenvolvimento até a produção.

Microserviços

As aplicações Cloud Native são frequentemente construídas usando uma arquitetura de microserviços, onde a aplicação é dividida em serviços pequenos e independentes. Cada microserviço é responsável por uma funcionalidade específica e pode ser desenvolvido, implantado e escalado de forma independente.

Orquestração de Contêineres

Ferramentas de orquestração, como Kubernetes, são usadas para gerenciar a implantação, escalabilidade e operação de contêineres. Elas ajudam a automatizar tarefas como balanceamento de carga, recuperação de falhas e gerenciamento de configuração.

Escalabilidade

As aplicações Cloud Native são projetadas para escalar horizontalmente, o que significa que novos instâncias de serviços podem ser adicionadas ou removidas conforme a demanda. Isso permite que a aplicação se adapte rapidamente a mudanças no tráfego.

Resiliência

Uma aplicação Cloud Native deve ser resiliente, ou seja, capaz de se recuperar rapidamente de falhas. Isso é alcançado por meio de práticas como redundância, replicação de dados e monitoramento contínuo.

DevOps e Automação

As práticas de DevOps são fundamentais para aplicações Cloud Native. Através de técnicas CI/CD, elas permitem que as equipes integrem e implantem código de forma rápida e eficiente, garantindo que novas funcionalidades e correções sejam entregues aos usuários rapidamente.

Serviços Gerenciados

As aplicações Cloud Native frequentemente utilizam serviços gerenciados oferecidos pelos provedores de nuvem, como bancos de dados, serviços de armazenamento, serviços de autenticação e muito mais. Isso permite que as equipes se concentrem no desenvolvimento de funcionalidades em vez de gerenciar a infraestrutura.

API-First

As aplicações Cloud Native são frequentemente construídas com uma abordagem API-first, onde as interfaces de programação de aplicativos (APIs) são projetadas e documentadas antes do desenvolvimento. Isso facilita a integração entre diferentes serviços e sistemas.

Observabilidade

A observabilidade é crucial para entender o comportamento da aplicação em produção. Isso inclui monitoramento, logging e tracing distribuído, permitindo que as equipes identifiquem e resolvam problemas rapidamente.

Segurança

A segurança deve ser incorporada em todas as etapas do ciclo de vida da aplicação, desde o desenvolvimento até a produção. Isso inclui práticas como autenticação e autorização, criptografia de dados e gerenciamento de vulnerabilidades.

1.7.1 Cloud Native Computing Foundation (CNCF)

A CNCF, ou Cloud Native Computing Foundation, fundada em 2015, é uma organização sem fins lucrativos associada à Linux Foundation, dedicada a promover e facilitar o desenvolvimento e a adoção de tecnologias nativas da nuvem.

alt_text

CNCF promove, por meio de um ecossistema de projetos de código aberto e independentes de fornecedores, a adoção de paradigmas que possibilitam o desenvolvimento de aplicações escaláveis, resilientes, gerenciáveis e observáveis. Isso permite a implementação de mudanças de alto impacto de forma frequente e previsível, com o mínimo de esforço.

Conforme mencionado em seu FAQ, as tecnologias da CNCF não estão sujeitas ao chamado vendor lock-in e são portáveis entre diferentes provedores de nuvem.

NOTA

Consulte "Cloud Native da CNCF versão 1.1", que descreve os princípios e características fundamentais desse conceito.

A CNCF hospeda diversos projetos que possibilitam o desenvolvimento de aplicações Cloud Native sem o risco de vendor lock-in, garantindo a portabilidade entre diferentes provedores de nuvem.

alt_text

NOTA

Consulte "Graduated and Incubating Projects" para acessar a lista dos projetos mantidos pela CNCF.