Implante o Spring Boot Framework no Oracle Cloud Infrastructure com o MySQL Database Service
Configure uma topologia para várias camadas na nuvem que inclua a estrutura de Inicialização Spring para implantar um aplicativo altamente disponível que use um banco de dados MySQL.
A Spring Boot é uma estrutura baseada em Java de código aberto que pode ser usada para criar aplicações de nível de produção. A Spring Boot simplifica a implementação de aplicativos com configuração e personalização mínimas e inclui bibliotecas de terceiros para agilizar o processo.
Arquitetura
Essa arquitetura de referência multicamadas inclui os recursos de infraestrutura e a estrutura Spring Boot usada para implantar aplicativos altamente disponíveis no Oracle Cloud Infrastructure.
A arquitetura implanta um balanceador de carga, um bastion host, três VMs (máquinas virtuais) em que o aplicativo está instalado e o Oracle MySQL Database Service.
A arquitetura inclui dois compartimentos, ambos com o Cloud Guard ativado para fornecer segurança máxima baseada nas melhores práticas de segurança da Oracle. Além disso, o compartimento no qual o Oracle MySQL Database Service está implantado é um compartimento de zona de segurança.
Os componentes estão localizados em sub-redes e domínios de falha diferentes para fornecer alta disponibilidade. O Oracle MySQL Database Service só é acessado por meio do bastion host e as VMs dos aplicativos são acessadas por meio do balanceador de carga.
O diagrama a seguir ilustra essa arquitetura.
springboot-mysql-oci-oracle.zip
A arquitetura tem os seguintes componentes:
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominados 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 mesmo continentes).
- Domínios de disponibilidade
Os domínios de disponibilidade são data centers independentes 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 fornece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou resfriamento ou a rede interna de domínios de disponibilidade. Portanto, uma falha em um domínio de disponibilidade provavelmente não afetará os outros domínios de disponibilidade na região.
- Domínios de falha
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 falhas físicas do servidor, manutenção do sistema e falhas de alimentação 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 de data center tradicionais, as VCNs permitem controle total sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você poderá alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, que podem ter como escopo uma região ou um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não são sobrepostos com as 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.
- Listas 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 devem ser permitidos dentro e fora da sub-rede.
- Bastion
Escolha entre as opções bastion host e Oracle Cloud Infrastructure Bastion:
-
O bastion host é uma instância de computação que serve como um ponto de entrada seguro e controlado para a topologia de fora da nuvem. O bastion host é provisionado tipicamente em uma zona desmilitarizada (DMZ). Ele permite que você proteja recursos confidenciais colocando-os em redes privadas que não podem ser acessadas diretamente de fora da nuvem. A topologia tem um único ponto de entrada conhecido que você pode monitorar e auditar regularmente. Portanto, você pode evitar a exposição dos componentes mais confidenciais da topologia sem comprometer o acesso a eles.
-
O Oracle Cloud Infrastructure Bastion fornece acesso seguro restrito e limitado por tempo a recursos que não têm pontos finais públicos e que exigem controles de acesso rigorosos de recursos, como bare metal e máquinas virtuais, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) e qualquer outro recurso que permita o acesso SSH (Secure Shell Protocol). Com o serviço Bastion do Oracle Cloud Infrastructure, você pode ativar o acesso a hosts privados sem implantar e manter um host jump. Além disso, você obtém uma postura de segurança aprimorada com permissões baseadas em identidade e uma sessão SSH centralizada, auditada e limitada por tempo. O Oracle Cloud Infrastructure Bastion elimina a necessidade de um IP público para acesso de bastion, eliminando o hassle e a superfície de ataque potencial ao fornecer acesso remoto.
-
- 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.
- Cloud Guard
Você pode usar o Oracle Cloud Guard para monitorar e manter a segurança dos seus recursos no Oracle Cloud Infrastructure. O Cloud Guard usa as receitas de detector que você pode definir para examinar seus recursos quanto a pontos fracos na segurança e para monitorar operadores e usuários em atividades arriscadas. Quando qualquer atividade de configuração incorreta ou insegura é detectada, o Cloud Guard recomenda ações corretivas e auxilia na realização dessas ações, com base nas receitas do respondente que você pode definir.
- Zona de segurança
As zonas de segurança garantem o início das melhores práticas de segurança da Oracle reforçando políticas, como criptografar dados e impedir o acesso público a redes de todo um compartimento. Uma zona de segurança está associada a um compartimento com o mesmo nome e inclui políticas de zona de segurança ou uma "recipe" que se aplica ao compartimento e seus subcompartimentos. Não é possível adicionar ou mover um compartimento padrão para um compartimento de zona de segurança.
- LPG (Local Peering Gateway)
Um LPG permite que você pare uma VCN com outra VCN na mesma região. Pareamento significa que as VCNs se comunicam usando endereços IP privados, sem o tráfego que passa a internet ou que o roteamento por meio da sua rede local.
- Banco de Dados
Essa arquitetura usa o MySQL Database Service, que é executado em uma VM de formato E.
Recomendações
Os requisitos podem diferir da arquitetura descrita aqui. Use as recomendações a seguir como ponto de partida.
- Cloud Guard
Clone e personalize as receitas padrão fornecidas pela Oracle para criar detector personalizado e receitas de respondedor. Essas receitas permitem especificar que tipo de violações de segurança geram um aviso e quais ações podem ser executadas nelas. Por exemplo, um bucket do Object Storage pode ter visibilidade definida como pública.
Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir o custo administrativo de manutenção de várias configurações.
Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações aos detectores.
- Zonas de Segurança
Para recursos que exigem segurança máxima, a Oracle recomenda que você use zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança que se baseiam nas melhores práticas. Por exemplo, os recursos em uma zona de segurança não podem ser acessados pela internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Ao criar e atualizar recursos em uma zona de segurança, o Oracle Cloud Infrastructure valida as operações de acordo com as políticas na receita de zona de segurança e nega operações que violam qualquer uma das políticas.
- VCN
Quando você cria uma VCN, determine o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que você planeja anexar a sub-redes na VCN. Use blocos CIDR que estejam dentro do espaço de endereço IP privado padrão.
Selecione blocos CIDR que não se sobreponham a nenhuma outra rede (no Oracle Cloud Infrastructure, seu data center local ou outro provedor de nuvem) para a qual você pretende configurar conexões privadas.
Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.
Ao projetar as sub-redes, considere seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou função específica à mesma sub-rede, que pode servir como limite de segurança.
Use sub-redes regionais.
- Listas de segurança
Use listas de segurança para definir regras de entrada e saída que se aplicam à sub-rede inteira.
- Máquina virtual
As VMs são distribuídas em vários domínios de falha para alta disponibilidade. Use VM.Standard.E3.Flex, OCPU de quatro núcleos, memória de 64-GB e largura de banda de rede de 4-Gbps (Oracle Linux 7).
- Bastion host
Use a forma VM.Standard.E3.Flex com 1 OCPU e 2 Gig de RAM. Como alternativa, use o serviço Bastion do Oracle Cloud Infrastructure.
- Balanceador de carga
Os balanceadores de carga distribuem o tráfego de entrada para as VMs dos aplicativos. Quando você cria o balanceador de carga, pode selecionar uma forma predefinida que forneça uma largura de banda fixa ou especificar uma forma personalizada (flexível) na qual você defina um intervalo de largura de banda e permita que o serviço dimensione a largura de banda automaticamente com base nos padrões de tráfego. Com qualquer uma das abordagens, você pode alterar a forma a qualquer momento após criar o balanceador de carga.
- Serviço Database
Use VM.Standard.E2.8, que fornece CPU e memória suficientes para o aplicativo.
Considerações
- Escalabilidade
Você pode dimensionar os servidores de aplicativos verticalmente alterando a forma das instâncias de computação. Uma forma com uma contagem de núcleos mais alta fornece mais memória e largura de banda da rede. Se você precisar de mais armazenamento, aumente o tamanho dos volumes em blocos anexados ao servidor de aplicativos.
- Disponibilidade
Os domínios de falha fornecem a melhor resiliência para cargas de trabalho implantadas em um único domínio de disponibilidade. Para alta disponibilidade na camada de aplicativos, implante mais servidores de aplicativos conforme necessário.
- Custo
Na camada do aplicativo, selecione a forma de computação com base nos núcleos, na memória e na largura de banda da rede necessários ao seu aplicativo. Você pode começar com uma forma de quatro núcleos para o servidor de aplicativos. Se precisar de mais desempenho, memória ou largura de banda de rede, você poderá alterar para uma forma maior.
- Backups
O Oracle Cloud Infrastructure faz backup automático do banco de dados MySQL. O bucket do Oracle Cloud Infrastructure Object Storage que você cria armazena backups manuais e os retém por 60 dias.
O Oracle Cloud Infrastructure Block Volumes permite criar backups pontuais de dados em um volume em blocos. Você pode restaurar esses backups para novos volumes a qualquer momento. Você também pode usar o serviço para fazer um backup pontual e consistente em falhas de um volume de inicialização sem interrupção do aplicativo ou tempo de inatividade. Os volumes de inicialização e em blocos têm os mesmos recursos de backup.
- Segurança
Para controle de acesso, use políticas para restringir quem pode acessar seus recursos na nuvem e as ações que eles podem executar.
Para segurança de rede, as listas de segurança e os grupos de segurança de rede (NSG) usam regras de segurança para controlar o tráfego no nível do pacote. Um NSG consiste em um conjunto de regras de segurança de entrada e saída que se aplicam somente a um conjunto de VNICs de sua escolha em uma única VCN. Por exemplo, você pode optar por aplicar regras a todas as instâncias de computação que agem como servidores Web na camada Web de um aplicativo de várias camadas na sua VCN.
As regras de segurança NSG funcionam da mesma forma que as regras de lista de segurança. No entanto, para a origem ou o destino de uma regra de segurança NSG, você pode especificar um NSG em vez de um bloco CIDR. Portanto, você pode criar facilmente regras de segurança para controlar o tráfego entre dois NSGs na mesma VCN ou tráfego em um único NSG. Ao criar um sistema de banco de dados, você pode especificar um ou mais NSGs. Também é possível atualizar um sistema de banco de dados existente para usar um ou mais NSGs.
Implantar
Para implantar essa arquitetura de referência, crie os recursos necessários no Oracle Cloud Infrastructure e, em seguida, instale o Spring Boot Framework.
Alterar Log
Este log lista apenas as alterações significativas:
18 de novembro de 2021 |
|
Junho de 28, 2021 | Atualizado o destino do botão Implantar na seção Implantar. |
8 de fevereiro de 2021 |
Atualizado a seção Implantar para implantar recursos de infraestrutura usando o Terraform, clicando no botão Implantar para implantar automaticamente recursos por meio do Oracle Cloud Infrastructure Resource Manager ou fazendo download do código do Terraform e usando a interface de linha de comando do Terraform para implantar os recursos. Atualize as recomendações do balanceador de carga para incluir uma forma predefinida ou uma forma flexível em que você define um intervalo de largura de banda e deixe que o serviço escale a largura de banda automaticamente com base nos padrões de tráfego. |