Creación de un microservicio

Aprenda a desarrollar el primer microserico listo para la producción en 30 minutos utilizando la CLI de Devprime, Devprime Stack y el diseño y aceleradores de arquitectura de software modernos que aumentan la productividad y estandarizan el desarrollo.

Hoy aprenderás en la práctica cómo utilizar la plataforma Devprime para acelerar el desarrollo del primer microservicio. Usaremos la CLI de Devprime, que es la herramienta de Devprime para el desarrollador, con el comando ‘dp new’. Al ejecutar este comando, se crea una nueva aplicación en cuestión de segundos, que incluye un proyecto completo de arquitectura de software, y está lista para la producción. Este proceso ahorra mucho tiempo en comparación con la creación convencional, que normalmente llevaría semanas.

Para el entorno local, el servicio Stream ‘RabbitMQ’ se utilizará para la emisión de eventos y la comunicación asíncrona, alineándose con nuestro enfoque ‘Event-Driven Architecture’ y para la base de datos, optamos por ‘MongoDB’ y haremos la integración utilizando el adaptador de estado.

Cheklist e preperação do ambiente inicial:

Criando o primeiro microsserviço
Los nuevos proyectos se crean mediante el comando dp new con parámetros para la definición de secuencia, que puede variar entre RabbitMQ, Kafka y otras opciones, y State, que puede variar entre MongoDB, MySQL, SQL Server y otras opciones.

Para iniciar un nuevo proyecto de microservicio, ejecute el siguiente comando, establezca el nombre del microservicio en “ms-order” y especifique los parámetros para RabbitMQ y MongoDB:

1
dp new ms-order --stream rabbitmq --state mongodb

Este comando creará un nuevo microservicio denominado “ms-order” con las configuraciones adecuadas para usar RabbitMQ en Stream y MongoDB en State.

Versión Devprime

El nuevo microservicio está listo para la producción

Para acceder al nuevo proyecto, vaya a la carpeta creada y ábrala en Visual Studio Code para ver la arquitectura de software implementada, las funcionalidades habilitadas por los aceleradores y los componentes de la plataforma Devprime.

1
code .

El ajustes de las características ofrecidas por Devprime Stack están disponibles en el archivo appsettings (src\App\appsettings.json) y se pueden configurar a través de variables de entorno en el contenedor y una bóveda de almacén en el entorno de producción.

El proyecto sigue un enfoque de arquitectura hexagonal que separa las capas de tecnología de la siguiente manera:

  • APP: El proyecto principal de la aplicación y el predeterminado para abrirse en Visual Studio.
  • Dominio: Las reglas de negocio se basan en el diseño basado en dominios (DDD) y están aisladas dentro de ese proyecto. Todas las clases de dominio deben heredar de las clases de Devprime Foundation (AggRoot, Entity, ValueObject).
  • Web: Adaptador para exponer APIs.
  • Stream: Adaptador con implementación para recibir eventos multistream (RabbitMQ, Kafka, etc.).
  • Estado: Adaptador con integración con plataformas de persistencia (MongoDB, SQLServer, PostgreSQL, etc.).
  • Servicios: Adaptador para la integración con servicios de API externos, ya sea mediante HTTP, gRPC o GraphQL.
  • Seguridad: Adaptador para la integración con proveedores de identidad, incluida la autenticación y autorización para proteger las API.
  • HealthCheck: Exposición para comprobar la disponibilidad de los servicios en el clúster (Liveness, Readiness).
  • Observabilidad: Adaptador con estrategias de observabilidad, incluido el registro, el seguimiento, las métricas y la compatibilidad con OpenTelemetry para su uso en el seguimiento distribuido.
  • AppCenter: Adaptador para exponer información para servicios de monitorización.
  • Extensiones: Adaptador con extensibilidad para agregar componentes NuGet externos de terceros.

La nueva aplicación de microservicios “ms-order” se puede ejecutar incluso sin reglas de negocio. En el contexto de los microservicios, el registro es el lienzo de la aplicación, y Devprime ofrece una experiencia de visualización increíble al generar automáticamente el registro mediante el adaptador “Observabilidad”. Este log, además de ser automático, se distribuye, permitiendo la integración con procesos entre microservicios.

Iniciar el microservicio “Pedido”

Puede ejecutar la aplicación usando dotnet run --project .\src\App\App.csproj -c release o usando los archivos de script “.\run.ps1” si tiene PowerShell (Windows, Linux, macOS) instalado o “./run.sh” en bash (Linux y macOS).

permiso chmod en Linux, macOS
Para ejecutar el archivo “.sh” en (Linux, macOS) debe agregar el permiso a continuación para que el script sea ejecutable.
chmod +x run.sh

Inicie el microservicio ejecutando uno de los siguientes scripts:
.\run.ps1 (Windows) ou ./run.sh (Linux, macOS)

Al iniciar la aplicación, puede seguir todo el comportamiento del nuevo microservicio en el registro siguiente.

Microservicio de inicio de Devprime

Introducción a la resiliencia y el disyuntor

La plataforma Devprime ofrece estrategias automáticas para sistemas distribuidos, incluidas características como Retry, Circuit Breaker y Resiliency a través de los componentes de Devprime Stack.

Durante el inicio del microservicio o en cualquier momento de su funcionamiento, es habitual que se produzcan errores. Si no tiene un servicio de contenedor RabbitMQ que se ejecute localmente o que esté configurado correctamente en el archivo “src/App/appsettings.json”, el adaptador iniciará automáticamente un intento de “Reintento”. Si no tiene éxito, activará el “disyuntor” debido a problemas para acceder al servicio RabbitMQ Stream.

Microservicio de inicio de Devprime

Al regresar del servicio, apagará el “disyuntor” automáticamente.

Visualización de las API expuestas en el microservicio

Al ejecutar el nuevo microservicio que ha creado, ya tendrá acceso a las direcciones URL http://localhost:5000 o https://localhost:5001 a través del adaptador web. Esto le permite ver la API expuesta en el estándar OpenAPI/Swagger. Sin embargo, dado que las reglas de negocio aún no se han implementado, el único punto de conexión disponible es /healthcheck, que usa el clúster de Kubernetes para supervisar el servicio.

Microservicio de inicio de Devprime

Adición de una regla de negocio

El proyecto creado ya está listo para recibir las reglas de negocio en el Domain Driven Design (DDD). El código debe escribirse dentro de la carpeta Dominio. Después de la inclusión, es posible utilizar el acelerador “dp init” para analizar el dominio y crear el código necesario para la exposición de la API, simplificando aún más el viaje de desarrollo, además de mantener las mejores prácticas de desarrollo.

Para facilitar nuestro ejemplo, utilizaremos el dominio “Order” y obtendremos el código de ejemplo del servicio marketplace de la plataforma Devprime. Utilice el siguiente comando y compruebe el resultado en la carpeta Domain src/Core/Domain/Aggregates.
dp marketplace order

A continuación, utilizaremos el comando “dp init”, que permite analizar las reglas de negocio en el “Dominio” y, utilizando las mejores prácticas de desarrollo, construir el código necesario para permitir propagar una interacción de negocio con otras capas de la aplicación, manteniendo el desacoplamiento, la estandarización y la capacidad de prueba, ahorrando muchas horas de desarrollo.

El acelerador implementa automáticamente las clases de “Eventos de Dominio” en Dominio, Manejadores de Eventos en Aplicación, “Servicios de Dominio” en Aplicación, “Servicios de Aplicación” en Aplicación, persistencia en Estado, “API’s/Controladores” en Web, pruebas unitarias en Pruebas.

Para usarlo, solo necesita tener un dominio implementado y ejecutar el comando como se muestra en el siguiente ejemplo.
dp init
#Microservicio de inicio de Devprime

Ahora, cuando vuelva a ejecutar el micro ‘ms-oder’, ya tendrá un conjunto de API como se presenta a continuación
y ahora puede, por ejemplo, realizar una publicación en la API y realizar un seguimiento de todos los resultados del microservicio funcionando y listo para producción.

Microservicio de inicio de Devprime

¡¡GUAU!! Ya tiene un microservicio listo para producción basado en Devprime

Última modificación April 11, 2024 (cc33f7e6)