As definições mais confiáveis atualmente vêm principalmente da Pivotal e da Cloud Native Computing Foundation (CNCF).
1.1 Fundamental
4 pontos principais: DevOps、持续交付、微服务、容器化。
Seis características: 模块化(Modularity) 、可观测性(Observability)、可部署性(Deployability)、 可测试性(Testability)、可处理性(Disposability)、可替换性(Replaceability)。
Nativo da nuvem é uma coleção de ideias, incluindo tecnologia (microsserviços, infraestrutura ágil) e gerenciamento (DevOps, entrega contínua, Lei de Conway, reorganização, etc.).
1.2 CNCF
A tecnologia nativa da nuvem ajuda as organizações a criar e executar aplicativos elasticamente escaláveis em novos ambientes dinâmicos, como nuvem pública, nuvem privada e nuvem híbrida.
As tecnologias representativas da nuvem nativa incluem contêineres, service mesh, microsserviços, infraestrutura imutável e API declarativa. Essas técnicas permitem a construção de sistemas fracamente acoplados que são tolerantes a falhas, fáceis de gerenciar e fáceis de observar.
Combinadas com automação confiável, as tecnologias nativas da nuvem facilitam aos engenheiros a realização de grandes alterações frequentes e previsíveis nos sistemas.
2. Características técnicas
2.1 Arquitetura de microsserviços:
O nativo da nuvem defende o uso da arquitetura de microsserviços para construir aplicativos, dividindo os aplicativos em vários serviços pequenos, independentes e implementáveis de forma independente, cada um focado na solução de funções de negócios específicas. Isso melhora a escalabilidade, flexibilidade e capacidade de manutenção do aplicativo.
2.2 Implantação em contêiner:
Os aplicativos nativos da nuvem são normalmente implantados usando tecnologia de contêiner, como o Docker, que permite a implantação multiplataforma, portátil e consistente, empacotando o aplicativo e suas dependências em imagens de contêiner. A conteinerização também oferece vantagens de isolamento e utilização de recursos, permitindo que os aplicativos sejam executados com mais eficiência.
2.3 Orquestração dinâmica e gerenciamento automatizado:
A natização da nuvem enfatiza o uso de ferramentas e plataformas automatizadas (como Kubernetes) para orquestrar e gerenciar aplicativos dinamicamente, gerenciar automaticamente operações como implantação de contêineres, escalonamento, atualizações e monitoramento, melhorar a flexibilidade e confiabilidade dos aplicativos e reduzir a complexidade operacional. .
2.4 Escala elástica:
O nativo da nuvem permite que os aplicativos sejam dimensionados de forma elástica de acordo com as condições de carga. Por meio da orquestração automatizada de contêineres e da descoberta de serviços, as instâncias de contêiner podem ser adicionadas ou removidas dinamicamente para se adaptarem a diferentes mudanças de carga e melhorar o desempenho do aplicativo e a utilização de recursos.
2.5 Entrega e implantação contínuas:
A natização da nuvem defende o uso de métodos de integração contínua e entrega contínua (CI/CD) para obter entrega e implantação rápidas de aplicativos. Por meio de processos automatizados de construção, teste e implantação, as atualizações de aplicativos podem ser enviadas de forma rápida e confiável para o ambiente de produção. risco e custo de tempo de publicação.
Três pilhas de tecnologia
3.1 Conteinerização
Mecanismo de contêiner: Docker, por exemplo, é um mecanismo de contêiner de aplicativo de código aberto que empacota aplicativos e suas dependências em imagens de contêiner padronizadas. As imagens de contêiner podem ser executadas em qualquer ambiente compatível com Docker, garantindo a consistência do aplicativo em ambientes de desenvolvimento, teste e produção.
Tempo de execução do contêiner: como containerd ou runc, é responsável pelo gerenciamento do ciclo de vida do contêiner, incluindo criação, início, parada, exclusão e outras operações do contêiner, bem como interação com os recursos do host.
Orquestração de contêineres: Kubernetes (K8s), por exemplo, é atualmente a plataforma de orquestração de contêineres mais popular. Ele fornece um poderoso conjunto de APIs e conjuntos de ferramentas para implantação automatizada de contêineres, agendamento, expansão e contração, balanceamento de carga, atualizações contínuas e autocorreção. , descoberta de serviço, gerenciamento de configuração e outras operações.
3.2 Arquitetura de microsserviços
Microsserviços: decomponha um grande aplicativo monolítico em um conjunto de serviços pequenos e independentes. Cada serviço se concentra em uma única função de negócios e interage por meio de APIs. Os microsserviços colaboram entre si por meio de mecanismos de comunicação leves (como API RESTful, gRPC, etc.), o que ajuda a aumentar a velocidade de desenvolvimento, reduzir o acoplamento e melhorar a escalabilidade e a tolerância a falhas do sistema.
3.3 Comunicação entre serviços
API RESTful: Baseada no protocolo HTTP e seus diversos métodos (GET, POST, PUT, DELETE, etc.), a interface é projetada em um estilo arquitetural orientado a recursos e é amplamente utilizada em interações entre microsserviços.
gRPC: Uma estrutura RPC (Remote Procedure Call) de alto desempenho e uso geral desenvolvida pelo Google, baseada no protocolo HTTP/2 e no protocolo de serialização de Protocol Buffers, e é adequada para cenários com requisitos de alto desempenho e eficiência.
fila de mensagens: Como RabbitMQ, Apache Kafka, Amazon SQS, etc., como middleware de comunicação assíncrona, usado para desacoplar serviços, lidar com picos de carga e implementar arquitetura orientada a eventos.
3.4 Malha de serviço
Tecnologia de malha de serviço: Como Istio, Linkerd, Envoy, etc., estão localizados entre serviços. Como uma camada de infraestrutura transparente, são responsáveis pela comunicação de rede, roteamento, segurança, observabilidade e outras funções entre serviços. Uma malha de serviço abstrai a complexidade da comunicação entre serviços, eliminando a necessidade dos desenvolvedores implementarem essas funções no código da aplicação.
3.5 Integração contínua e implantação contínua (CI/CD)
Ferramentas CI/CD: Como Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, etc., usados para automatizar o processo de construção, teste, empacotamento, lançamento e implantação de desenvolvimento de software. As práticas de CI/CD ajudam a encurtar os ciclos de iteração, melhorar a qualidade do software e reduzir erros causados por intervenção manual.
3.6 Infraestrutura Declarativa
Configuração declarativa: Use arquivos de configuração no formato YAML ou JSON para descrever o estado de destino da implantação do aplicativo, como os manifestos YAML do Kubernetes. Os desenvolvedores só precisam definir o estado desejado e o sistema tratará automaticamente de como atingir esse estado.
Ferramentas de gerenciamento de infraestrutura como código (IaC): Como Terraform, CloudFormation, etc., usados para gerenciamento de infraestrutura em plataformas de nuvem para obter controle de versão, implantação automatizada e gerenciamento de consistência de infraestrutura.
3.7 Cadeia de ferramentas DevOps
Agregação de registros: Como ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, etc., usado para coletar, analisar, armazenar, pesquisar, analisar e visualizar dados de log.
monitor: Como Prometheus, Grafana, New Relic, Dynatrace, etc., fornecem monitoramento de desempenho de sistemas e aplicativos.
Rastreamento de erro: Como Sentry, Bugsnag, Rollbar, etc., usados para capturar, analisar e gerenciar exceções e erros durante o tempo de execução do aplicativo.
Engenharia do Caos: Como Chaos Monkey, Chaos Toolkit, etc., introduzindo proativamente falhas no ambiente de produção para testar o desempenho do sistema e as capacidades de recuperação sob condições anormais.
3.8 Computação sem servidor (sem servidor)
Serviço sem servidor: Como AWS Lambda, Google Cloud Functions, Azure Functions, etc., que permitem aos desenvolvedores escrever e executar trechos de código (funções) sem se preocupar com a operação e manutenção do servidor subjacente. Eles só são executados e cobrados sob demanda quando a função. é acionado.
Quatro cenários de aplicação
A tecnologia nativa da nuvem tem amplas perspectivas de aplicação em muitos campos, incluindo, entre outros:
Aplicativos de Internet em larga escala: crie aplicativos de Internet de alta disponibilidade, alto desempenho e altamente escaláveis.
Negócios financeiros: Fornece métodos de desenvolvimento e implantação de aplicativos seguros, confiáveis e eficientes para melhorar a confiabilidade e a segurança dos aplicativos de negócios financeiros.
Inteligência Artificial e Big Data: Fornece métodos de desenvolvimento e implantação de aplicativos eficientes, escaláveis e elásticos para IA e aplicativos de big data.
Internet das Coisas: processe dados massivos de sensores, obtenha implantação rápida e escalabilidade elástica e melhore a confiabilidade e a capacidade de manutenção dos aplicativos da Internet das Coisas.
Blockchain: Fornece métodos de desenvolvimento e implantação de aplicativos eficientes, escaláveis e elásticos para aplicativos blockchain.
Isso é tudo sobre nativo da nuvem, obrigado por ler!