Apoyándonos en la guía de arquitectura recientemente actualizada por Microsoft: .NET Microservices. Architecture for Containerized .NET Applications.
Realizaremos una introducción al desarrollo de aplicaciones basadas en microservicios y como gestionarlos usando contenedores.
Se mencionaran enfoques arquitectónicos y su implementación con .NET Core y contenedores Docker.
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Microservicios net arquitectura para aplicaciones net contenerizadas - net conf
1. October 4th, 5th & 6th 2018.NET Conf AR v2018
Microservicios .NET: Arquitectura para
Aplicaciones .NET Contenerizadas
Germán Küber
.Net Developer
CloudX
2. Aplicación de referencia eShopOnContainers - Arquitectura
Ordering microservice
Catalog microservice
eShop WebApp MVC
ASP.NET Core MVC
Identity microservice (STS+users)
eShop SPA Web app
TypeScript/Angular 4
eShop mobile app
Xamarin.Forms
C#
xPlat. OS:
iOS
Android
Windows
Docker Host
eShop traditional Web app
HTML
SQL Server db
Client apps
Basket microservice
Redis cache
Marketing microservice
MongoDB /
CosmosDB
SQL Server DB
SQL Server db
SQL Server db
Location microservice
MongoDB /
CosmosDB
Ordering.API
GracePeriod worker Svc.
3. October 4th, 5th & 6th 2018.NET Conf AR v2018
Arquitectura externa vs arquitectura interna y
patrones de diseño
Arquitectura Externa por
Aplicación
Arquitectura interna por
Microservicio
4. October 4th, 5th & 6th 2018.NET Conf AR v2018
Entorno de desarrollo para aplicaciones Docker
5. October 4th, 5th & 6th 2018.NET Conf AR v2018
Agregar soporte Docker a nuestras Aplicaciones
6. October 4th, 5th & 6th 2018.NET Conf AR v2018
Ejecutando y depurando una aplicación multi-
contenedor con Visual Studio
7. October 4th, 5th & 6th 2018.NET Conf AR v2018
Multi contenedor con
docker-compose.yml
8. October 4th, 5th & 6th 2018.NET Conf AR v2018
Creando un microservicio CRUD simple para datos
9. October 4th, 5th & 6th 2018.NET Conf AR v2018
Contenedor de microservicio CRUD/orientado a datos
10. October 4th, 5th & 6th 2018.NET Conf AR v2018
Implementando un microservicio CRUD
simple con ASP.NET Core
11. October 4th, 5th & 6th 2018.NET Conf AR v2018
Connection String desde Docker Compose
12. October 4th, 5th & 6th 2018.NET Conf AR v2018
Comunicación entre microservicios
13. October 4th, 5th & 6th 2018.NET Conf AR v2018
Eventos de integración
14. October 4th, 5th & 6th 2018.NET Conf AR v2018
Interfaz de un BUS de eventos
15. October 4th, 5th & 6th 2018.NET Conf AR v2018
Suscribiéndose a eventos
16. October 4th, 5th & 6th 2018.NET Conf AR v2018
Publicando eventos a través del bus de
eventos
17.
18. October 4th, 5th & 6th 2018.NET Conf AR v2018
Microservicio CQRS
Microservicio de pedidos
19. October 4th, 5th & 6th 2018.NET Conf AR v2018
Consultas en (CQRS)
24. October 4th, 5th & 6th 2018.NET Conf AR v2018
Capas en un microservicio DDD
25. October 4th, 5th & 6th 2018.NET Conf AR v2018
Un modelo de dominio como un microservicio
• Misma Identidad múltiples Bounded
Contexts (Microservicios)
• Entidades modeladas en cada Microservicio
• La Entidad debe implementar
comportamiento
• Los métodos de la Entidad resguardan sus
invariantes
28. October 4th, 5th & 6th 2018.NET Conf AR v2018
Microservicio
DDD
implementado
con .NET Core
29. October 4th, 5th & 6th 2018.NET Conf AR v2018
Eventos de Dominio
• Algo que ocurrió en el pasado
• Mejora la separación de responsabilidades
• Facilita la extensibilidad de nuestro dominio
• Eventos que son manejados dentro del mismo Thread
33. October 4th, 5th & 6th 2018.NET Conf AR v2018
eShopContainers: Aplicación de
microservicios de referencia
34. October 4th, 5th & 6th 2018.NET Conf AR v2018
Gracias!!!
http://germankuber.com.ar
@GermanKuber
German.Kuber@Outlook.com
Germán Küber
Notas del editor
Arquitectura externa: compuesta por múltiples microservicios, a nivel de orquestadores, y arquitectura física.
Arquitectura interna:
Independiente de la arquitectura de alto nivel de microservicios que se elija.
Pueden/deben utilizar diferentes patrones a lo largo de diferentes microservicios, dependiendo de las necesidades de ste.
Pueden estar escritos en diferentes lenguaje o tecnologías
Por EJ:
CRUD
DDD
CQRS
Arquitectura Basa en Eventos
Desarrollar es igual que en cualquier otro entorno, solo que ahora se probara dentro de Docker (posiblemente será compilada dentro de Docker también)
Definimo el fichero Docker de nuestro microservicio, donde configuraremos el entorno, tanto de desarrollo como producción
Si la aplicación corre mas de una imagen, debemos descargar todas las imágenes necesarias de nuestro entorno.
Puede descargarse haciendo uso del rigistry
Modificamos el Docker-compose, donde agregamos nuetro servicio
Ejecutamos Docker compose y levantamos todo el entorno de desarrollo o producción
Ingresamos a la app para probarla.
Subimos los cambios
Desde el punto de vista del diseño, este tipo de microservicios contenerizados es muy simple. Tal vez el problema a resolver sea simple, o tal vez la implementación sea sólo una prueba de concepto.
Microservicio Catalogo
Microsoft.AspNetCore.All, se hace referencia a Entity Framework
CQRS y los patrones DDD no son arquitecturas de alto nivel
Usando Dapper como micro ORM para realizar las consultas