Despliegue de Ruby en las guías de Oracle Cloud Infrastructure

Ruby en Rails es el marco de aplicaciones web dominante para el lenguaje de programación Ruby. Para soportar el desarrollo con Ruby en Rails (RoR), se proporciona una infraestructura resiliente que despliega las instancias de red, VM y base de datos MySQL necesarias junto con el despliegue de script de Ruby en Rails y las dependencias asociadas.

Puede encontrar Terraform para esta arquitectura desplegable, oci-arch-ruby-rails-build, en el repositorio DevRel GitHub, al que se puede acceder desde el tema Explorar más, a continuación.

Arquitectura

La arquitectura consta de una VCN con varias subredes para permitir el aislamiento de diferentes servicios. Como resultado, el acceso público se realiza mediante un equilibrador de carga activo/en espera. Una subred pública adicional proporciona un bastión que soporta el uso de SSH para acceder a los servicios de backend.

El equilibrador de carga hace frente a dos máquinas virtuales (VM) de cálculo con cada una Ruby en el servidor Rails. Estos servidores pueden acceder a una base de datos MySQL. Las máquinas virtuales y la base de datos MySQL están en sus propias subredes separadas para abordar consideraciones como el acceso.

En el siguiente diagrama se ilustra esta arquitectura de referencia.

A continuación, se muestra la descripción de deploy-ruby-rails-mds-arch.png
Descripción de la ilustración deploy-ruby-rails-mds-arch.png

desplegar-ruby-rails-mds-arch-oracle.zip

Esta arquitectura contiene los siguientes componentes:
  • Arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud cuando se registra para Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud en su arrendamiento.

    Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un único arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción suele tener un solo arrendamiento.

  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones y grandes distancias pueden separarlas (entre países e incluso continentes).

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • Dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten una infraestructura como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por tanto, es poco probable que un fallo en un dominio de disponibilidad afecte a los otros dominios de este tipo en la región.

  • Dominios de errores

    Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores, con hardware y energía independientes. Al distribuir recursos entre varios dominios de errores, las aplicaciones pueden tolerar fallos físicos del servidor, mantenimiento del sistema y fallos de alimentación dentro de un dominio de errores.

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red personalizable y definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de centros de datos tradicionales, las VCN le proporcionan un control total de su entorno de red. Una VCN puede tener varios bloques CIDR que no se superpongan y que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, cuyo ámbito puede ser una región o un dominio de disponibilidad. Cada subred está formada por un rango de direcciones contiguas que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • equilibrador de carga

    Oracle Cloud Infrastructure Load Balancing Service proporciona una distribución automatizada del tráfico desde un único punto de entrada a varios servidores en el backend.

    El equilibrador de carga proporciona acceso a distintas aplicaciones.

  • Lista de seguridad

    Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.

  • Gateway de NAT

    El gateway de NAT permite que los recursos privados en una VCN accedan a hosts en Internet, sin exponerlos a las conexiones de Internet entrantes.

  • Gateway de servicios

    El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico desde la VCN al servicio Oracle pasa por el tejido de red de Oracle y no internet.

  • Servicio MySQL Database

    Oracle MySQL Database Service es un servicio de base de datos Oracle Cloud Infrastructure (OCI) totalmente gestionado que permite a los desarrolladores desarrollar e implementar rápidamente aplicaciones nativas seguras en la nube. Optimizado y disponible exclusivamente en OCI, Oracle MySQL Database Service está 100% creado, gestionado y respaldado por los equipos de ingeniería de OCI y MySQL.

    Oracle MySQL Database Service cuenta con un motor de análisis integrado y de alto rendimiento (HeatWave) para ejecutar análisis sofisticados en tiempo real directamente en una base de datos MySQL operativa.

  • Servicio de bastión

    Oracle Cloud Infrastructure Bastion proporciona acceso seguro restringido y limitado en el tiempo a recursos que no tienen puntos finales públicos y que requieren estrictos controles de acceso a los recursos, como máquinas virtuales y hardware dedicado, Oracle MySQL Database Service Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) y cualquier otro recurso que permita el acceso mediante el protocolo de shell seguro (SSH). Con el servicio Oracle Cloud Infrastructure Bastion, puede permitir el acceso a hosts privados sin desplegar y mantener un host de salto. Además, obtiene una estrategia de seguridad mejorada con permisos basados en identidades y una sesión SSH centralizada, auditada y con límite de tiempo. Oracle Cloud Infrastructure Bastion elimina la necesidad de una IP pública para el acceso al bastión, lo que elimina la molestia y la posible superficie de ataque al proporcionar acceso remoto.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida al desplegar Ruby en Rails en OCI. Sus requisitos pueden variar.

  • Seguridad

    Utiliza Oracle Cloud Guard para supervisar y mantener la seguridad de tus recursos en OCI de forma proactiva. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a operadores y usuarios en busca de actividades de riesgo. Cuando se detecta cualquier configuración incorrecta o actividad insegura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que puede definir.

    Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definidas por Oracle que se basan en las mejores prácticas. Por ejemplo, los recursos de una zona de seguridad no deben ser accesibles desde Internet público y se deben cifrar con claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, OCI valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.

    Si la aplicación se implanta para que muestre contenido dinámico o permita a los clientes enviar datos a través de API, recomendamos adoptar un gateway de API, ya que proporciona los medios para gestionar la interacción con las API mediante el uso de políticas de API.

  • Cloud Guard

    Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como pública.

    Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa de mantener varias configuraciones.

    También puede utilizar las listas gestionadas para aplicar determinadas configuraciones a los detectores.

  • Zonas de seguridad

    Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como pública.

    Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa de mantener varias configuraciones.

    También puede utilizar las listas gestionadas para aplicar determinadas configuraciones a los detectores.

  • Grupos de seguridad de red (NSG)

    Puede utilizar los NSG para definir un conjunto de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de su aplicación.

    Puede utilizar los NSG para definir un conjunto de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de su aplicación.

  • ancho de banda de equilibrador de carga

    Al crear el equilibrador de carga, puede seleccionar una unidad predefinida que proporcione un ancho de banda fijo o especificar una unidad personalizada (flexible) en la que definir un rango de ancho de banda y permitir que el servicio escale el ancho de banda automáticamente en función de los patrones de tráfico. Con cualquiera de los enfoques, puede cambiar la unidad en cualquier momento después de crear el equilibrador de carga.

Consideraciones

Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.
  • Rendimiento

    El uso de este RA como punto de partida significa que el rendimiento estará influido por el número de nodos de VM y el tipo de VM seleccionado para cada nodo. Terraform no soporta la personalización de estos para utilizar diferentes servidores de especificaciones y el número de nodos.

    Se pueden obtener mejoras de rendimiento adicionales si se ejecuta Ruby y Rails con GraalVM

  • Seguridad

    La configuración básica no tiene en cuenta la autenticación y autorización de aplicaciones ni el soporte de API. En el nivel de red, se debe ajustar el acceso y el enrutamiento para determinar si el servicio Ruby es para uso interno o externo. Con el uso externo, también se debe ampliar el entorno para que incluya el uso de Web Application Firewall y se debe tener en cuenta Cloud Guard.

  • Disponibilidad

    La disponibilidad se puede ampliar mediante la distribución de nodos en más zonas de disponibilidad y potencialmente en los niveles de disponibilidad más importantes de las distintas regiones.

    La disponibilidad no solo es un factor de la existencia de nodos de cálculo, sino también de la seguridad, de modo que solo el tráfico legítimo pueda interactuar con las aplicaciones desplegadas. Esto se puede abordar mediante las recomendaciones de seguridad.

  • Costo

    La seguridad también puede ayudar con la gestión de costos al limitar la cantidad de computación necesaria para atender las solicitudes. Esto se debe a que evitar que el tráfico accidental o malicioso llegue a los servidores de WAF o API Gateway reduce la cantidad de carga de trabajo potencial generada.

Explorar más

Para obtener más información sobre el despliegue de Ruby en Rails en OCI, consulte los siguientes recursos:

Revise estos recursos adicionales:

Agradecimientos

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