Renderizar
Introducción
La plataforma Devprime acelera la productividad de los desarrolladores de software al ofrecer un diseño completo de arquitectura de software, componentes con comportamientos inteligentes, aceleradores para la implementación de código y actualizaciones con nuevas funciones.
En este artículo, cubriremos el uso del servicio Host Render, una plataforma de alojamiento de aplicaciones que ofrece funciones como servicios web, sitios estáticos, trabajadores en segundo plano, trabajos cron, docker, PostgreSQL y Redis.
Durante este artículo, usaremos un microservicio con una regla de negocio relacionada con el orden y la base de datos PostgreSQL. Te guiaremos a través de los pasos para crear el microservicio, los servicios de alojamiento en Render y, a continuación, las configuraciones necesarias para que esté disponible con el plan gratuito.
Lista de verificación y preparación del entorno inicial:
- Abra una cuenta en Devprime Platform y compre una licencia Developer/Enterprise).
- Instalar una versión actualizada de .NET (Linux, macOS y Windows)
- Instalar y/o actualizar Visual Studio Code y/o Visual Studio 2023 Community / Professional / Enterprise.
- Instale y/o actualice docker (para Windows, use WSL2).
- Inicializar los contenedores PostgreSQL y RabbitMQ en docker y agregue la cola ‘orderevents’ en RabbitMQ.
- Instale y active la última versión de la Devprime CLI.
- Crea una carpeta para tus proyectos y establece permisos de lectura y escritura.
- Véase el artículo “Creación del primer microservicio” para explorar cómo empezar a trabajar con la plataforma Devprime.
- Crea una cuenta de anfitrión en Render.com.
Creación de un microservicio para usar en el ejemplo
El primer paso es crear un nuevo microservicio que podamos usar como plantilla para publicar en el host. El nombre de este microservicio se establecerá en “ms-render”, como se muestra en el siguiente comando.
- Creación del primer microservicio
dp new ms-render --stream rabbitmq --state postgresql
- Agregar un ejemplo de regla de negocio “Orden”
dp marketplace order
- Inicialización y aceleración de implementaciones de microservicios
dp init
Después de la creación del nuevo microservicio, vaya a la carpeta del proyecto “ms-render”, donde puede ver todas las implementaciones de Visual Studio Code, como se muestra en el artículo relacionado con creación del primer microservicio.
En este momento no usaremos RabbitMQ y lo desactivaremos en la Configuración del adaptador de flujo a través del archivo de configuración en “src\App\appsettings.json”.
-
Escriba la nueva publicación
ms-order
y ábrala desde Visual Studio Code
code src\App\appsettings.json
-
Localiza la tecla “DevPrime_Stream” y en la opción “Habilitar” pon “false”.
-
Cambie el controlador “OrderCreated” comentando la línea “Dp.Stream.Send(destination, eventName, eventData);” para que no desencadene el evento que enviará el flujo.
Abrir el controlador desde Visual Studio Code
src\Core\Application\EventHandlers\Order\OrderCreatedEventHandler.cs
IMPORTANTE:
En este ejemplo, estamos utilizando una base de datos relacional estándar y, por lo tanto, es necesario aplicar la estructura de tablas a la base de datos utilizando scripts SQL o utilizando el comando dp state apply
.
Creación de la base de datos PostgreSQL en Render.com
En este ejemplo, usaremos una base de datos PostgreSQL en una instancia gratuita. Inicie el proceso de creación y configure los siguientes parámetros: Nombre de PostgreSQL/Base de datos/Usuario/Región/Versión. Al final del procedimiento, tendrá acceso a la configuración como se ilustra en la imagen a continuación, que es un paso crucial para obtener las credenciales necesarias.
Los siguientes valores son solo ejemplos para ejemplificar cómo obtener configuraciones de base de datos PostgreSQL en Render.com y luego transportarlas al microservicio de acuerdo con configuration.
Artículo | Descripción | Valor |
---|---|---|
Nombre de host | URL interna | DPG-ckv4bi3amefc73cu3e5g-a |
Puerto | Puerto TCP | 5432 |
Base de datos | Nombre de la base de datos | msrender |
Nombre de usuario | Usuario de acceso | msrender |
Contraseña | Contraseña | 0KxiNwzyNyIviwVizfjrROkmMjnd41yp |
URL de la base de datos interna | Cadena de conexión interna | postgres://msrender:0KxiNwzyNyIviwVizfjrROkmMjnd41yp@dpg-ckv4bi3amefc73cu3e5g-a/msrender |
URL de base de datos externa | Cadena de conexión externa | postgres://msrender:0KxiNwzyNyIviwVizfjrROkmMjnd41yp@dpg-ckv4bi3amefc73cu3e5g-a.oregon-postgres.render.com/msrender |
Conexión | Composición de la conexión Devprime | Host=dpg-ckv4bi3amefc73cu3e5g-a.oregon-postgres.render.com; Nombre de usuario=msrender; Contraseña=0KxiNwzyNyIviwVizfjrROkmMjnd41yp; Base de datos=msrender |
En el siguiente ejemplo, demostramos cómo aplicar la configuración de PostgreSQL al microservicio a través del archivo de configuración “src\App\appsettings.json”. Para acceder al entorno local, es necesario utilizar la url externa de la base de datos.
Ábrelo desde Visual Studio Code y pon tu conexión en JSON.
code src\App\appsettings.json
|
|
Aplicación de la estructura de datos PostgreSQL en Render.com
En el paso anterior obtuviste las credenciales y lo configuraste en “src\App\appsettings.json” y en ese punto aplicaremos la estructura de datos para que podamos probar el microservicio.
Ejecute el siguiente comando
dp state apply state1
Al final del proceso, la estructura de la tabla se creará en la base de datos PostgreSQL en Render
Ejecute el microservicio localmente y realice un Post/Get
En el paso anterior configuramos la base de datos apuntando al servicio PostgreSQL en Render, por lo que ya podemos realizar una prueba escribiendo y leyendo información.
Para iniciar el microservicio, ejecute uno de los siguientes scripts:
.\run.ps1 (Windows) ou ./run.sh (Linux, macOS)
Acceda a la dirección URL local del microservicio en https://localhost:5001 o http://localhost:5000
Exportación de la configuración en el archivo yaml
La configuración de la aplicación se pasa a Render en formato clave/valor. En este punto, usaremos el comando “dp export kubernetes” para exportar plantillas de archivos YAML a Kubernetes. Esto nos permitirá copiar los siguientes parámetros: devprime_app, devprime_observability, devprime_web, devprime_stream1, devprime_state1, devprime_Custom y devPrime_Services.
Ejecute el comando
dp export kubernetes
La exportación creará dos archivos:
- deployment.yml
- service.yml
La siguiente imagen muestra el ejemplo del archivo “deployment.yml”.
Para ver las variables, abra el archivo “Devpoyment” en Visual Studio Code.
code .devprime\kubernetes\deployment.yml
Subir el código a un repositorio privado en Github
Se recomienda usar un repositorio privado de Github al vincular Render al compilar servicios web. Devprime ofrece un comando que elimina las credenciales del archivo de configuración local.
Para eliminar las credenciales del proyecto, ejecute el siguiente comando:
dp clean
Creación de un servicio web en Render
Ahora es el momento de crear un nuevo servicio web en Render con la opción de vincular al código fuente disponible a través de un repositorio privado en GitHub. A medida que avances, tendrás la opción de integrarte con tu cuenta de GitHub y elegir un repositorio específico que se usará para publicar en Render. El Render utiliza el dockerfile presente en la carpeta raíz del proyecto para construir la imagen de nuestro microservicio.
Después de avanzar, el siguiente paso es establecer algunos parámetros iniciales para crear el nuevo servicio web en Render.
Artículo | Valor |
---|---|
Nombre | Nombre del microservicio |
Región | Oregón |
Sucursal | Principal |
Directorio raíz | En blanco |
Tiempo de ejecución | docker |
Tipo de instancia | Gratis |
Al final del formulario, ubique la opción “Avanzado” y elija “Agregar variable de entorno” y agregue las variables que tratamos en el paso anterior. devprime_app, devprime_observability, devprime_web, devprime_stream1, devprime_state1, devprime_custom y devprime_services.
Para ver las variables, abra el archivo “Devpoyment” en Visual Studio Code.
code .devprime\kubernetes\deployment.yml
Al final del proceso de compilación de la imagen de docker y con las variables de entorno correctas, el servicio estará activo y ya tendrá una dirección URL pública disponible para probar el servicio.
Reflexiones finales
A continuación, se muestra un breve ejemplo de publicación de un microservicio en la plataforma Devprime alojada en Render. Utilícelo como referencia para publicar otros servicios. Puede agregar funciones adicionales como RabbitMQ, Redis y, especialmente, habilitar la seguridad mediante un proveedor de identidad, como Keycloak, Auth0 y otros, para proteger el acceso a las API.
Última modificación April 16, 2024 (2b35fcc8)