Implante o Ruby on Rails no Oracle Cloud Infrastructure

Ruby on Rails é o Framework de Aplicativos Web dominante para a linguagem de programação Ruby. Para oferecer suporte ao desenvolvimento com o Ruby on Rails (RoR), é fornecida uma infraestrutura resiliente que implanta as instâncias de rede, VMs e banco de dados MySQL necessárias, além da implantação de scripts do Ruby on Rails e dependências associadas.

Você encontra o Terraform para essa arquitetura implantável, oci-arch-ruby-rails-build, no repositório DevRel GitHub, acessível no tópico Explorar Mais, a seguir.

Arquitetura

A arquitetura abrange uma VCN com várias sub-redes para permitir o isolamento de diferentes serviços. Como resultado, o acesso público se dá por meio de um balanceador de carga ativo/stand-by. Uma sub-rede pública adicional fornece um Bastion que suporta o uso de SSH para acessar os serviços de backend.

O Balanceador de Carga prepara duas VMs (Máquinas Virtuais) de computação, cada uma hospedando um servidor Ruby on Rails. Esses servidores podem acessar um banco de dados MySQL. As VMs e o banco de dados MySQL estão em suas próprias sub-redes separadas para tratar considerações como acesso.

O diagrama a seguir ilustra essa arquitetura de referência.

Veja a seguir a descrição da ilustração deploy-ruby-rails-mds-arch.png
Descrição da ilustração deploy-ruby-rails-mds-arch.png

implementação-ruby-rails-mds-arch-oracle.zip

Esta arquitetura inclui os seguintes componentes:
  • Locação

    Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você acessa o Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud na sua tenancy.

    Uma tenancy é sinônima de uma empresa ou organização. Normalmente, uma empresa terá uma única tenancy e refletirá sua estrutura organizacional nessa tenancy. Uma única tenancy geralmente está associada a uma única assinatura, e uma única assinatura geralmente só tem uma tenancy.

  • 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 até mesmo continentes).

  • Compartimento

    Os compartimentos são partições lógicas entre regiões dentro de uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.

  • Domínios de disponibilidade

    Os domínios de disponibilidade são data centers independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos dos outros domínios de disponibilidade, que fornecem 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 provavelmente não 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 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 personalizada e definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes de data center tradicionais, as VCNs dão a você controle total sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, que podem ter escopo em uma região ou em um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobreem 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.

  • 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.

    O balanceador de carga fornece acesso a diferentes aplicativos.

  • 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.

  • Gateway NAT

    O gateway NAT permite que recursos privados em uma VCN acessem hosts na internet, sem expor esses recursos a conexões de Internet de entrada.

  • 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 passa pela malha da rede Oracle e nunca passa pela internet.

  • Serviço MySQL Database

    O Oracle MySQL Database Service é um serviço de banco de dados OCI (Oracle Cloud Infrastructure) totalmente gerenciado que permite aos desenvolvedores criar e implantar rapidamente aplicativos nativos na nuvem e seguros. Otimizado e exclusivamente disponível na OCI, o Oracle MySQL Database Service é 100% criado, gerenciado e suportado pelas equipes de engenharia da OCI e MySQL.

    O Oracle MySQL Database Service tem um mecanismo de análise integrado de alto desempenho (HeatWave) para executar análises sofisticadas em tempo real diretamente em um banco de dados MySQL operacional.

  • Serviço Bastion

    O Oracle Cloud Infrastructure Bastion fornece acesso seguro restrito e por tempo limitado a recursos que não têm pontos finais públicos e que requerem controles rigorosos de acesso a 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 acesso SSH (Secure Shell Protocol). Com o serviço Oracle Cloud Infrastructure Bastion, você pode ativar o acesso a hosts privados sem implantar e manter um jump host. Além disso, você obtém uma postura de segurança melhorada com permissões baseadas em identidade e uma sessão SSH centralizada, auditada e limitada a tempo. O Oracle Cloud Infrastructure Bastion elimina a necessidade de um IP público para acesso ao bastion, eliminando a confusão e a potencial superfície de ataque ao fornecer acesso remoto.

Recomendações

Use as recomendações a seguir como ponto de partida ao implantar o Ruby on Rails no OCI. Seus requisitos podem ser diferentes.

  • Segurança

    Use o Oracle Cloud Guard para monitorar e manter a segurança de seus recursos no OCI de forma proativa. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos em busca de pontos fracos de segurança e para monitorar operadores e usuários em busca de atividades arriscadas. Quando qualquer configuração incorreta ou atividade insegura é detectada, o Cloud Guard recomenda ações corretivas e ajuda a executar essas ações, com base nas receitas do respondedor que você pode definir.

    Para recursos que exigem segurança máxima, a Oracle recomenda o uso de zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança baseadas nas melhores práticas. Por exemplo, os recursos em uma zona de segurança não devem ser acessíveis por meio da internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você criar e atualizar recursos em uma zona de segurança, o OCI validará as operações de acordo com as políticas na receita de zona de segurança e negará as operações que violarem qualquer uma das políticas.

    Se o aplicativo for implementado de modo que ele exponha conteúdo dinâmico ou permita que os clientes submetam dados por meio de APIs, recomendamos adotar um Gateway de API, pois isso fornece os meios para gerenciar a interação com as APIs por meio do uso de políticas de API.

  • Cloud Guard

    Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do 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, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.

    Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.

    Você também pode usar Listas Gerenciadas para aplicar determinadas configurações a detectores.

  • Zonas de segurança

    Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do 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, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.

    Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.

    Você também pode usar Listas Gerenciadas para aplicar determinadas configurações a detectores.

  • Grupos de segurança de rede (NSGs)

    Você pode usar NSGs para definir um conjunto de regras de entrada e saída que se aplicam a VNICs específicas. Recomendamos o uso de NSGs em vez de listas de segurança porque os NSGs permitem que você separe a arquitetura da sub-rede da VCN dos requisitos de segurança do seu aplicativo.

    Você pode usar NSGs para definir um conjunto de regras de entrada e saída que se aplicam a VNICs específicas. Recomendamos o uso de NSGs em vez de listas de segurança, porque os NSGs permitem que você separe a arquitetura da sub-rede da VCN dos requisitos de segurança do seu aplicativo.

  • Largura de banda do balanceador de carga

    Ao criar o balanceador de carga, você pode selecionar uma forma predefinida que forneça uma largura de banda fixa ou especificar uma forma personalizada (flexível) na qual você define uma faixa de largura de banda e permite 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 configuração a qualquer momento após criar o balanceador de carga.

Considerações

Considere os pontos a seguir ao implantar essa arquitetura de referência.
  • Desempenho

    O uso dessa RA como ponto de partida significa que o desempenho será influenciado pelo número de nós de VM e pelo tipo de VM selecionado para cada nó. O Terraform oferece suporte à personalização desses serviços para usar diferentes servidores de especificação e o número de nós.

    Ganhos de desempenho adicionais podem ser feitos executando Ruby e Rails usando GraalVM

  • Segurança

    A configuração básica não leva em conta qualquer autenticação e autorização de aplicativo nem suporte a API. No nível da rede, o acesso e o roteamento precisam ser ajustados para identificar se o serviço Ruby é para uso interno ou externo. Com o uso externo, o ambiente também deve ser estendido para incluir o uso de um Firewall de Aplicativo Web e o Cloud Guard.

  • Disponibilidade

    A disponibilidade pode ser estendida distribuindo nós em mais Zonas de Disponibilidade e, potencialmente, para os níveis de disponibilidade mais críticos entre as regiões.

    A disponibilidade não é apenas um fator da existência de nós de computação, mas também a segurança para que apenas o tráfego legítimo possa interagir com os aplicativos implantados. Isso pode ser tratado por meio das recomendações de segurança.

  • Custo

    A segurança também pode ajudar no gerenciamento de custos, limitando a quantidade de computação necessária às solicitações de serviço. Isso se resume ao fato de que impedir que tráfego acidental ou malicioso acesse os servidores no WAF ou API Gateway reduz o volume de carga de trabalho potencial gerado.

Explorar Mais

Para saber mais sobre como implantar o Ruby on Rails no OCI, consulte os seguintes recursos:

Revise estes recursos adicionais:

Confirmações

  • Authors: Hassan Ajan, Phil Wilkins
  • Contributors: Chiping Hwang, Luke Feldman