3. 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.
4. Arquitectura externa vs arquitectura interna Patrones de
diseño
Arquitectura Externa por Aplicación
Arquitectura interna por Microservicio
26. 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
30. 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
Hace no mas de 2 meses asiste a la arq conf, una conferencia sobre arquitectura de software en la cual se hablo como en tantas otras conferencias sobre micro servicios. Tras este evento y tras una reflexión con amigos. Encontramos como patron, que cada vez que se habla de microservicios se habla desde una persepctiva de administadores IT o DevOps y que rara vez se lo hace desde la mirada de un desarrollador.
Cada vez que se habla de microservicios se habla de conceptos como orquestadores, despliegue, escalado de de contenedores servicios de cloud entre otros.
Es por eso que esta charla surge como resultado de esta reflexión y con el objtivo de presenter una variedad de patrones que como desarrolladores deberiamos implementar si queremos tener una solucion de microservicios exitosa..
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 cada uno.
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