Developer Control Plane
O "Developer Control Plane" é uma camada de controle destinada a desenvolvedores. Esta camada fornece as ferramentas e interfaces que os desenvolvedores usam diretamente para escrever, gerenciar e versionar o código, bem como acessar e configurar as suas aplicações. Basicamente, é o conjunto de ferramentas que os desenvolvedores utilizam para controlar o ciclo de vida do desenvolvimento do software.
IDE Um IDE é um Ambiente de Desenvolvimento Integrado que fornece uma interface para os desenvolvedores escreverem, testarem e depurarem seu código. Exemplos comuns de IDEs incluem o Visual Studio Code, IntelliJ IDEA e PyCharm. Eles geralmente incluem um editor de código, ferramentas de construção automatizadas e um depurador.
Developer Portal O Developer Portal é uma plataforma centralizada onde os desenvolvedores podem acessar recursos, documentações, APIs, e outras ferramentas necessárias para o desenvolvimento de software. Ele facilita a colaboração, fornecendo um ponto único de acesso às informações e ferramentas necessárias para os desenvolvedores.
Version Control O Version Control (Controle de Versão) é um sistema que registra as mudanças em um arquivo ou conjunto de arquivos ao longo do tempo, para que você possa lembrar versões específicas mais tarde. Git é o sistema de controle de versão mais usado atualmente. Ele permite que múltiplos desenvolvedores trabalhem no mesmo projeto simultaneamente, mantendo um histórico detalhado das alterações feitas no código.
- Aplication source code
Application Source Code refere-se ao código que compõe a aplicação ou os aplicativos desenvolvidos pela equipe de desenvolvimento. Isso inclui:
-Código de Funcionalidades: Toda a lógica da aplicação, funcionalidades específicas, interfaces de usuário, e qualquer outro código que define como a aplicação se comporta e interage com os usuários.
-Bibliotecas e Dependências: Bibliotecas externas e dependências que a aplicação utiliza.
-Testes: Scripts de testes automatizados que garantem a qualidade e a funcionalidade do aplicativo.
Esse código é geralmente versionado para permitir a colaboração entre desenvolvedores, rastrear mudanças, reverter a versões anteriores se necessário, e gerenciar o ciclo de vida do desenvolvimento da aplicação.
- Platform source code
Platform Source Code refere-se ao código que compõe a plataforma subjacente que suporta as aplicações. Isso pode incluir:
-Infraestrutura como Código (IaC): Scripts e configurações para provisionar e gerenciar a infraestrutura (por exemplo, usando Terraform, Ansible, etc.).
-Serviços Comuns: Serviços compartilhados que fornecem funcionalidades como autenticação, autorização, logging, monitoramento, etc.
-Orquestração e Automação: Scripts e ferramentas que automatizam o desenvolvimento, implantação e operações (por exemplo, pipelines de CI/CD, scripts de deploy, etc.).
-Componentes da Plataforma: Qualquer outro código que define como a plataforma subjacente funciona e é gerenciada.
Esse código é versionado para garantir que a plataforma seja consistente, replicável e possa ser mantida e atualizada de maneira coordenada.
Integration and Delivery Plane
O Integration and Delivery Plane (Plano de Integração e Entrega) é uma camada que engloba ferramentas e processos para integrar, testar e entregar software de maneira contínua. Esta camada foca na automação dos processos de integração, testes, construção de artefatos e implantação em ambientes de produção.
CI Pipeline O CI Pipeline refere-se ao conjunto de processos automatizados que são usados para integrar mudanças de código de todos os desenvolvedores de forma contínua. Os principais elementos incluem:
-Build Automation: Compilação automática do código fonte quando novas mudanças são submetidas.
-Automated Testing: Execução de testes automatizados para garantir que as mudanças não introduzam novos erros.
-Code Quality Checks: Análise de qualidade do código e verificação de conformidade com padrões de codificação.
-Artifact Creation: Criação de artefatos de construção (por exemplo, pacotes de software) que podem ser implantados em ambientes de teste ou produção.
Image Registry
O Image Registry é um repositório centralizado onde as imagens de containers são armazenadas e gerenciadas. Imagens de containers são snapshots de uma aplicação e seus componentes (como bibliotecas, dependências e configurações) que podem ser executadas em qualquer ambiente que suporte containers (por exemplo, Docker, Kubernetes). Os principais aspectos incluem:
-Storage: Armazenamento seguro e eficiente de imagens de containers.
-Versioning: Controle de versões para gerenciar diferentes versões de imagens de containers.
-Distribution: Facilitar a distribuição de imagens para diferentes ambientes (desenvolvimento, teste, produção).
-Security: Verificação de segurança e escaneamento de vulnerabilidades nas imagens.
Platform Orchestrator Platform Orchestrator é uma ferramenta ou conjunto de ferramentas que gerencia a coordenação de recursos e serviços em uma plataforma de maneira automatizada. Ele facilita a implantação, escalonamento e gerenciamento das aplicações e dos serviços de infraestrutura, garantindo que todas as partes da plataforma funcionem harmoniosamente.
Principais funcionalidades:
-Automatização de Tarefas: Automatiza tarefas repetitivas e complexas, como a implantação de aplicações e a escalabilidade de serviços.
-Gestão de Recursos: Garante que os recursos (CPU, memória, armazenamento) sejam alocados de maneira eficiente.
-Escalabilidade: Permite o escalonamento automático de serviços conforme a demanda aumenta ou diminui.
-Orquestração de Containers: Em ambientes de containers, como Kubernetes, gerencia a distribuição e o estado dos containers.
CD Pipiline
CD Pipeline refere-se ao conjunto de processos e ferramentas que automatizam a entrega contínua do software. Isso envolve a preparação do software para ser liberado em produção, garantindo que todas as mudanças de código passem por testes rigorosos e processos de validação antes da implantação.
Principais funcionalidades:
-Automatização de Deployments: Automatiza a implantação de novas versões do software em ambientes de produção ou pré-produção.
-Testes Automatizados: Inclui testes de integração, testes de aceitação e outros tipos de testes para garantir a qualidade do software.
-Aprovações Manuais: Possui gates de aprovação manual, se necessário, antes de promover o software para o próximo estágio.
-Rollback Automático: Implementa mecanismos para reverter implantações que falham, garantindo a estabilidade do ambiente de produção.
Infrastructure Control Plane
Infrastructure Control Plane é a camada responsável pelo gerenciamento e controle da infraestrutura subjacente. Ela proporciona visibilidade, controle e automação sobre os recursos de infraestrutura que suportam as aplicações.
Principais funcionalidades:
-Gerenciamento de Infraestrutura: Permite a definição, configuração e gerenciamento de recursos de infraestrutura, como servidores, redes, e armazenamento.
-Provisionamento Automatizado: Automatiza o provisionamento de recursos conforme necessário, utilizando ferramentas de infraestrutura como código (IaC).
-Monitoramento e Alertas: Oferece monitoramento contínuo dos recursos de infraestrutura e configura alertas para quaisquer problemas ou anomalias detectadas.
-Escalabilidade e Resiliência: Garante que a infraestrutura seja escalável e resiliente, adaptando-se às mudanças na demanda e garantindo a continuidade do serviço.
Monitoring and Logging Plane
O Monitoring and Logging Plane(plano de monitoramento e registro) é fundamental para garantir que os sistemas e aplicativos estejam funcionando de maneira eficaz e eficiente. O objetivo principal é coletar e analisar métricas de desempenho, disponibilidade e integridade. Essas métricas incluem dados quantitativos, como uso de CPU, memória, latência de rede, taxa de erros e outras estatísticas que ajudam a entender o comportamento e o estado dos sistemas.
Observability Observability é um conceito mais amplo que se refere à capacidade de entender o estado interno de um sistema examinando suas saídas. Ela abrange não apenas monitoramento e registro, mas também rastreamento e outros métodos de coleta de dados para dar uma imagem completa do que está acontecendo dentro de um sistema. A observabilidade é essencial para identificar e diagnosticar problemas, entender o comportamento do sistema e garantir a saúde geral do sistema. Os três pilares da observabilidade são:
- Métricas: Dados quantitativos que medem vários aspectos do desempenho do sistema, como uso da CPU, consumo de memória, taxas de solicitação e taxas de erro.
- Logs: Registros detalhados e com registro de data e hora de eventos que acontecem dentro de um sistema. Os logs fornecem contexto e insights sobre ações e comportamentos específicos do sistema.
- Rastros: Rastros distribuídos rastreiam o fluxo de solicitações por meio de diferentes componentes de um sistema, mostrando o caminho e o desempenho de transações individuais em microsserviços.
Analytics Analytics no plano de monitoramento e registro envolve extrair insights acionáveis dos dados coletados para melhorar o desempenho do sistema, a confiabilidade e a experiência geral do usuário.
Security Plane
O Security Plane se refere aos componentes e processos dedicados a manter a segurança da infraestrutura. Ele abrange uma variedade de funções, ferramentas e protocolos projetados para proteger dados, garantir privacidade e manter a integridade e disponibilidade dos serviços. Aqui está uma análise do que o Security Plane normalmente envolve:
Identity and Access Management (IAM)
- Autenticação: Verificar a identidade de usuários e dispositivos.
- Autorização: Determinar o que usuários e dispositivos autenticados têm permissão para fazer.
- Gerenciamento de usuários: Lidar com contas de usuários, funções e permissões.
Sem contar que existe várias outras análises como: Network Security,Data Security, Application Security, Endpoint Security, Security Information and Event Management (SIEM) e Governance, Risk, and Compliance (GRC).
Secrets Management O Secrets Management é um aspecto crucial do Security Plane que foca no manuseio seguro de dados sensíveis, como senhas, chaves de API, chaves de criptografia, certificados e outras credenciais. O gerenciamento eficaz de segredos garante que essas informações sensíveis sejam armazenadas, transmitidas e acessadas com segurança, minimizando o risco de acesso não autorizado e violações de dados.
Security O conceito de Security está ligado à proteção, como a segurança da infraestrutura, de ativos e de pessoas. Dessa forma, um centro de distribuição, por exemplo, contrata uma empresa de segurança para proteger o local contra ações criminosas intencionais, como roubo, vandalismo e invasão.
Resource Plane
O Resource Plane se refere à camada responsável por gerenciar e otimizar a alocação e utilização de recursos em todo o sistema. Ele desempenha um papel crucial em garantir a operação e o desempenho eficientes de aplicativos e serviços, alocando recursos dinamicamente com base na demanda e nos requisitos de carga de trabalho.
Compute - Cluster Management Gerenciamento de cluster em computação se refere ao processo de gerenciamento eficiente de um cluster de computadores ou servidores interconectados como um único sistema. Clusters são comumente usados em vários ambientes de computação, incluindo data centers, computação em nuvem, computação de alto desempenho (HPC) e sistemas distribuídos.
Data Dados se refere a fatos, números ou informações brutas, normalmente em um formato estruturado, que são coletados, armazenados e processados por computadores. Os dados podem ser quantitativos ou qualitativos e são fundamentais para vários campos, incluindo ciência, negócios, tecnologia e vida cotidiana.
Networking Networking refere-se à prática de conectar dispositivos de computação, sistemas e equipamentos para permitir a comunicação e o compartilhamento de recursos. Ele abrange os componentes de hardware e software necessários para que os dispositivos se comuniquem entre si e acessem recursos compartilhados, como dados, aplicativos e serviços.
Services
- Messaging
- RabbitMq: O RabbitMQ é um software de mensagens com código aberto, que implementou o protocolo "Advanced Message Queuing Protocol", que foi estendido com uma arquitetura de plug-in para suportar o protocolo "Streaming Text Oriented Messaging Protocol", o MQTT entre outros protocolos.
- ActivMQ: Apache ActiveMQ é um message broker de código-fonte aberto escrito em Java, juntamente com um cliente completo de Java Message Service. Ele fornece "recursos empresariais", ou seja, promove a comunicação de mais de um cliente ou servidor.