SlideShare una empresa de Scribd logo
1 de 32
Creando aplicaciones multi-tenant
¿Quién soy?
Nacho Fanjul
Software Developer
@ nfanjul@plainconcepts.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
•Configurable
•Seguridad
•Confiable
•Fácil restauración
•Entorno controlado
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
•Coste
•Mantenimiento
•Escalado
•Despliegue*
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/
Modelos de tenant – A nivel de datos
•Separación Lógica
•Separación Física
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
Problemas a resolver
• Arquitectura de la aplicación
• Resolver instancias de cada tenant
• Gestión de la información del tenant
• Login
• Aprovisionamiento nuevos tenant
• URL
• …
Estructura del proyecto
Contenedor IoC
Configurar middleware para mi contenedor IoC
Configurar mi contenedor IoC
Resolver el tenant
Creación de la BD
¿Porqué esta solución?
• Información relevante totalmente separada
• Alto nivel de personalización
• Ahorro en infraestructura
• Escalado infinito
• Fácil aprovisionamiento para nuevos tenant
• No tener que jugar con URLs
¿Preguntas?
Nacho Fanjul
Software Developer
@ nfanjul@plainconcepts.com
@nfanjul
https://github.com/nfanjul
Gracias!

Más contenido relacionado

La actualidad más candente

Cloud Computing
Cloud ComputingCloud Computing
Cloud Computingykro
 
NodeJS
NodeJSNodeJS
NodeJSIBM
 
AWS Lambda + Serverless Framework
AWS Lambda + Serverless FrameworkAWS Lambda + Serverless Framework
AWS Lambda + Serverless FrameworkChristian Melendez
 
Web App Container
Web App ContainerWeb App Container
Web App ContainerCDS
 
Monster migrations &amp; hybrid cloud
Monster migrations &amp; hybrid cloudMonster migrations &amp; hybrid cloud
Monster migrations &amp; hybrid cloudCloudmas
 
BrainSINS and AWS meetup Keynote
BrainSINS and AWS meetup KeynoteBrainSINS and AWS meetup Keynote
BrainSINS and AWS meetup KeynoteAndrés Collado
 

La actualidad más candente (7)

Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Introducción microsoft azure
Introducción microsoft azureIntroducción microsoft azure
Introducción microsoft azure
 
NodeJS
NodeJSNodeJS
NodeJS
 
AWS Lambda + Serverless Framework
AWS Lambda + Serverless FrameworkAWS Lambda + Serverless Framework
AWS Lambda + Serverless Framework
 
Web App Container
Web App ContainerWeb App Container
Web App Container
 
Monster migrations &amp; hybrid cloud
Monster migrations &amp; hybrid cloudMonster migrations &amp; hybrid cloud
Monster migrations &amp; hybrid cloud
 
BrainSINS and AWS meetup Keynote
BrainSINS and AWS meetup KeynoteBrainSINS and AWS meetup Keynote
BrainSINS and AWS meetup Keynote
 

Similar a Creando aplicaciones multi-tenant

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
 
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
 
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
 
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
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidadTuenti
 
azure-logic elementos de seleccion cuando utilizarlos
azure-logic elementos de seleccion cuando utilizarlosazure-logic elementos de seleccion cuando utilizarlos
azure-logic elementos de seleccion cuando utilizarloscarlos_eduardo_84
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresGermán Küber
 
.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service FabricGuillermo Javier Bellmann
 
Virtualizacion del puesto de trabajo
Virtualizacion del puesto de trabajoVirtualizacion del puesto de trabajo
Virtualizacion del puesto de trabajoAlejandro Marin
 
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...OpenExpoES
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start upfernando sonego
 
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
 
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos BásicosDesarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos BásicosGabriel Huecas
 
Virtual desktop infrstructure (vdi)
Virtual desktop infrstructure (vdi)Virtual desktop infrstructure (vdi)
Virtual desktop infrstructure (vdi)Omega Peripherals
 
Virtual desktop infrastructure
Virtual desktop infrastructureVirtual desktop infrastructure
Virtual desktop infrastructureOmega Peripherals
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesBitnami
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1fernando sonego
 

Similar a Creando aplicaciones multi-tenant (20)

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
 
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 ....
 
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
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
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
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidad
 
azure-logic elementos de seleccion cuando utilizarlos
azure-logic elementos de seleccion cuando utilizarlosazure-logic elementos de seleccion cuando utilizarlos
azure-logic elementos de seleccion cuando utilizarlos
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para Desarrolaldores
 
.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric
 
Virtualizacion del puesto de trabajo
Virtualizacion del puesto de trabajoVirtualizacion del puesto de trabajo
Virtualizacion del puesto de trabajo
 
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start up
 
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
 
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos BásicosDesarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
 
Virtual desktop infrstructure (vdi)
Virtual desktop infrstructure (vdi)Virtual desktop infrstructure (vdi)
Virtual desktop infrstructure (vdi)
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
4 miguel alfaro fournier
4   miguel alfaro fournier4   miguel alfaro fournier
4 miguel alfaro fournier
 
Virtual desktop infrastructure
Virtual desktop infrastructureVirtual desktop infrastructure
Virtual desktop infrastructure
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de Aplicaciones
 
Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1Azure bootcampo 2019 start up_v1
Azure bootcampo 2019 start up_v1
 

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

Notas del editor

  1. Tenant quiere decir inquilino, en el mundo del software viene a ser “cliente”, ejemplo aplicación servicios
  2. 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).
  3. Seguridad: La posibilidad de que un cliente acceda accidentalmente a los datos de otro. Confiables porque el rendimiento de la instancia de software de un cliente no se ve afectado por el rendimiento de otro cliente. Entorno controlado: en updates
  4. 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
  5. 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