fbpx
Cloud Native – Pela perspectiva das big techs
Publicado em: segunda-feira, 5 de dez de 2022
Categorias: Arquitetura

Ainda existe uma aura em torno do termo, mas com uma mensagem clara. Não basta só DevOps, não basta só Microsserviço, não basta só Nuvem. Cada uma dessas camadas de complexidade são complementares, e tem como objetivo aumentar a eficiência e eficácia de soluções projetadas para a nuvem.

Aplicações Cloud Native vão muito além da Cloud em si, principalmente com a chegada do Kubernetes, onde se você tem um bom time de Ops, e possui restrições para a adoção de nuvem, pode inclusive tirar proveito desse universo com sua própria infra local.

Cloud native é sobre a forma como lidamos com o workload, é sobre a forma como projetamos nossas aplicações para extrair o poder da nuvem em vez de simplesmente adaptar algo desenhado para on-premise, agora em ambiente de nuvem.

Nos tópicos a seguir trago links e traduções que ajudarão no entendimento desse universo Cloud Native.

Segundo a Oracle

O termo Cloud Native refere-se ao conceito de criar e executar aplicativos para aproveitar a computação distribuída oferecida pelo modelo de entrega em nuvem. Os aplicativos Cloud Native são projetados e construídos para explorar a escala, elasticidade, resiliência e flexibilidade que a nuvem oferece.

Esses recursos permitem sistemas fracamente acoplados que são resilientes, gerenciáveis ​​e observáveis. Eles permitem que os engenheiros façam alterações de alto impacto com frequência e com o mínimo de esforço.

https://www.oracle.com/cloud/cloud-native/what-is-cloud-native/

Segundo a Microsoft

A arquitetura e as tecnologias Cloud Native são uma abordagem para projetar, construir e operar cargas de trabalho construídas na nuvem e aproveitar ao máximo o modelo de computação em nuvem.

https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/definition

Segundo a CNCF

As tecnologias Cloud Native capacitam as organizações a criar e executar aplicativos escalonáveis em ambientes modernos e dinâmicos, como nuvens públicas, privadas e híbridas. Contêineres, malhas de serviço, microsserviços, infraestrutura imutável e APIs declarativas exemplificam essa abordagem.

Essas técnicas permitem sistemas fracamente acoplados que são resilientes, gerenciáveis e observáveis. Combinados com uma automação robusta, eles permitem que os engenheiros façam alterações de alto impacto com frequência e previsibilidade com o mínimo de esforço.

https://www.cncf.io/about/who-we-are/

Segundo a AWS

Cloud Native é o método de software de criação, implantação e gerenciamento de aplicações modernas em ambientes de computação em nuvem. As empresas modernas desejam criar aplicações altamente escaláveis, flexíveis e resilientes que possam ser atualizadas rapidamente para atender às demandas dos clientes. Para isso, elas usam ferramentas e técnicas modernas que dão suporte, de forma inerente, ao desenvolvimento de aplicações na infraestrutura de nuvem. Essas tecnologias nativas de nuvem são compatíveis com mudanças rápidas e frequentes nas aplicações sem afetar a entrega de serviços, proporcionando uma vantagem competitiva e inovadora a quem adotá-las.

https://aws.amazon.com/pt/what-is/cloud-native/

Segundo a Red Hat

Os aplicativos Cloud Native são uma coleção de serviços pequenos, independentes e fracamente acoplados. Eles são projetados para oferecer valor de negócios bem reconhecido, como a capacidade de incorporar rapidamente o feedback do usuário para melhoria contínua. Resumindo, o desenvolvimento de aplicativos Cloud Native é uma maneira de acelerar a forma como você cria novos aplicativos, otimiza os existentes e conecta todos eles . Seu objetivo é entregar os aplicativos que os usuários desejam no ritmo que uma empresa precisa.

Mas e a “nuvem” em aplicativos Cloud Native? Se um aplicativo for “Cloud Native”, ele foi projetado especificamente para fornecer um desenvolvimento consistente e uma experiência de gerenciamento automatizado em nuvens privadas, públicas e híbridas. As organizações adotam a computação em nuvem para aumentar a escalabilidade e a disponibilidade de aplicativos. Esses benefícios são obtidos por meio de autoatendimento e provisionamento de recursos sob demanda, bem como automatizando o ciclo de vida do aplicativo, do desenvolvimento à produção.

Mas, para utilizar plenamente esses benefícios, é necessária uma nova forma de desenvolvimento de aplicativos.

O desenvolvimento Cloud Native é apenas isso: uma abordagem para criar e atualizar aplicativos rapidamente, melhorando a qualidade e reduzindo os riscos. Mais especificamente, é uma maneira de criar e executar aplicativos responsivos, escaláveis ​​e tolerantes a falhas em qualquer lugar, seja em nuvens públicas, privadas ou híbridas.

https://www.redhat.com/en/topics/cloud-native-apps

Segundo a GitLab

Cloud Native é uma abordagem que usa tecnologias como contêineres, Kubernetes, infraestrutura imutável e microsserviços para desenvolver aplicativos escaláveis ​​criados para serem executados na nuvem.

O Cloud Native é mais do que simplesmente pegar aplicativos existentes e executá-los na nuvem.

Cloud Native é um termo usado para descrever o software criado para ser executado em um ambiente de computação em nuvem. Esses aplicativos são projetados para serem escaláveis, altamente disponíveis e fáceis de gerenciar. Por outro lado, as soluções tradicionais geralmente são projetadas para ambientes locais e depois adaptadas para um ambiente de nuvem. Isso pode levar a um desempenho abaixo do ideal e maior complexidade.

À medida que as empresas movem mais cargas de trabalho para a nuvem, elas procuram cada vez mais soluções Cloud Native. As soluções Cloud Native são projetadas desde o início para aproveitar as características exclusivas da nuvem, como escalabilidade, elasticidade e agilidade.

https://about.gitlab.com/topics/cloud-native/

Segundo a Google

https://cloud.google.com/learn/what-is-cloud-native

Mas uma das melhores definições, que é a que carrego comigo, foi produzida pela Google. Porque ela sai do mundo abstrato e se

Cloud Native significa adaptar-se às muitas novas possibilidades – mas um conjunto muito diferente de restrições arquitetônicas – oferecidas pela nuvem em comparação com a infraestrutura local tradicional. 

Ao contrário dos aplicativos monolíticos, que devem ser criados, testados e implantados como uma única unidade, as arquiteturas nativas da nuvem decompõem os componentes em serviços fracamente acoplados para ajudar a gerenciar a complexidade e melhorar a velocidade, a agilidade e a escala da entrega de software.  

O que é um aplicativo Cloud Native?

Um aplicativo Cloud Native é projetado especificamente desde o início para aproveitar a elasticidade e a natureza distribuída da nuvem. Para entender melhor o que é um aplicativo Cloud Native, é melhor começar com o que não é — um aplicativo monolítico tradicional. 

Os aplicativos monolíticos funcionam como uma única unidade, geralmente com sistemas operacionais personalizados, middleware e pilhas de linguagem para cada aplicativo. A maioria dos scripts e processos também são criados especificamente para construção, teste e implantação. No geral, essa arquitetura de aplicativo cria dependências próximas, tornando mais difícil alterar, testar, implantar e operar sistemas à medida que crescem com o tempo. O que começa simples de projetar e implantar logo se torna complexo, difícil de evoluir e desafiador de operar. 

Em comparação, os aplicativos Cloud Native aproveitam ao máximo a natureza dinâmica e distribuída da infraestrutura moderna para obter maior velocidade, agilidade, escalabilidade, confiabilidade e economia. 

Os aplicativos Cloud Native geralmente são divididos em vários serviços independentes por meio do uso de tecnologias e metodologias, como DevOps, entrega contínua e integração contínua, contêineres, microsserviços e APIs declarativas. Isso permite que as equipes implantem e dimensionem componentes de forma independente, para que possam fazer atualizações, corrigir problemas e fornecer novos recursos sem qualquer interrupção do serviço.

Pilares Cloud Native

Existem várias maneiras de criar uma arquitetura nativa da nuvem, mas o objetivo é sempre aumentar a velocidade de entrega de software e a confiabilidade do serviço e desenvolver propriedade compartilhada entre as partes interessadas do software.

Ainda assim, os fundamentos das arquiteturas nativas da nuvem são baseados em cinco pilares principais: 

Microsserviços : quase todas as arquiteturas de nuvem são baseadas em microsserviços , mas o principal benefício que eles oferecem é a capacidade de composição — dividir um aplicativo em uma coleção de serviços menores e leves que podem ser facilmente compostos e conectados uns aos outros por meio de interfaces de programação de aplicativos (APIs).. Por exemplo, um aplicativo de comércio eletrônico pode ser composto por um serviço específico para carrinho de compras, outro para pagamento e outro que se comunica com o back-end sobre gerenciamento de estoque. A capacidade de composição também permite que as equipes troquem e recomponham componentes para atender a novos requisitos de negócios sem interromper outra parte do aplicativo. 

Contêineres e orquestração: os contêineres são componentes leves e executáveis ​​que contêm todos os elementos necessários, incluindo o código-fonte e as dependências do aplicativo, para executar o código em qualquer ambiente. Os contêineres oferecem portabilidade de carga de trabalho que oferece suporte ao código “crie uma vez, execute em qualquer lugar”, tornando o desenvolvimento e a implantação significativamente mais fáceis. Eles também ajudam a reduzir a chance de atrito entre linguagens, bibliotecas e estruturas, pois podem ser implantados de forma independente. Essa portabilidade e flexibilidade tornam os contêineres ideais para a construção de arquiteturas de microsserviços.   

A orquestração de contêineres também é essencial à medida que o número de microsserviços cresce para ajudar a gerenciar contêineres para que possam ser executados sem problemas como um aplicativo. Uma plataforma de orquestração de contêineres como o Kubernetes fornece supervisão e controle de onde e como os contêineres são executados, reparam quaisquer falhas e equilibram a carga entre os contêineres.

DevOps: o desenvolvimento de aplicativos Cloud Native requer a mudança para uma metodologia de entrega ágil como DevOps , em que desenvolvedores e equipes de operações de TI colaboram para automatizar os processos de entrega de infraestrutura e software. O DevOps permite que as equipes de desenvolvimento e operações se comuniquem mais de perto e se reúnam em torno de um objetivo compartilhado, criando uma cultura e um ambiente em que os aplicativos podem ser criados, testados e lançados mais rapidamente. 

Integração contínua e entrega contínua (CI/CD): a automação pode reparar, dimensionar e implantar sistemas muito mais rapidamente do que as pessoas. Os pipelines de CI/CD ajudam a automatizar a criação, o teste e a implantação de alterações de aplicativos sem a necessidade de programar o tempo de inatividade ou aguardar uma janela de manutenção. A entrega contínua garante que os lançamentos de software sejam mais confiáveis ​​e menos arriscados, permitindo que as equipes forneçam novos serviços e recursos com mais rapidez e frequência. 

Serviços Cloud Native

Os serviços e tecnologias Cloud Native ajudam você a criar, executar e implantar aplicativos escalonáveis ​​em qualquer ambiente. Enquanto seus clientes e usuários corporativos se beneficiam de um aplicativo regular, os serviços Cloud Native operam nos bastidores para manter tudo funcionando sem problemas. 

Por exemplo, serviços Cloud Native podem descrever as ofertas como serviço de provedores de serviços de nuvem (por exemplo, modelos de serviço Iaas , PaaS e SaaS), os microsserviços de um aplicativo e as APIs que conectam e permitem a comunicação entre serviços . 

Qual é a diferença entre nuvem e nuvem nativa?

Na verdade, existe uma diferença entre nuvem e nuvem nativa. Nuvem refere-se à computação em nuvem , em que empresas ou indivíduos pagam para acessar recursos de computação como um serviço sob demanda. 

Embora seja frequentemente usado como uma descrição abrangente para as ferramentas e técnicas usadas para desenvolver software na nuvem, o termo “Cloud Native” não se refere apenas à adoção da nuvem. Em vez disso, refere-se a como os aplicativos são criados e entregues, e não apenas onde são implantados. Em alguns casos, um aplicativo pode nem rodar na nuvem. É possível construir aplicativos com princípios Cloud Native e executá-los localmente ou em ambientes híbridos. 

O Cloud Native .NET é meu principal projeto.

Onde empenho energia para ajudar, acompanhar, direcionar Desenvolvedores, Líderes Técnicos e jovens Arquitetos na jornada Cloud Native.

Conduzo entregando a maior e mais completa stack de tecnologias do mercado.

Ao trabalhar com desenvolvedores experientes, eu consigo usar seu aprendizado com .NET, banco de dados, e arquitetura para encurtar a jornada.

Ao restringir à desenvolvedores .NET eu consigo usar do contexto de tecnologias e problemas do seu dia-a-dia, coisas que você conhece hoje, como WCF, WebForms, IIS e MVC, por exemplo, para mostrar a comparação entre o que você conhece e o que está sendo apresentado.

É assim que construímos fundamentos sólidos, digerindo a complexidade com didática, tornando o complexo, simples.

É assim que conseguimos tornar uma jornada densa, em um pacote de ~4 meses.

Eu não acredito que um desenvolvedor possa entender uma tecnologia sem compreender seus fundamentos. Ele no máximo consegue ser produtivo, mas isso não faz desse desenvolvedor um bom tomador de decisões técnicas.

É preciso entender os fundamentos para conseguir tomar boas decisões.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou.

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.