Takamol: Implemente Kubernetes e Microsserviços para uma Plataforma de RH do Setor Governamental no Oracle Cloud
Para ajudar a combinar cidadãos em idade de trabalho com empregadores do governo e do setor privado, a Takamol Holding, com sede em Riad, executa sua plataforma de serviços de treinamento, capacitação e desenvolvimento de talentos em uma infraestrutura híbrida, onde seu ambiente de nuvem executa vários clusters Kubernetes no OCI Kubernetes Engine (OKE).
Fundada em 2013 como uma divisão do Ministério de Recursos Humanos e Desenvolvimento Social da Arábia Saudita, a Takamol passou quase uma década modernizando os programas de recursos humanos em todo o reino.
Como a infraestrutura on-premises da Takamol se mostrou muito cara para operar e manter, a Takamol decidiu lançar suas novas plataformas de desenvolvimento econômico e de mão de obra usando uma arquitetura de microsserviços baseada em contêiner executada na Oracle Cloud Infrastructure (OCI). Hoje, centenas de milhares de pessoas usam as plataformas da Takamol diariamente, permitindo-lhes encontrar, aplicar e se preparar para um emprego remunerado. Recentemente, a Takamol migrou uma plataforma de doações, que é usada por doadores institucionais e individuais.
Na região do Oracle Cloud em Jeddah, a plataforma da Takamol suporta 5000 usuários simultâneos e processa até 10.000 solicitações por minuto. A Takamol usa os serviços gerenciados da OCI para automatizar atualizações em suas plataformas nativas da nuvem de forma rápida e sem tempo de inatividade. Em sua tenancy da OCI, a Takamol pode expandir rapidamente durante os horários de pico e reduzir em horários fora de pico, fornecendo suporte just-in-time com o menor custo possível.
Os destaques da implementação nativa da nuvem da Takamol na OCI incluem:
- Arquitetura baseada em contêiner usando o OCI Kubernetes Engine
- Dimensionamento automático de pod horizontal (HPA) para atender à alta demanda durante as horas de pico
- Acesso à rede de confiança zero
- Firewall de aplicativo web NGINX
- Para seus componentes com monitoramento de estado, a Takamol usa PostgreSQL para seu banco de dados e RabbitMQ para enfileiramento de mensagens
Arquitetura
Os engenheiros da Takamol Holding se conectam a uma ferramenta de acesso à rede de confiança zero e são autenticados por meio de seu próprio sign-on único antes de obter acesso à rede virtual na nuvem (VCN).
Os usuários da plataforma são roteados por meio do Oracle Cloud Infrastructure Load Balancing, que administra as solicitações dos usuários em três domínios de falha separados. As solicitações do usuário são enviadas ao controlador de entrada do Oracle Cloud Infrastructure Kubernetes Engine (OKE), onde são inspecionadas antes de serem roteadas para seu destino final.
No cluster do Kubernetes, a Takamol usa várias ferramentas de código aberto para processar solicitações do usuário, incluindo NGINX, um servidor proxy reverso, um balanceador de carga e um gateway de API. Esses serviços são dimensionados em todo o cluster do Kubernetes usando o dimensionamento automático de pod horizontal (HPA) para atender às altas demandas durante o horário de pico. A Takamol também usa um aplicativo de camada 7 para proteger a negação de serviço (DoS), juntamente com um aplicativo para proteger o WAF pelo F5 NGINX. A maioria dos aplicativos da Takamol são sem monitoramento de estado, seguindo o modelo de 12 fatores, para que não exijam caches ou armazenamento no aplicativo. Em vez disso, os aplicativos da Takamol usam serviços de armazenamento externo, o que os torna facilmente implantados, dimensionados automaticamente e gerenciados no cluster do Kubernetes.
A Takamol também usa o Argo CD, uma ferramenta declarativa de entrega contínua GitOps para Kubernetes. Usando o Argo CD, a Takamol pode implantar suas cargas de trabalho de forma declarativa, sem fornecer acesso direto ao cluster, o que torna possível ter seu cluster implantado em uma sub-rede privada. Em vez de desenvolvedores atualizarem aplicativos, o Argo CD lê de um repositório Gitlab para implantar novos serviços, sem fornecer acesso direto ao Gitlab para atualizar o cluster. Para seus componentes com monitoramento de estado, a Takamol usa PostgreSQL para seu banco de dados e RabbitMQ para enfileiramento de mensagens.
O balanceador de carga, o cluster do Kubernetes e as ferramentas de código-fonte aberto estão localizados em sub-redes separadas. Embora sejam isolados uns dos outros, eles podem enviar e receber informações por meio de portas de comunicação. Usando os logs de fluxo da Oracle VCN e um centro de operações de segurança (SOC) SEIM, a Takamol pode virtualizar as comunicações entre as diferentes sub-redes sem precisar instalar ferramentas adicionais. Nos próximos meses, a Takamol planeja enviar seus logs de fluxo da VCN por meio do Oracle Cloud Infrastructure Functions para entregar logs de rede à solução SEIM.
- Cerca de 90% da arquitetura da Takamol foi construída usando infraestrutura como código (IaC) do Provedor Terraform do Oracle Cloud Infrastructure de código aberto com seus próprios módulos internos. Essa abordagem reduz o esforço humano necessário para implementar e gerenciar a infraestrutura, permitindo mudanças mais rápidas com risco significativamente reduzido de erro humano.
- Todos os serviços nos ambientes de desenvolvimento, teste e pré-produção da Takamol são replicados como seu ambiente de produção. Nenhum desses ambientes está interconectado. Isso garante a consistência entre os ambientes.
- Os backups de banco de dados são feitos usando pgbackrest, que arquiva e armazena backups no Oracle Cloud Infrastructure Block Volumes. Isso permite o armazenamento de longo prazo para o banco de dados, ao mesmo tempo em que suporta a recuperação pontual (PIT).
- O Oracle Cloud Infrastructure Object Storage é usado por microsserviços, métricas, logs do OKE e executores GitLab para armazenar dados em cache. Ele também fornece backups de banco de dados econômicos e de longo prazo de seus bancos de dados PostgreSQL.
- As políticas do Oracle Cloud Infrastructure Registry e do Oracle Cloud Infrastructure Identity and Access Management ajudam a Takamol a controlar o acesso do usuário aos repositórios. Anteriormente, a empresa usava o Docker Hub, que não fornecia controle tão refinado quanto a OCI. Além disso, com o OCI Registry, a Takamol usa o recurso de verificação de segurança integrado.
- A Takamol usa o Loki, um banco de dados de séries temporais para logs, o Prometheus para coleta de métricas, o Tempo para rastreamentos e o Grafana para visualização, todos centralizados no único cluster do OKE.
O diagrama a seguir ilustra essa arquitetura de referência.
Para um futuro estado e roteiro, a Takamol está procurando migrar mais serviços para serviços gerenciados e nativos da nuvem:
- Execute um site de recuperação de desastres fora da região do Oracle Cloud no Neom.
- Aproveite a Pesquisa do Oracle Cloud Infrastructure com OpenSearch para obter um mecanismo de pesquisa de texto completo distribuído, totalmente gerenciado e livre de manutenção.
- Aproveite o Oracle Autonomous Data Warehouse para cargas de trabalho de banco de dados.
- Use o Serviço de Verificação de Vulnerabilidade do Oracle Cloud Infrastructure para verificar vulnerabilidades, particularmente em imagens do docker.
A arquitetura tem os seguintes componentes:
- Tenancy
Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você se inscreve no Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de uma empresa ou organização. Normalmente, uma empresa terá uma única locação e refletirá sua estrutura organizacional dentro dessa locação. Uma única tenancy geralmente é associada a uma única assinatura, e uma única assinatura geralmente só tem uma tenancy.
- Região
Região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou até mesmo continentes).
- Compartimento
Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar, controlar o acesso e definir metas de uso para seus recursos do Oracle Cloud. Em um determinado compartimento, você define políticas que controlam o acesso e definem privilégios para recursos.
- Domínio de disponibilidade
Domínios de disponibilidade são data centers stand-alone e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, o que oferece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou refrigeração ou a rede interna do domínio de disponibilidade. Portanto, uma falha em um domínio de disponibilidade não deve afetar os outros domínios de disponibilidade na região.
- Domínio de falha
Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com energia e hardware independentes. Quando você distribui recursos entre vários domínios de falha, seus aplicativos podem tolerar falha no servidor físico, manutenção do sistema e falhas de energia dentro de um domínio de falha.
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.
- Lista de segurança
Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego que deve ser permitido dentro e fora da sub-rede.
- Tabela de roteamento
As tabelas de roteamento virtual contêm regras para rotear o tráfego de sub-redes para destinos fora de uma VCN, geralmente por meio de gateways.
- Gateway de internet
O gateway de internet permite o tráfego entre as sub-redes públicas em uma VCN e a internet pública.
- Gateway de serviço
O gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle percorre a malha da rede Oracle e não passa pela internet.
- Balanceador de carga
O serviço Oracle Cloud Infrastructure Load Balancing fornece distribuição automatizada de tráfego de um único ponto de entrada para vários servidores no back-end.
- Kubernetes Engine
O Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos em contêineres na nuvem. Você especifica os recursos de computação necessários, e o serviço Kubernetes Engine os provisiona no Oracle Cloud Infrastructure em uma tenancy existente. O OKE usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres entre clusters de hosts.
- Computação
Com o Oracle Cloud Infrastructure Compute, você pode provisionar e gerenciar hosts de computação na nuvem. Você pode iniciar instâncias de computação com formas que atendam aos seus requisitos de recursos para CPU, memória, largura de banda de rede e armazenamento. Depois de criar uma instância de computação, você pode acessá-la com segurança, reiniciá-la, anexar e desconectar volumes e encerrá-la quando não precisar mais dela.
- Conectores de serviço
O Oracle Cloud Infrastructure Service Connector Hub é uma plataforma de barramento de mensagens da nuvem que orquestra a movimentação de dados entre serviços no OCI. Você pode usar conectores de serviço para mover dados de um serviço de origem para um serviço de destino. Os conectores de serviço também permitem que você especifique opcionalmente uma tarefa (como uma função) a ser executada nos dados antes de serem entregues ao serviço de destino.
Você pode usar o Oracle Cloud Infrastructure Service Connector Hub para criar rapidamente uma estrutura de agregação de logs para sistemas de gerenciamento de eventos e informações de segurança (SIEM).
- Registro
O Oracle Cloud Infrastructure Registry é um registro gerenciado pela Oracle que permite simplificar seu desenvolvimento para o workflow de produção. O registro facilita o armazenamento, o compartilhamento e o gerenciamento de artefatos de desenvolvimento, como imagens do Docker. A arquitetura altamente disponível e escalável do Oracle Cloud Infrastructure garante que você possa implantar e gerenciar seus aplicativos de forma confiável.
- Serviço IAM (Identity and Access Management)
O Oracle Cloud Infrastructure Identity and Access Management (IAM) é o plano de controle de acesso do Oracle Cloud Infrastructure (OCI) e do Oracle Cloud Applications. A API do serviço IAM e a interface do usuário permitem gerenciar domínios de identidades e os recursos dentro do domínio de identidades. Cada domínio de identidades do OCI IAM representa uma solução de gerenciamento de identidade e acesso independente ou uma população de usuários diferente.
- Política
Uma política do Oracle Cloud Infrastructure Identity and Access Management especifica quem pode acessar quais recursos e como. O acesso é concedido no nível de grupo e compartimento. Isso significa que você pode gravar uma política que dá a um grupo um tipo específico de acesso em um compartimento específico ou à tenancy.
- Oracle Cloud Infrastructure Vault
O Oracle Cloud Infrastructure Vault permite gerenciar centralmente as chaves de criptografia que protegem seus dados e as credenciais secretas usadas para proteger o acesso aos seus recursos na nuvem. Você pode usar o serviço Vault para criar e gerenciar vaults, chaves e segredos.
- Cloud Guard
Você pode usar o Oracle Cloud Guard para monitorar e manter a segurança de seus recursos no Oracle Cloud Infrastructure. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos quanto a pontos fracos de segurança e para monitorar operadores e usuários em relação a determinadas atividades arriscadas. Quando qualquer configuração incorreta ou atividade insegura é detectada, o Cloud Guard recomenda ações corretivas e auxilia na execução dessas ações, com base nas receitas do respondedor que você pode definir.
- LoggingO registro em log é um serviço altamente escalável e totalmente gerenciado que oferece acesso aos seguintes tipos de logs de seus recursos na nuvem:
- Logs de auditoria: Logs relacionados a eventos emitidos pelo serviço Audit.
- Logs de serviço: Logs emitidos por serviços individuais, como API Gateway, Events, Functions, Load Balancing, Object Storage e logs de fluxo da VCN.
- Logs personalizados: Logs que contêm informações de diagnóstico de aplicativos personalizados, outros provedores de nuvem ou um ambiente on-premises.
- Armazenamento de objetos
O serviço Oracle Cloud Infrastructure Object Storage oferece acesso rápido a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados de análise e conteúdo avançado, como imagens e vídeos. Você pode armazenar de forma segura e depois recuperar dados diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento sem prejudicar o desempenho ou a confiabilidade do serviço. Use o armazenamento padrão para armazenamento de acesso frequente que você precisa para acessar de forma rápida, imediata e com frequência. Use o armazenamento de arquivos compactados para armazenamento "frio" que você mantém por longos períodos de tempo e raramente acessa.
- Analytics
O Oracle Analytics Cloud é um serviço de nuvem pública escalável e seguro que capacita os analistas de negócios com recursos modernos de análise com autoatendimento para preparação de dados, visualização, relatórios empresariais, análise aumentada e geração e processamento de linguagem natural. Com o Oracle Analytics Cloud, você também obtém recursos flexíveis de gerenciamento de serviços, incluindo configuração rápida, dimensionamento e aplicação de patches fáceis e gerenciamento automatizado do ciclo de vida.