SlideShare una empresa de Scribd logo
1 de 29
2019
Netcoreconf
Creando aplicaciones multi-tenant
Nacho Fanjul
Key Specialist - Architect at Pasiona
@nfanjul
Sponsors
¿Quién soy?
Nacho Fanjul
Key Specialist - Architect
@ nfanjul@pasiona.com
@nfanjul
https://github.com/nfanjul
Agenda
Tenant, tenant, tenant…
¿Qué es una aplicación multi-tenant?
“Multi-tenant se refiere a la capacidad del
software de ser utilizado por múltiples entidades
usuario (tenants) de forma que cada tenant opera
de forma aislada, mientras que en realidad, está
usando recursos físicos compartidos. Un tenant
puede ser una organización que utiliza una
aplicación simultáneamente con otros tenants.
También puede ser una aplicación compartiendo
recursos con otras aplicaciones.”
by Yefim V. Natis
VP Distinguished Analyst
Single-tenant vs multi-tenant
Single-tenant
•1 subdominio por tenant
•URL’s personalizadas con CNAME*
www.sporting.tenant1.net
www.sporting.tenant2.net
sportingtenant1.azurewebsites.net
sportingtenant2.azurewebsites.net
Multi-tenant
•1 subdominio compartido por los tenants
•Misma URL. A través del usuario*
sporting.azurewebsites.net/tenant1
sporting.azurewebsites.net/tenant2
sporting.azurewebsites.net/
Posibles soluciones
Aplicación y BD independiente por tenant
• “n” instalaciones
• BD completa para cada tenant
• “>” Coste de
• Infraestructura
• Despliegue
• Administración
• Instancias independientes
• Datos completamente aislados
Una aplicación para “n” tenants
• BD compartida
• Escalado
• “>” Coste de…
• Desarrollo
• Administración BD
• Instalación única
• Instancia única
• “<” Coste de…
• Infraestructura
• Despliegue
Una aplicación para “n” tenants - evolución
• BD compartida
• “>” Coste de
• Desarrollo
• Administración BD
• Instalación única
• Instancia única
• Escalado casi infinito
• “<” Coste de
• Infraestructura
• Despliegue
Una BD para cada tenant
• Instalación e instancia única
• Aislamiento de los datos
• Escalado infinito
• Personalización
• “<” Coste de
• Infraestructura
• Despliegue
• Desarrollo
• BD individual
• “>” Coste de
• Administración BD
¿De dónde veníamos?
y a dónde llegamos…
Lo que había…
Web & API
Web & API
Web & API
Cliente 1
Cliente 3
Cliente 2
Lo que pensamos inicialmente
BD’s clientes
BD
infraestructura
Multi-tenant
CORE
Web & API
Cliente 1
Cliente 3
Cliente 2
Evolución
BD’s clientes
BD
infraestructura
Multi-tenant
CORE
Web & API
CORE
APP
Aprovisiona
miento
Cliente 1
Cliente 3
Cliente 2
Aproximación final
BD’s clientes
BD
infraestructura
Multi-tenant
CORE
Web & API
CORE
APP
Aprovisionamiento
Cliente 1
Cliente 3
Cliente 2
(por el momento)
El terreno de juego
Estructura del proyecto
Contenedor IoC
Configurar middleware para mi contenedor IoC
Configurar mi contenedor IoC
Resolver el tenant
Creación de la BD
¿Preguntas?
Nacho Fanjul
Key Specialist - Architect
@ nfanjul@pasiona.com
@nfanjul
https://github.com/nfanjul
Sponsors
Más información:
info@netcoreconf.com
@Netcoreconf
Visítanos en:
2019.Netcoreconf.com

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

1 vitaminas y minerales
1 vitaminas y minerales1 vitaminas y minerales
1 vitaminas y minerales
 
Desnutrição infantil
Desnutrição infantilDesnutrição infantil
Desnutrição infantil
 
Palestra da nutricionista.
Palestra da nutricionista.Palestra da nutricionista.
Palestra da nutricionista.
 
Alimentação saudável para gestantes
Alimentação saudável para gestantesAlimentação saudável para gestantes
Alimentação saudável para gestantes
 
Palestra educação nutricional
Palestra educação nutricionalPalestra educação nutricional
Palestra educação nutricional
 
Tabelas de medidas caseiras
Tabelas de medidas caseirasTabelas de medidas caseiras
Tabelas de medidas caseiras
 
Vitaminas y minerales
Vitaminas y mineralesVitaminas y minerales
Vitaminas y minerales
 
Vamos falar sobre alimentação.pdf
Vamos falar sobre alimentação.pdfVamos falar sobre alimentação.pdf
Vamos falar sobre alimentação.pdf
 
ALIMENTAÇÃO E NUTRIÇÃO NA GRAVIDEZ
ALIMENTAÇÃO E NUTRIÇÃO NA GRAVIDEZALIMENTAÇÃO E NUTRIÇÃO NA GRAVIDEZ
ALIMENTAÇÃO E NUTRIÇÃO NA GRAVIDEZ
 
vitamina b3
vitamina b3vitamina b3
vitamina b3
 
Alimentação saudável slides
Alimentação saudável slidesAlimentação saudável slides
Alimentação saudável slides
 
Plan nutricional
Plan nutricionalPlan nutricional
Plan nutricional
 
Alimentação infantil
Alimentação infantilAlimentação infantil
Alimentação infantil
 
Tecnicas culinarias
Tecnicas culinarias Tecnicas culinarias
Tecnicas culinarias
 
cardapio-3.pdf
cardapio-3.pdfcardapio-3.pdf
cardapio-3.pdf
 
Gestação 2
Gestação 2Gestação 2
Gestação 2
 
Alimentação da gestante
Alimentação da gestanteAlimentação da gestante
Alimentação da gestante
 
Alimentação na Gestação
Alimentação na GestaçãoAlimentação na Gestação
Alimentação na Gestação
 
Alimentação saudável
Alimentação saudávelAlimentação saudável
Alimentação saudável
 
Piramide nutricional marcela lopez
Piramide nutricional marcela lopezPiramide nutricional marcela lopez
Piramide nutricional marcela lopez
 

Similar a Creando aplicaciones multi-tenant con .NET Core

Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Nacho Fanjul Corteguera
 
Netcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en AzureNetcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en AzureAdrian Diaz Cervera
 
vOpenUy: Construye tu aplicación Multi-Tenant
vOpenUy: Construye tu aplicación Multi-TenantvOpenUy: Construye tu aplicación Multi-Tenant
vOpenUy: Construye tu aplicación Multi-Tenantfernando sonego
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start upfernando sonego
 
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...Venan Llona
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1fernando sonego
 
Automatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloudAutomatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloudSoftware Guru
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.jsGDG Cali
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryGonzalo Chacaltana
 
Consideraciones al escoger apps híbridas vs nativas
Consideraciones al escoger apps híbridas vs nativasConsideraciones al escoger apps híbridas vs nativas
Consideraciones al escoger apps híbridas vs nativasSoftware Guru
 
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....Yhorby Matias
 
DotNetNuke - CMS y plataforma de aplicaciones en Windows Azure
DotNetNuke - CMS y plataforma de aplicaciones en Windows AzureDotNetNuke - CMS y plataforma de aplicaciones en Windows Azure
DotNetNuke - CMS y plataforma de aplicaciones en Windows Azureintelequiass
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0Alfredo García Lavilla
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...campus party
 
An evening with... Microservices - Session 1
An evening with... Microservices - Session 1An evening with... Microservices - Session 1
An evening with... Microservices - Session 1Arkhotech
 

Similar a Creando aplicaciones multi-tenant con .NET Core (20)

Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]
 
Netcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en AzureNetcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en Azure
 
vOpenUy: Construye tu aplicación Multi-Tenant
vOpenUy: Construye tu aplicación Multi-TenantvOpenUy: Construye tu aplicación Multi-Tenant
vOpenUy: Construye tu aplicación Multi-Tenant
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start up
 
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...
Curso Especialista Marketing Digital Empresa Digitala Bizkaia - Conceptos Ini...
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1
 
Automatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloudAutomatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloud
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.js
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-Memory
 
Consideraciones al escoger apps híbridas vs nativas
Consideraciones al escoger apps híbridas vs nativasConsideraciones al escoger apps híbridas vs nativas
Consideraciones al escoger apps híbridas vs nativas
 
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
 
DotNetNuke - CMS y plataforma de aplicaciones en Windows Azure
DotNetNuke - CMS y plataforma de aplicaciones en Windows AzureDotNetNuke - CMS y plataforma de aplicaciones en Windows Azure
DotNetNuke - CMS y plataforma de aplicaciones en Windows Azure
 
Principios de cloud native
Principios de cloud nativePrincipios de cloud native
Principios de cloud native
 
Commit conf arquitectura-microservicios_v1.0
Commit conf  arquitectura-microservicios_v1.0Commit conf  arquitectura-microservicios_v1.0
Commit conf arquitectura-microservicios_v1.0
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
 
An evening with... Microservices - Session 1
An evening with... Microservices - Session 1An evening with... Microservices - Session 1
An evening with... Microservices - Session 1
 
Webinar, entendiendo que es un VPS
Webinar, entendiendo que es un VPSWebinar, entendiendo que es un VPS
Webinar, entendiendo que es un VPS
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 

Más de Nacho Fanjul Corteguera

Buscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosBuscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosNacho Fanjul Corteguera
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...Nacho Fanjul Corteguera
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitivaNacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Nacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + AzureNacho Fanjul Corteguera
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarNacho Fanjul Corteguera
 
Azure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarAzure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarNacho Fanjul Corteguera
 

Más de Nacho Fanjul Corteguera (20)

Testing efectivo en ASP Net Core
Testing efectivo en ASP Net CoreTesting efectivo en ASP Net Core
Testing efectivo en ASP Net Core
 
Mensajes o eventos!
Mensajes o eventos!Mensajes o eventos!
Mensajes o eventos!
 
Testing efectivo en ASP Net Core
Testing efectivo en ASP Net CoreTesting efectivo en ASP Net Core
Testing efectivo en ASP Net Core
 
Buscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosBuscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdos
 
Event Grid, el efecto mariposa
Event Grid, el efecto mariposaEvent Grid, el efecto mariposa
Event Grid, el efecto mariposa
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitiva
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0
 
Reactjs, el ciclo de la vida
Reactjs, el ciclo de la vidaReactjs, el ciclo de la vida
Reactjs, el ciclo de la vida
 
Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube?
 
Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
Gapand KeyNote
Gapand KeyNoteGapand KeyNote
Gapand KeyNote
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> Publicar
 
The big ball of mud!
The big ball of mud!The big ball of mud!
The big ball of mud!
 
PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)
 
Azure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarAzure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicar
 

Creando aplicaciones multi-tenant con .NET Core

Notas del editor

  1. Yefim Natis es vicepresidente, distinguido analista y investigador en Gartner Research. El trabajo de Natis se centra en las tendencias clave en la innovación de plataformas: computación basada en eventos y estrategias de microservicios; continuo de la plataforma en la nube a través de IaaS, PaaS y SaaS; ecosistemas de negocios digitales; integración híbrida y plataformas de aplicaciones; y plataformas IoT. El Sr. Natis también investiga los modelos fundamentales de la arquitectura de software, incluidas las arquitecturas orientadas a servicios (EDA) y multigrano orientadas a servicios (SOA).
  2. Canonical name: registro que permite especificar el alias de un nombre de dominio. Muy útil para crear subdominios CNAME: certificado Wildcard: varios subdomino debajo de un dominio
  3. Con un subdominio solo seria necesaria un certificado SSL por puerto Con certificados SSL SAN*- Subject alternative name. A través del usuario ya que nos interesa controlar el numero de usuarios