Cloud Native
Nativo da nuvem é uma abordagem para criar e executar aplicativos que aproveitam as tecnologias de computação em nuvem. Ele inclui o uso de tecnologias e práticas nativas da nuvem para projetar, desenvolver e implantar aplicativos escaláveis, resilientes e ágeis que podem ser executados na Oracle Cloud Infrastructure (OCI), em outras infraestruturas de nuvem e em data centers locais.
A nuvem nativa foi projetada e evoluída para aproveitar os benefícios da computação em nuvem, como escalabilidade, disponibilidade e redução da sobrecarga operacional. Ele usa contêineres, microsserviços e arquiteturas sem servidor, além de implementar práticas DevOps para automatizar e agilizar a entrega de software.
O objetivo da nuvem nativa é fornecer flexibilidade e escalabilidade de infraestrutura para sua organização que pode ser rapidamente adaptada para atender às necessidades de negócios em constante mudança. Essa abordagem de implementação permite que você obtenha um tempo de comercialização mais rápido, maior agilidade e custos mais baixos, além de oferecer uma melhor experiência e confiança ao usuário.
Evolução
A evolução da nuvem nativa envolve a mudança de aplicações monolíticas tradicionais para arquiteturas baseadas em microsserviços projetadas para serem executadas em ambientes de nuvem. Essa evolução é impulsionada pela necessidade de maior escalabilidade, confiabilidade e agilidade no desenvolvimento e na implementação de software. Também envolve a adoção de tecnologias e práticas modernas, como contêineres, Kubernetes e DevOps, que permitem criar, implementar e gerenciar aplicativos nativos da nuvem com mais eficiência. Espera-se que o futuro da nuvem nativa continue a ser moldado por tecnologias e inovações modernas nas áreas de automação, segurança e infraestrutura como serviço (IaaS).
Arquitetura
A arquitetura nativa da nuvem refere-se a um conjunto de princípios e padrões de design para criar e implementar aplicativos baseados em nuvem que são escaláveis, resilientes e seguros. Envolve o uso de tecnologias e práticas modernas, como contêineres, microsserviços e DevOps, para projetar e fornecer aplicativos baseados em nuvem.
Em uma arquitetura nativa da nuvem, os aplicativos são divididos em serviços menores, independentes e fracamente acoplados que podem ser desenvolvidos, implementados e gerenciados de forma independente. Esses serviços se comunicam entre si usando APIs e são empacotados e implantados usando contêineres. Isso permite criar aplicativos que podem ser facilmente dimensionados, gerenciados e atualizados sem interrupção no sistema geral.
A arquitetura nativa da nuvem também enfatiza o uso de pipelines de entrega automatizados e contínuos para implementar aplicativos e serviços. Isso permite que você implante de forma rápida e fácil novos recursos e correções de bugs e monitore e otimize continuamente o desempenho e a disponibilidade de seus aplicativos.
Em resumo, a arquitetura nativa da nuvem ajuda você a criar e implementar aplicativos baseados em nuvem que são escaláveis, resilientes e seguros, e que podem aproveitar os benefícios da computação em nuvem.
Base de Computação Nativa da Nuvem
A Cloud Native Computing Foundation (CNCF) é uma organização sem fins lucrativos que hospeda e promove projetos e tecnologias de código aberto relacionados à computação nativa da nuvem. A fundação visa criar um ecossistema próspero de tecnologias nativas da nuvem e promover seu crescimento e adoção.
A CNCF fornece uma plataforma neutra para fornecedores de tecnologia, usuários e desenvolvedores colaborarem em projetos nativos da nuvem e impulsionarem o desenvolvimento de tecnologias e padrões nativos da nuvem. Alguns dos projetos populares hospedados pela CNCF incluem Kubernetes, Prometheus, Envoy e Linkerd.
A CNCF opera sob os auspícios da Linux Foundation e fornece uma casa neutra e neutra do fornecedor para tecnologias nativas da nuvem. A fundação também trabalha em estreita colaboração com outras organizações e grupos do setor para promover as melhores práticas nativas da nuvem e promover o estado da computação nativa da nuvem.
O objetivo do CNCF é tornar mais fácil para as organizações adotar e usar tecnologias nativas da nuvem, garantindo também a sustentabilidade e o crescimento a longo prazo dessas tecnologias. Ao fornecer uma plataforma para colaboração e inovação, a CNCF está ajudando a impulsionar o desenvolvimento da computação nativa da nuvem e moldar seu futuro.
Nativo da Nuvem Versus CNCF
Nativo da nuvem refere-se a um conjunto de práticas e tecnologias que permitem criar e executar aplicativos escaláveis na nuvem. A CNCF é uma base de software de código aberto que hospeda e promove o desenvolvimento de tecnologias nativas da nuvem. Em outras palavras, a CNCF é a organização por trás do movimento nativo da nuvem.
Por que Adotar o Cloud Native?
A nuvem nativa é a tendência atual e há demanda do mercado para corresponder à mais recente inovação tecnológica na nuvem. Você pode aproveitar os benefícios da nuvem nativa de diferentes maneiras de acordo com suas necessidades e objetivos. Os benefícios da nuvem nativa incluem:
- Escalabilidade: Os aplicativos podem ser dimensionados horizontalmente adicionando mais instâncias ou verticalmente, aumentando o tamanho das máquinas virtuais.
- Resiliência: Os aplicativos podem se recuperar automaticamente de falhas e lidar com o aumento do tráfego com a ajuda de balanceadores de carga e dimensionamento automático.
- Economia de custos: As aplicações nativas da nuvem podem aproveitar o modelo de pagamento conforme o uso e alocar recursos dinamicamente, reduzindo custos e aumentando a eficiência.
- Tempo de lançamento mais rápido: Os aplicativos nativos da nuvem podem ser desenvolvidos e implantados mais rapidamente usando práticas de entrega contínua e DevOps.
- Segurança aprimorada: A segurança pode ser incorporada ao aplicativo usando recursos de segurança nativos da nuvem, como segmentação de rede e criptografia.
Nativo da Nuvem sobre Aplicativos Tradicionais
Os aplicativos tradicionais, também conhecidos como aplicativos monolíticos, são criados para fornecer funcionalidade em ambientes locais e exigem aplicativos adicionais para atender às necessidades operacionais e de manutenção. As vantagens da nuvem nativa em relação aos aplicativos tradicionais são:
- Escalabilidade: Os aplicativos nativos da nuvem são projetados para expansão e redução automatizadas para a demanda de capacidade de cargas de trabalho em constante mudança, tornando o aplicativo flexível e econômico em relação aos aplicativos monolíticos tradicionais.
- Resiliência: Divida os aplicativos em componentes menores e independentes, para que os aplicativos nativos da nuvem possam continuar a funcionar de forma independente, mesmo que um ou mais componentes não estejam funcionais ou disponíveis.
- Flexibilidade: As aplicações nativas da nuvem podem ser implementadas na OCI, em outras plataformas de nuvem e on-premises, fornecendo mais flexibilidade na sua escolha de infraestrutura.
- Velocidade: tecnologias nativas da nuvem, semelhantes a contêineres e microsserviços, permitem ciclos acelerados de desenvolvimento, teste e implementação, resultando em um tempo de lançamento mais rápido no mercado.
- Economia de custos: As aplicações nativas da nuvem aproveitam o modelo de pagamento conforme o uso e o modelo de consumo de compromisso da computação em nuvem, reduzindo os custos de infraestrutura e manutenção em comparação com as soluções tradicionais locais.
Frameworks
As estruturas nativas da nuvem fornecem os blocos de construção para desenvolver, implementar e gerenciar aplicações nativas da nuvem e são amplamente adotadas por organizações em todos os setores. Ao aproveitar essas tecnologias, você pode aproveitar os benefícios da computação em nuvem e criar aplicativos modernos, escaláveis e resilientes.
As estruturas nativas da nuvem são módulos, bibliotecas, pacotes e repositórios disponíveis para implementação nativamente de provedores de nuvem, também disponíveis para serem integrados ao código do aplicativo e carregados lateralmente. Algumas estruturas nativas da nuvem populares são:
- Kubernetes: Uma plataforma de código aberto para automatizar a implantação, o dimensionamento e as operações de aplicativos em contêineres.
- Istio: Uma malha de serviço de código aberto que fornece gerenciamento de tráfego de rede, observabilidade e segurança para microsserviços.
- Cnativo: Uma estrutura de código-fonte aberto para criar, implantar e gerenciar aplicativos sem servidor no Kubernetes.
- Envoy: Um proxy de serviço de código aberto para aplicativos nativos da nuvem que fornece balanceamento de carga, gerenciamento de tráfego e observabilidade.
- Prometheus: Um sistema de monitoramento e alerta de código aberto para aplicativos nativos da nuvem.
- Fluentd: Um coletor de dados de código aberto para registro e análise nativos da nuvem.
- OpenFaaS: Uma estrutura de código-fonte aberto para criar e implantar funções sem servidor no Kubernetes.
- Jaeger: Um sistema de rastreamento distribuído de código aberto de ponta a ponta para aplicativos nativos da nuvem.
- OpenTracing: Uma API de código aberto e um padrão de instrumentação para rastreamento distribuído de aplicações nativas da nuvem.
As estruturas nativas da nuvem não estão limitadas a esta lista. A lista é apenas para referência.
Tecnologias
As tecnologias nativas da nuvem são outra camada de abstração em estruturas nativas da nuvem para criar soluções consumíveis. Eles geralmente são conhecidos como plataforma como serviço (PaaS) oferecidos na nuvem para reduzir a sobrecarga de manutenção e operações. Algumas das tecnologias populares são:
- Contêineres: unidades de software leves, portáteis e independentes que podem ser executadas em qualquer infraestrutura.
- Kubernetes: Plataforma de código-fonte aberto para automatizar a implantação, o dimensionamento, a orquestração e o gerenciamento de aplicativos em contêineres.
- Microsserviços: Design de arquitetura de software no qual um aplicativo é dividido em componentes pequenos e independentes que podem ser desenvolvidos, implantados e gerenciados de forma independente.
- Computação sem servidor: Modelo de computação no qual o provedor de nuvem gerencia a infraestrutura e aloca automaticamente a capacidade de recursos necessária para executar aplicativos.
- Pipelines de CI/CD: Uma série de processos automatizados para criar, testar e implantar código continuamente.
- Malha de serviço: Uma camada de infraestrutura configurável para aplicações de microsserviços que torna a comunicação entre instâncias de serviço flexível, rápida e confiável.
- Balanceadores de carga: Um componente que distribui o tráfego de entrada em várias instâncias de um aplicativo para melhor escalabilidade e confiabilidade.
- Dimensionamento automático: A capacidade de um aplicativo dimensionar automaticamente seu uso de recursos em resposta a alterações na demanda.
As tecnologias nativas da nuvem estão em constante evolução. Esta lista não é exaustiva e é apenas para referência.
Práticas Recomendadas
Use as melhores práticas para criar aplicativos nativos da nuvem que sejam escaláveis, resilientes, seguros e capazes de oferecer melhores experiências ao usuário. Essas práticas também permitem que você adote a computação em nuvem e aproveite seus benefícios, como redução da sobrecarga operacional, tempo de comercialização mais rápido e maior agilidade. As melhores práticas para criar aplicativos nativos da nuvem são:
- Arquitetura de microsserviços: divida aplicativos em serviços pequenos, independentes e pouco acoplados que podem ser desenvolvidos, implantados e gerenciados de forma independente.
- Containerização: empacote aplicativos e dependências em contêineres para fornecer um ambiente de tempo de execução consistente e portátil para aplicativos.
- Implementação automatizada: Automatize a implantação e o gerenciamento de aplicativos usando ferramentas como pipelines de integração contínua e entrega contínua (CI/CD), Kubernetes e ferramentas de orquestração nativas da nuvem.
- Resiliência e escalabilidade: Projete aplicativos para serem resilientes e escaláveis usando técnicas como autocorreção, failover e dimensionamento automático.
- Observabilidade: Monitore e meça o desempenho e o comportamento dos aplicativos usando ferramentas como Prometheus, Grafana e ferramentas de rastreamento.
- Segurança: Implemente as melhores práticas e tecnologias de segurança para proteger aplicativos e dados, como uso de criptografia, protocolos de comunicação seguros e mecanismos de controle de acesso.
- Cultura DevOps: Adote uma cultura DevOps que enfatize a colaboração, a comunicação e a melhoria contínua em equipes de desenvolvimento, operações e segurança.
- Agnóstico da nuvem: Projete aplicativos para serem independentes da nuvem e capazes de serem executados em qualquer infraestrutura de nuvem ou data center on-premises.
Padrões de Design
Os padrões de design nativos da nuvem ajudam a criar e implementar aplicativos nativos da nuvem que são escaláveis, resilientes e seguros. Seguindo esses padrões, você pode aproveitar os benefícios da computação em nuvem e oferecer melhores experiências ao usuário.
- Microsserviços: Dividir um aplicativo monolítico em serviços menores, independentes e pouco acoplados que podem ser desenvolvidos, implantados e gerenciados de forma independente.
- Service Mesh: Implementando a comunicação de rede entre microsserviços usando uma malha de serviços, como Istio ou Linkerd, para fornecer recursos como gerenciamento de tráfego, segurança e observabilidade.
- Disjuntor: Implementação de um padrão de disjuntor para evitar falhas em cascata e melhorar a resiliência de microsserviços.
- API Gateway: Implementando um gateway de API para gerenciar e proteger o acesso a microsserviços e fornecer um único ponto de entrada para consumidores externos.
- Contêinerização: Empacotando aplicativos e dependências em contêineres para fornecer um ambiente de tempo de execução consistente e portátil para aplicativos.
- Dimensionamento automático: Dimensionamento automático de instâncias de aplicativos com base na demanda para melhorar o desempenho, a confiabilidade e a eficiência de custos.
- Implantação Azul/Verde: Implantando novas versões de aplicativos em um ambiente paralelo e alternando o tráfego entre as versões antiga e nova para minimizar o tempo de inatividade.
- Versão Canário: Liberando gradualmente novas versões do aplicativo para um subconjunto de usuários para testar e validar antes de liberar para toda a base de usuários.
- Padrão do Estrangulador: substituindo gradualmente partes de um aplicativo monolítico por microsserviços ao longo do tempo para minimizar interrupções e riscos.
Adoção.
A adoção da nuvem nativa requer uma mudança cultural na abordagem da sua organização para o desenvolvimento de software, além de mudanças em pessoas, processos e tecnologias. Você pode adotar a nuvem nativa de maneira estratégica e eficiente, percebendo os benefícios de maior escalabilidade, confiabilidade e agilidade. As informações a seguir descrevem as etapas comuns para adotar a nuvem nativa.
- Avaliação
- Avalie o estado atual de sua infraestrutura, processos e arquitetura de aplicativos para determinar o nível de prontidão nativa da nuvem.
- Planejamento
- Desenvolva uma estratégia nativa da nuvem que descreva os resultados desejados, a linha do tempo e as etapas a serem tomadas para adotar a nuvem nativa.
- Piloto
- Comece pequeno, com um projeto piloto ou um único microsserviço, para testar o processo nativo da nuvem e obter experiência com a tecnologia.
- Ferramentas
- Invista nas ferramentas e tecnologias certas para criar e gerenciar aplicativos nativos da nuvem, como contêineres, Kubernetes e ferramentas DevOps.
- Transição
- Rearquitetar aplicativos para uma arquitetura baseada em microsserviços, dividindo aplicativos monolíticos em serviços menores e mais gerenciáveis.
- DevOps
- Implemente pipelines de integração e entrega contínuas (CI/CD) para automatizar o processo de entrega de software.
- Treinamento
- Treine equipes de desenvolvimento sobre princípios, práticas e ferramentas nativas da nuvem.
- Cultura
- Promova uma cultura de colaboração e experimentação dentro de sua organização, incentivando as equipes a experimentar novas tecnologias e processos.
- Operar
- Monitore e avalie continuamente a eficácia da sua adoção nativa da nuvem e faça os ajustes necessários.
Implementação
A implementação nativa da nuvem em geral tem dois casos de uso: carga de trabalho de aplicativo não nativa da nuvem que já está em execução na produção e criação de uma nova carga de trabalho de aplicativo usando ferramentas e tecnologias nativas da nuvem. Ambos os cenários têm vantagens e desvantagens com base nas necessidades do negócio. Você pode escolher um deles com base na comparação a seguir.
Cenário | Re-design | Regravar |
---|---|---|
Complexidade | Moderado | Baixa |
Custo | Baixa | Alta |
Esforços | Baixa | Alta |
Flexibilidade | Baixa | Alta |
Opções | Baixa | Alta |
Manutenção | Alta | Baixa |
Tempo de comercialização | Baixa | Alta |
Futuro do Cloud Native
Espera-se que o futuro da tecnologia nativa da nuvem cresça e se torne cada vez mais prevalente nos próximos anos. À medida que as empresas continuam a adotar soluções baseadas em nuvem para infraestrutura e aplicações, a demanda por tecnologias nativas da nuvem aumentará. As informações a seguir descrevem algumas das principais tendências da tecnologia nativa da nuvem.
- Maior adoção da arquitetura de microsserviços
- Isso levará a uma maior adoção de tecnologias nativas da nuvem que oferecem suporte a microsserviços, como Kubernetes, Istio e Envoy.
- Foco em segurança e conformidade
- À medida que dados mais confidenciais são armazenados na nuvem, a segurança e a conformidade continuam sendo uma grande preocupação. As organizações buscarão soluções nativas da nuvem que possam atender aos requisitos de segurança e conformidade.
- Integração com IA/ML
- As soluções nativas da nuvem se integrarão cada vez mais às tecnologias de inteligência artificial (IA) e machine learning (ML) para fornecer maiores insights e automatizar processos.
- Emergência de soluções de nuvem híbrida
- As organizações buscarão preencher a lacuna entre as soluções locais e baseadas em nuvem, resultando em um aumento na demanda por soluções de nuvem híbrida.
A tecnologia nativa da nuvem continua a fornecer a agilidade, a escalabilidade e a economia de custos necessárias para os ambientes de negócios acelerados de hoje.
Ofertas Nativas da Nuvem da OCI
A OCI fornece uma variedade de ofertas nativas da nuvem, incluindo:
- Container Engine for Kubernetes (OKE): Um serviço Container Engine for Kubernetes totalmente gerenciado que facilita a implementação, o gerenciamento e a escala de contêineres na OCI.
- Funções: Uma plataforma de computação sem servidor que permite aos desenvolvedores criar e executar microsserviços sem precisar gerenciar a infraestrutura.
- Balanceador de Carga: Um serviço de balanceamento de carga altamente disponível e escalável para distribuir o tráfego de entrada para vários serviços de backend.
- Object Storage: Um serviço de armazenamento de objetos escalável, altamente disponível e seguro para armazenar e recuperar grandes volumes de dados.
- Block Volume: Um serviço de armazenamento em blocos persistente para armazenar e gerenciar dados anexados a instâncias de computação.
- Rede Virtual na Nuvem (VCN): Uma rede virtual altamente segura e escalável que permite isolar e proteger aplicativos e dados.
- Banco de Dados: Um serviço de banco de dados relacional totalmente gerenciado que fornece suporte para vários mecanismos de banco de dados, incluindo Oracle Database, MySQL e PostgreSQL.
- Processamento de Transações Autônomas: Um serviço de banco de dados totalmente gerenciado que oferece serviços de banco de dados rápidos, automatizados e altamente seguros.
Essas ofertas nativas da nuvem da OCI permitem que você crie, implante e gerencie aplicações nativas da nuvem em um ambiente seguro e escalável. Usando esses serviços, você pode aproveitar os benefícios da computação em nuvem e oferecer melhores experiências ao usuário.
Desafios do Cloud Native
A tecnologia nativa da nuvem tem vários desafios a serem considerados antes de adotá-la:
- Complexidade: As soluções nativas da nuvem podem ser complexas e difíceis de implementar, exigindo habilidades e experiência especializadas para gerenciar.
- Segurança e conformidade: Embora as soluções nativas da nuvem forneçam recursos de segurança aprimorados, elas também trazem novos desafios de segurança e conformidade, como privacidade de dados e requisitos regulatórios.
- Integração com sistemas existentes: A integração de soluções nativas da nuvem com sistemas existentes pode ser desafiadora, exigindo tempo, esforço e recursos significativos.
- Custo: Embora as soluções nativas da nuvem ofereçam economia de custos em algumas áreas, elas também podem incorrer em custos adicionais, como a necessidade de habilidades e infraestrutura especializadas, além do custo da migração de aplicativos e dados existentes para a nuvem.
- Desempenho: O desempenho pode ser um problema com soluções nativas da nuvem, especialmente ao lidar com grandes quantidades de dados ou aplicativos com requisitos de desempenho exigentes.
- Dependência com provedores de nuvem: As organizações que adotam soluções nativas da nuvem dependem fortemente de provedores de nuvem, o que pode limitar a flexibilidade e o controle sobre infraestrutura e aplicações.
Considere essas limitações ao decidir se a tecnologia nativa da nuvem é adequada para sua organização. Embora ofereça muitos benefícios, pode não ser o mais adequado para todas as organizações, e soluções alternativas, como soluções on-premises ou híbridas, podem ser mais adequadas.