Diseño de arquitecturas .NET orientadas a microservicios
eBook - ePub

Diseño de arquitecturas .NET orientadas a microservicios

  1. 340 páginas
  2. Spanish
  3. ePUB (apto para móviles)
  4. Disponible en iOS y Android
eBook - ePub

Diseño de arquitecturas .NET orientadas a microservicios

Descripción del libro

La mejor arquitectura es aquella que resuelve su problema de software. Ahora, tiene a su disposición el manual con el que aprender a diseñar, de forma sencilla y autónoma, arquitecturas basadas en microservicios.Gracias a este libro, dejará atrás los contratiempos al trabajar con monolitos, como el alto acoplamiento dentro de un mismo sistema o la baja escalabilidad al resolver con la misma arquitectura distintos problemas. Asimismo, aprenderá alternativas que le permitirán aplicar distintas soluciones a multitud de cuestiones y sabrá distinguir cuándo es mejor orientar su arquitectura a microservicios y cuándo mantener su monolito.1.Conocerá los fundamentos de desarrollo.NET.2.Construirá cada módulo de que se compone una arquitectura con.NET.3.Aplicará seguridad a su arquitectura mediante la autenticación y autorización JWT.4.Sabrá cuándo aplicar una arquitectura monolítica o una orientada a microservicios.5.Será capaz de modelar arquitecturas limpias cumpliendo la regla de dependencia.6.Diseñará una arquitectura de microservicios usando distintas tecnologías en cada una.7.Aprenderá los distintos tipos de comunicación entre microservicios.Además, tras su lectura, conseguirá emplear una arquitectura limpia que le permitirá abstrae del almacén de datos utilizado, separar responsabilidades, crear un código reutilizable y mantenible, dotar a su sistema de un nivel de seguridad basado en token JWT, aprender los patrones más utilizados, así como conocer las bondades del desarrollo.NET, entre muchas otras posibilidades.Es el momento de dar rienda suelta a su creatividad y convertirse en el mejor arquitecto de software. Hágase con el libro, conozca los beneficios que aporta utilizar este tipo de arquitecturas y decida por sí mismo si debe o no aplicarlo. Ramón Serrano Valero: Ingeniero Informático con un máster en Ingeniería de Desarrollo para Dispositivos Móviles y otro en Ciencia de Datos. A lo largo de sus más de 14 años de experiencia en desarrollo.NET, diseñando diferentes arquitecturas software para las distintas necesidades de los clientes y asesorando a otras empresas en la definición de arquitecturas, ha aprendido que no todas las empresas requieren una misma arquitectura y que, en ocasiones, no realizar una sobre ingeniería simplifica la solución, al evitar que crezca su complejidad más de lo necesario.

Preguntas frecuentes

Sí, puedes cancelar tu suscripción en cualquier momento desde la pestaña Suscripción en los ajustes de tu cuenta en el sitio web de Perlego. La suscripción seguirá activa hasta que finalice el periodo de facturación actual. Descubre cómo cancelar tu suscripción.
No, los libros no se pueden descargar como archivos externos, como los PDF, para usarlos fuera de Perlego. Sin embargo, puedes descargarlos en la aplicación de Perlego para leerlos sin conexión en el móvil o en una tableta. Obtén más información aquí.
Perlego ofrece dos planes: Essential y Complete
  • El plan Essential es ideal para los estudiantes y los profesionales a los que les gusta explorar una amplia gama de temas. Accede a la biblioteca Essential, con más de 800 000 títulos de confianza y superventas sobre negocios, crecimiento personal y humanidades. Incluye un tiempo de lectura ilimitado y la voz estándar de «Lectura en voz alta».
  • Complete: perfecto para los estudiantes avanzados y los investigadores que necesitan un acceso completo sin ningún tipo de restricciones. Accede a más de 1,4 millones de libros sobre cientos de temas, incluidos títulos académicos y especializados. El plan Complete también incluye funciones avanzadas como la lectura en voz alta prémium y el asistente de investigación.
Ambos planes están disponibles con un ciclo de facturación mensual, semestral o anual.
Somos un servicio de suscripción de libros de texto en línea que te permite acceder a toda una biblioteca en línea por menos de lo que cuesta un libro al mes. Con más de un millón de libros sobre más de 1000 categorías, ¡tenemos todo lo que necesitas! Obtén más información aquí.
Busca el símbolo de lectura en voz alta en tu próximo libro para ver si puedes escucharlo. La herramienta de lectura en voz alta lee el texto en voz alta por ti, resaltando el texto a medida que se lee. Puedes pausarla, acelerarla y ralentizarla. Obtén más información aquí.
¡Sí! Puedes usar la aplicación de Perlego en dispositivos iOS o Android para leer cuando y donde quieras, incluso sin conexión. Es ideal para cuando vas de un lado a otro o quieres acceder al contenido sobre la marcha.
Ten en cuenta que no será compatible con los dispositivos que se ejecuten en iOS 13 y Android 7 o en versiones anteriores. Obtén más información sobre cómo usar la aplicación.
Sí, puedes acceder a Diseño de arquitecturas .NET orientadas a microservicios de Ramón Serrano Valero en formato PDF o ePUB, así como a otros libros populares de Ciencia de la computación y Programación. Tenemos más de un millón de libros disponibles en nuestro catálogo para que explores.

Información

Editorial
Marcombo
Año
2022
ISBN del libro electrónico
9788426734471
Edición
1
Categoría
Programación

PROYECTO DE MICROSERVICIOS

Incorporemos los conocimientos adquiridos hasta ahora para crear un proyecto de microservicios [MS-0], compuesto por varios monolitos; cada microservicio debe tener las siguientes características:
Aislado del resto.
Ejecutado en un contenedor Docker.
La comunicación entre microservicios, en caso de que exista, se realizará mediante RabbitMQ.
Empleará una arquitectura limpia.
Tendrá su propio sistema de almacenamiento también aislado y ejecutado en un contenedor Docker.
La solución a implementar se trata de un sistema de microservicios capaz de realizar el control de asistencia de miles de empleados de una empresa.
Illustration
Figura MS-0
Dado que, por lo general, el control de entradas y salidas suelen ser al mismo tiempo, consideramos interesante ofrecer una solución basada en microservicios, capaz de gestionar todo este tráfico.
Se compone de los siguientes microservicios:
Microservicio de autenticación de usuarios basado en JWT, con base de datos No SQL Cassandra.
Microservicio de control de accesos de empleados, con base de datos SQL Server gestionadas las conexiones por Dapper.
Microservicio de histórico de accesos de empleados, con base de datos No SQL MongoDB.
La infraestructura dispone de los siguientes contenedores a levantar en Docker:
ms.cassandra.db: Base de datos Cassandra.
ms.sql.employees.db: Base de datos SQL Server.
ms.mongo.attendance.db: Base de datos MongoDB.
ms.users.api: API de microservicio de autenticación.
ms.employees.api: API del microservicio registro de asistencia de empleados.
ms.attendances.api: API del microservicio de histórico de asistencia.
ms.rabbitmq.queue: Cola de mensajería RabbitMQ.
La comunicación entre los microservicios se realizará tanto por Http con Refit, como por el sistema de colas RabbitMQ.

Microservicio de autenticación

El microservicio de autenticación se comunicará con una base de datos Cassandra que contiene los registros de los usuarios del sistema. Ambos están empaquetados en contenedores Docker.
Realizará las siguientes tareas:
Autenticación: Proporcionando a la API de autenticación el nombre de usuario y contraseña, estas credenciales se validarán contra la base de datos Cassandra, obteniendo un token JWT en caso de ser válido.
Obtención de todos los usuarios: Únicamente accesible por un usuario con rol de administrador, retornará los usuarios almacenados en BD.
Creación de nuevo usuario: Únicamente accesible por administradores, permitiendo crear nuevos usuarios en caso de que no exista su nombre de usuario.

Contenedor Cassandra

Cassandra es el almacén de datos seleccionado en el microservicio de autenticación, debido a que podemos almacenar un gran número de usuarios pertenecientes a la empresa; estos usuarios poseen una clave primaria, su nombre de usuario, fácilmente indexable, requisito en Cassandra, lo cual es perfecto.
Al tratarse de una base de datos No SQL, las lecturas son rapidísimas, lo que nos beneficia para ofrecer un sistema de autenticación veloz.
De modo que vamos a crear un contenedor “ms.cassandra.db”, usando una imagen de Cassandra [MSA-4].
Illustration
Figura MSA-4
Descarguemos la imagen de Cassandra a través del comando Docker, como ya vimos en apartados anteriores [MSA-5]. Una vez descargada, listamos las imágenes de nuestro equipo y la encontraremos con la última versión “latest”.
Illustration
Figura MSA-5
Creemos el contenedor “ms.cassandra.db”, de la imagen Cassandra que acabamos de crear [MSA-6], asignándole el volumen local de nuestro equipo “/ Users/Docker/MicroServices/Cassandra” con la ruta que utiliza internamente el contenedor de Cassandra para almacenar los datos “/var/lib/cassandra” y abramos el puerto 9042 para interactuar con este almacén de datos.
De esta forma, aunque eliminásemos el contenedor, sus datos no se perderían, gracias al volumen local que persiste los datos del almacén de Cassandra.
Illustration
Figura MSA-6
Una vez disponemos del contenedor “ms.cassandra.db” activo, al haber explicado Cassandra en anteriores capítulos, no entraremos en detalle, simplemente creemos [MSA-7]:
Keyspace KSUsers con estrategia de replicación simple y manteniendo una copia de los datos en los nodos.
Tabla de usuarios “User”, con tres columnas; la primera será el índice y clave primaria nombre de usuario, mientras que las otras dos serán contraseña y nombre del rol del usuario.
Insertamos un usuario con el rol de administrador.
Illustration
Figura MSA-7
Con esto habríamos concluido la configuración inicial del contenedor Cassandra que utilizaremos en este microservicio.

Creación de microservicio de autenticación

El microservicio de autenticación [MSA-8] utiliza una arquitectura limpia de 4 capas, como hemos visto hasta ahora. Su responsabilidad radica en la autenticación en base a unas credenciales proporcionadas, la obtención de los usuarios registrados y, por último, la creación de nuevos usuarios.
Este último lo crearemos como método del controlador UsersController, aunque posteriormente la creación de usuarios se realizará por un evento invocado en la fase de crear nuevos empleados.
Los patrones utilizados en cada capa son:
Presentación: Patrón de autenticación basado en JWT.
Aplicación: Patrón CQRS a través de MediatR, para separar las escrituras de las lecturas.
Infrae...

Índice

  1. Cubierta
  2. Título
  3. Créditos
  4. Índice
  5. Introducción
  6. Motivación
  7. Arquitectura software
  8. Principios solid
  9. Proyecto web API base con .NET 5
  10. Inyección de dependencias en .NET 5
  11. Patrón Repository
  12. AutoMapper
  13. LOG
  14. Autenticación JWT (JSON web token)
  15. Middleware
  16. CQRS: Command query responsibility segregation
  17. MediatR: Patrón MediatR
  18. Docker
  19. Proyecto de microservicios
  20. Reflexiones finales