1. Introdução ao CNCF
CNCF: O nome completo da Cloud Native Computing Foundation (Cloud Native Computing Foundation), criada em 11 de dezembro de 2015, é uma fundação de software de código aberto dedicada à popularização e desenvolvimento sustentável da tecnologia Cloud Native.
A intenção ou visão original do estabelecimento da organização CNCF, simplesmente colocada:
- Promover o desenvolvimento sustentável da computação nativa em nuvem;
- Ajude os desenvolvedores de tecnologia nativa da nuvem a criar excelentes produtos rapidamente:
2. Roteiro do CNCF Paisagístico
As saídas mais importantes do CNCF Landscape incluem um roteiro e um panorama. O Trail Map é o processo de recomendação do CNCF para usuários nativos da nuvem usarem projetos de código aberto e tecnologias nativas da nuvem. Em cada etapa do roteiro, os usuários podem escolher produtos suportados pelo fornecedor ou desenvolver seus próprios projetos de código aberto.
Todo o roteiro é dividido em dez etapas, e cada etapa é uma questão que os usuários ou desenvolvedores de plataformas precisam pensar e lidar passo a passo ao implementar a tecnologia nativa da nuvem no ambiente real:
- conteinerizado . A tecnologia de conteinerização mais popular no momento é o Docker, e você pode conteinerizar aplicativos e dependências de qualquer tamanho, até mesmo alguns programas executados em emuladores. Você também pode particionar o aplicativo ao longo do tempo e escrever funcionalidades futuras como microsserviços.
- CI/CD (Integração Contínua e Liberação Contínua) . Crie um ambiente de CI/CD, para que qualquer modificação no código-fonte possa ser compilada automaticamente, testada por meio do contêiner e implantada no ambiente de pré-produção ou mesmo de produção.
- Orquestração de Aplicativos (Kubernetes) . Atualmente, o Kubernetes é a ferramenta mais usada no campo de orquestração de aplicativos no mercado. Os Helm Charts podem ser usados para ajudar desenvolvedores e editores de aplicativos a atualizar aplicativos executados no Kubernetes.
- Monitoramento e Análise . Nesta etapa, os usuários precisam selecionar ferramentas relacionadas a monitoramento, registro e rastreamento para a plataforma, como o uso do Prometheus para monitoramento, Fluentd para registro e Jaeger para rastrear toda a cadeia de chamadas do aplicativo.
- Intermediação, descoberta e governança de serviços . CoreDNS, Envoy e LINKERD podem ser usados para descoberta de serviço e governança de serviço, respectivamente, fornecendo funções como verificação de integridade do serviço, roteamento de solicitação e balanceamento de carga.
- rede . Softwares como Calico, Flannel e Weave Net são usados para fornecer funções de rede mais flexíveis.
- Banco de dados e armazenamento distribuídos . Bancos de dados distribuídos podem fornecer melhor elasticidade e escalabilidade, mas ao mesmo tempo exigem armazenamento de contêiner profissional para suportá-los.
- Stream e processamento de mensagens . Quando o aplicativo requer desempenho superior ao modo JSON-REST, você pode considerar o uso de gRPC ou NATS. gRPC é uma estrutura RPC (chamada remota) geral (semelhante a chamadas RPC em várias estruturas) e NATS é um sistema de fila de mensagens de publicação/assinatura e balanceamento de carga.
- Biblioteca de imagens de contêiner e ambiente de tempo de execução . Harbour é atualmente a biblioteca de imagens de contêiner mais popular. Ao mesmo tempo, você também pode optar por usar diferentes ambientes de tempo de execução de contêiner para executar programas de contêiner.
- Lançamento de software . Por fim, softwares como o Notary podem ser usados para liberação segura de software.
3. Panorama CNCF (Paisagem)
O roteiro do CNCF Landscape ajuda os usuários a classificar o melhor processo de todo o aplicativo nativo da nuvem a partir das etapas práticas. No entanto, em todos os elos de todo o processo de prática, os usuários precisam saber quais softwares específicos e opções de produtos estão disponíveis.É aqui que entra o panorama CNCF Landscape (https://landscape.cncf.io/).
Este panorama tenta permitir que os usuários entendam a visão geral do sistema nativo da nuvem a partir da perspectiva da hierarquia nativa da nuvem e de diferentes componentes funcionais, e ajuda os usuários a escolher software e ferramentas apropriados para suporte em diferentes níveis de componentes.
4. Introdução ao Cloud Native
Nativo da nuvem (nuvem nativo) é uma ideia de arquitetura de software baseada na nuvem , e uma nuvem distribuída baseada em implantação distribuída e operação e gerenciamento unificados, e um conjunto de tecnologias de nuvem baseadas em contêiner, microsserviço, DevOps e outras tecnologias Sistema de produto.
- Literalmente, o nativo da nuvem pode ser dividido em duas partes : nuvem e nativo .
- A nuvem é oposta ao local. Os aplicativos tradicionais devem ser executados em servidores locais. Agora, os aplicativos populares são executados na nuvem. A nuvem inclui IaaS, PaaS e SaaS.
- Nativo significa nativo. Quando começamos a projetar aplicativos, consideramos que os aplicativos serão executados no ambiente de nuvem no futuro. Devemos aproveitar ao máximo as vantagens dos recursos da nuvem, como: a elasticidade e as vantagens distribuídas dos serviços em nuvem.
Como desenvolver um programa adequado para implantação em um ambiente de nuvem? Na verdade, existem vários princípios de desenvolvimento que precisam ser seguidos:
1. Containerização (docker + k8s)
A vantagem da conteinerização é que não é mais necessário se preocupar com a pilha de tecnologia utilizada por cada serviço durante a operação e manutenção. Cada serviço é encapsulado em um container indistintamente, podendo ser gerenciado e mantido indistintamente. Agora é mais um ferramenta popular É docker e k8s.
2. Microsserviços
Os microsserviços resolvem o baixo acoplamento + alta coesão que buscamos no desenvolvimento de software, e os microsserviços correspondem ao nosso tradicional aplicativo único. Os microsserviços também recomendam o uso de APIs RESTful para comunicação.
3. Sem servidor
A arquitetura sem servidor não significa que os servidores não serão mais necessários no futuro, mas que ela não se concentrará mais na infraestrutura subjacente, e mais atenção pode ser dada a algumas implementações lógicas mais relacionadas ao negócio . Por exemplo, os fragmentos de código de algumas funções, a plataforma implanta e inicia automaticamente de acordo com a carga sob demanda e dimensiona automaticamente a lógica do código para atender às necessidades de processamento de negócios.
4, DevOps
DevOps (uma combinação de Desenvolvimento e Operações) é a integração de desenvolvimento, operação e manutenção. Envolve desenvolvimento contínuo, teste contínuo, integração contínua, implantação contínua e monitoramento contínuo de software durante todo o seu ciclo de vida de desenvolvimento.
- A definição de DevOps da Wikipédia é um pouco exagerada. De fato, para simplificá-lo, o DevOps defende um alto grau de colaboração entre desenvolvimento e operação e manutenção de TI , de modo a melhorar a confiabilidade, estabilidade, elasticidade e segurança do ambiente de produção ao concluir a implantação de alta frequência.
- De outra dimensão, em sentido amplo, o DevOps não precisa apenas romper as barreiras departamentais entre desenvolvimento e operação e manutenção, mas acreditamos que o DevOps precisa considerar todo o ciclo de vida do aplicativo para concretizar a abertura total do link e automação de ferramentas ao longo do ciclo de vida, recursos de colaboração on-line entre equipes .
5. Malha de Serviço
Service Mesh é um tema que tem surgido nos últimos anos.Baseado em microsserviços de containers, o Service Mesh permite que os usuários gerenciem a comunicação entre serviços de forma mais refinada e inteligente . O Istio, o principal projeto da comunidade Service Mesh, está ganhando popularidade rapidamente.
6. Nuvem
A nuvem é a base do cloud-native , e não existe cloud-native sem cloud. Sem um entendimento correto da nuvem, é impossível ter uma maneira correta de abrir a nuvem nativa. Para pessoal não técnico, pelo menos entenda os vários modelos de serviço da nuvem, como: IaaS, PaaS, SaaS, e os cenários de aplicação e valores de vários modelos de serviço.
V. Resumo
Não é difícil descobrir que cloud native é um conceito muito amplo. Não é difícil desenvolver uma aplicação que suporte cloud native. Pode ser uma implementação simples que pode ser implantada com base em containers, orquestrada e agendada usando Kubernetes, CI integrado /CD ferramentas e ferramentas de monitoramento Prometheus , etc.