Despliegue el marco de inicio de Spring en Oracle Cloud Infrastructure con MySQL Database Service

Configure una topología de varios niveles en la nube que incluya el marco de inicio de Spring para desplegar una aplicación de alta disponibilidad que utilice una base de datos MySQL.

Spring Boot es un marco basado en Java de código abierto que puede utilizar para crear aplicaciones de producción. Spring Boot simplifica el despliegue de aplicaciones con una mínima configuración y personalización e incluye bibliotecas de terceros para optimizar el proceso.

Arquitectura

Esta arquitectura de referencia de varios niveles incluye los recursos de infraestructura y el marco de inicio de Spring utilizado para desplegar aplicaciones de alta disponibilidad en Oracle Cloud Infrastructure.

La arquitectura despliega un equilibrador de carga, un host bastión, tres máquinas virtuales (VM) donde está instalada la aplicación y Oracle MySQL Database Service.

La arquitectura incluye dos compartimentos, ambos con Cloud Guard activado para proporcionar la máxima seguridad basada en las mejores prácticas de seguridad de Oracle. Además, el compartimento donde se despliega Oracle MySQL Database Service es un compartimento de zona de seguridad.

Los componentes se encuentran en subredes y dominios de errores diferentes para proporcionar una alta disponibilidad. Se accede a Oracle MySQL Database Service solo a través del host bastión y se accede a las VM de aplicación mediante el equilibrador de carga.

En el siguiente diagrama, se muestra esta arquitectura.



Springboot-mysql-oci-oracle.zip

La arquitectura tiene los siguientes componentes:

  • 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 las grandes distancias pueden separarlas (entre países e incluso continentes).

  • Dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes e 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 infraestructura, como alimentación o refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, un fallo en un dominio de disponibilidad es poco probable que afecte a los otros dominios de disponibilidad de 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 alimentación y hardware independientes. Cuando distribuye recursos en varios dominios de errores, las aplicaciones pueden tolerar fallos del servidor físico, 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 del centro de datos tradicionales, las VCN le proporcionan un control total de su entorno de red. Una VCN puede tener varios bloques CIDR no solapados que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, que se pueden acotar a una región o a un dominio de disponibilidad. Cada subred consta de un rango de direcciones contiguas que no se solapan con las otras subredes de VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

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

  • Base

    Elija entre el host bastión y las opciones bastión de Oracle Cloud Infrastructure:

    • El bastion host es una instancia informática que sirve de punto de entrada controlado y seguro a la topología desde fuera de la nube. El host bastión se aprovisiona normalmente en una zona desmilitarizada (DMZ). Le permite proteger los recursos confidenciales colocándolos en redes privadas a las que no se puede acceder directamente desde fuera de la nube. La topología tiene un único punto de entrada conocido que puede supervisar y auditar con regularidad. Por lo tanto, puede evitar exponer los componentes más sensibles de la topología sin comprometer el acceso a ellos.

    • Oracle Cloud Infrastructure Bastion proporciona acceso seguro restringido y limitado en el tiempo a los recursos que no tienen puntos finales públicos y que requieren estrictos controles de acceso a los recursos, como hardware dedicado y máquinas virtuales, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) y cualquier otro recurso que permita el acceso al protocolo de shell seguro (SSH). Con el servicio Bastion de Oracle Cloud Infrastructure, puede activar 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 temporal. El bastión de Oracle Cloud Infrastructure elimina la necesidad de una IP pública para el acceso al bastión, lo que elimina las complicaciones y la posible superficie de ataque al proporcionar acceso remoto.

  • Equilibradores de carga

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

  • Cloud Guard

    Puede utilizar Oracle Cloud Guard para supervisar y mantener la seguridad de los recursos en Oracle Cloud Infrastructure. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de puntos débiles de seguridad y para supervisar 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 respuesta que puede definir.

  • Zona de seguridad

    Las zonas de seguridad garantizan las mejores prácticas de seguridad de Oracle desde el principio mediante la aplicación de políticas como el cifrado de datos y la prevención del acceso público a las redes para todo el compartimento. Una zona de seguridad está asociada a un compartimento con el mismo nombre e incluye políticas de zona de seguridad o una "recipe" que se aplica al compartimento y sus subcompartimentos. No puede agregar ni mover un compartimento estándar a un compartimento de zona de seguridad.

  • Gateway de intercambio de tráfico local (LPG)

    Un LPG permite emparejar una VCN con otra VCN en la misma región. El intercambio de tráfico significa que las VCN se comunican mediante direcciones IP privadas, sin el tráfico que atraviesa Internet o el enrutamiento a través de la red local.

  • Base de Datos

    Esta arquitectura utiliza MySQL Database Service, que se ejecuta en una máquina virtual de forma electrónica.

Recomendaciones

Los requisitos pueden ser diferentes de la arquitectura que se describe aquí. Utilice las siguientes recomendaciones como punto de partida.

  • Cloud Guard

    Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas de detector y respondedor personalizadas. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, un cubo de almacenamiento de objetos puede tener 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 la función de lista gestionada para aplicar determinadas configuraciones a los detectores.

  • Zonas de seguridad

    Para los recursos que requieren máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta definida por Oracle de políticas de seguridad basadas en las mejores prácticas. Por ejemplo, los recursos de una zona de seguridad no deben ser accesibles desde el Internet público y deben cifrarse mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure 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.

  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque según el número de recursos que planea asociar a subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de direcciones IP privadas estándar.

    Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor en la nube) a la que desee configurar conexiones privadas.

    Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques de CIDR.

    Al diseñar las subredes, tenga en cuenta los requisitos de flujo de tráfico y seguridad. Conecte todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

    Utilizar subredes regionales.

  • Listas de seguridad

    Utilice listas de seguridad para definir reglas de entrada y salida que se aplican a toda la subred.

  • Máquina virtual

    Las máquinas virtuales se distribuyen en varios dominios de errores para ofrecer una alta disponibilidad. Utilice VM.Standard.E3.Flex, OCPU de cuatro núcleos, memoria de 64-GB y ancho de banda de red de 4-Gbps (Oracle Linux 7).

  • Host bastión

    Utilice la unidad VM.Standard.E3.Flex con 1 OCPU y 2 Gig de RAM. También puede utilizar el servicio Bastion de Oracle Cloud Infrastructure.

  • Equilibradores de carga

    Los equilibradores de carga distribuyen el tráfico entrante a las máquinas virtuales de la aplicación. Al crear el equilibrador de carga, puede seleccionar una unidad predefinida que proporcione un ancho de banda fijo o especificar una unidad personalizada (flexible) donde defina un rango de ancho de banda y permita al servicio escalar el ancho de banda automáticamente según los patrones de tráfico. Con cualquiera de los dos enfoques, puede cambiar la unidad en cualquier momento después de crear el equilibrador de carga.

  • Servicio Database

    Utilice VM.Standard.E2.8, que proporciona suficiente CPU y memoria para la aplicación.

Consideraciones

  • Escalabilidad

    Puede escalar los servidores de aplicaciones verticalmente cambiando la unidad de las instancias informáticas. Una unidad con un mayor recuento de núcleos proporciona más memoria y ancho de banda de red. Si necesita más almacenamiento, aumente el tamaño de los volúmenes en bloque asociados al servidor de aplicaciones.

  • Disponibilidad

    Los dominios de errores proporcionan la mejor resiliencia para las cargas de trabajo desplegadas en un único dominio de disponibilidad. Para una alta disponibilidad en el nivel de aplicación, despliegue más servidores de aplicaciones según sea necesario.

  • Costo

    En el nivel de aplicación, seleccione la unidad de computación basada en los núcleos, la memoria y el ancho de banda de red que necesita la aplicación. Puede empezar con una unidad de cuatro núcleos para el servidor de aplicaciones. Si necesita más rendimiento, memoria o ancho de banda de red, puede cambiar a una unidad más grande.

  • Copias de Seguridad

    Oracle Cloud Infrastructure realiza una copia de seguridad automática de la base de datos MySQL. El cubo de Oracle Cloud Infrastructure Object Storage que crea almacena copias de seguridad manuales y las conserva durante 60 días.

    Oracle Cloud Infrastructure Block Volumes permite crear copias de seguridad de un momento dado de los datos en un volumen en bloque. Puede restaurar estas copias de seguridad en nuevos volúmenes en cualquier momento. También puede utilizar el servicio para realizar una copia de seguridad puntual y coherente ante bloqueos de un volumen de inicio sin interrupción de la aplicación ni tiempo de inactividad. Los volúmenes de inicio y en bloque tienen las mismas capacidades de copia de seguridad.

  • Seguridad

    Para el control de acceso, utilice políticas para restringir quién puede acceder a sus recursos en la nube y las acciones que pueden realizar.

    Para la seguridad de red, las listas de seguridad y los grupos de seguridad de red (NSG) utilizan reglas de seguridad para controlar el tráfico en el nivel de paquete. Un NSG está formado por un conjunto de reglas de seguridad de entrada y salida que se aplican sólo a un conjunto de VNIC que se pueden elegir en una única VCN. Por ejemplo, puede optar por aplicar reglas a todas las instancias informáticas que actúan como servidores web en el nivel web de una aplicación de varios niveles en la VCN.

    Las reglas de seguridad NSG funcionan del mismo modo que las reglas de listas de seguridad. Sin embargo, para el origen o el destino de una regla de seguridad de un grupo de seguridad de red, puede especificar un grupo de seguridad de red en lugar de un bloque de CIDR. Por lo tanto, puede escribir con facilidad reglas de seguridad para controlar el tráfico entre dos grupos de seguridad de la misma VCN o el tráfico dentro de un solo grupo de seguridad de red. Al crear un sistema de base de datos, puede especificar uno o más grupos de servicios de red. También puede actualizar un sistema de base de datos existente para usar uno o más grupos de servicios de red.

Desplegar

Para desplegar esta arquitectura de referencia, cree los recursos necesarios en Oracle Cloud Infrastructure y, a continuación, instale el marco de inicio de Spring.

  1. Cree los recursos necesarios en Oracle Cloud Infrastructure.

    El código de Terraform para desplegar los recursos en la nube está disponible en GitHub. Puede obtener el código en Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarla. También puede descargar el código de GitHub en su computadora, personalizar el código y desplegar la arquitectura mediante la interfaz de línea de comandos de Terraform.

    • Despliegue el código de Terraform mediante Oracle Cloud Infrastructure Resource Manager:
      1. Haga clic en Despliegue en Oracle Cloud.

        Si aún no ha iniciado sesión, introduzca las credenciales de arrendamiento y usuario.

      2. Seleccione la región en la que desea desplegar la pila.
      3. Siga las indicaciones de la pantalla y las instrucciones para crear la pila.
      4. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
      5. Espere hasta que se termine el trabajo y, a continuación, revise el plan.

        Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.

      6. Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
    • Despliegue el código de Terraform mediante la interfaz de línea de comandos de Terraform:
      1. Vaya a GitHub.
      2. Clone o descargue el repositorio en su equipo local.
      3. Siga las instrucciones del documento README.
  2. Después de aprovisionar la arquitectura, puede instalar el marco de inicio de Spring, que está disponible en GitHub:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en su equipo local.
    3. Utilice la información del documento README para acceder a información y recursos adicionales. Utilice las instrucciones del documento Introducción para instalar el inicio de Spring.

Log de Cambios

Este log sólo muestra los cambios significativos: