Compartilhamento de tecnologia

Nativo da nuvem

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Nativo da nuvem

uma definição

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!