Multi-Tenancy with Next.js

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Slides
Rate this content

En el panorama digital actual, la multiinquilinidad se ha convertido en una arquitectura crítica para plataformas SaaS, mercados y soluciones empresariales. Next.js ha evolucionado continuamente, lo que lo convierte en una opción cada vez más popular para construir aplicaciones full-stack.
Con cada iteración, se ha vuelto aún más fácil desarrollar aplicaciones multiinquilino escalables. Hablemos sobre por qué la multiinquilinidad es vital y cómo las características de Next.js, como el enrutamiento dinámico, el middleware mejorado y las funciones de borde, simplifican el proceso de construcción y escalado de aplicaciones multiinquilino. Hablaremos sobre las mejores prácticas, discutiremos escenarios del mundo real y veremos algunos ejemplos en acción. Únete para ver cómo puedes aprovechar Next.js para crear aplicaciones multiinquilino seguras, eficientes y escalables.

This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.

Chakit Arora
Chakit Arora
12 min
22 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola y namaste, Nueva York. Estoy emocionado de hablar sobre la construcción de aplicaciones multiinquilino escalables con Next.js. Cubriremos qué es la multiinquilinidad, sus ventajas, consideraciones clave y cómo Next.js ayuda en el desarrollo. Antes de comenzar con la multiinquilinidad, vamos a entender qué es un inquilino. En la arquitectura multiinquilino, todos los inquilinos comparten la misma aplicación pero tienen diferentes accesos, roles y permisos. El mantenimiento fácil, la eficiencia, la escalabilidad y la rentabilidad son algunos de los beneficios de la multiinquilinidad. Sin embargo, los desafíos incluyen la escalabilidad, el aislamiento, la seguridad y la personalización. Next.js permite organizar fácilmente diferentes dominios y rutas. El enrutamiento dinámico en Next.js permite la personalización de diseños para cada inquilino, asegurando una apariencia y sensación personalizada. El enrutamiento de API de Next.js permite el aislamiento de la obtención de datos para diferentes inquilinos. El middleware puede manejar la validación de solicitudes y proporcionar características como autenticación, autorización, redireccionamientos del lado del servidor, redireccionamientos condicionales y aislamiento de datos. Next.js ofrece escalabilidad a través de la caché, un enfoque basado en componentes y modular, equilibrio de carga, funciones y plataformas sin servidor y diferentes tipos de representación. Next.js continúa evolucionando y es una opción popular para la arquitectura multiinquilino.

1. Introducción a la Multi-Tenencia

Short description:

Hola y namaste, Nueva York. Estoy emocionado de hablar sobre la construcción de aplicaciones escalables de múltiples inquilinos con Next.js. Cubriremos qué es la multi-tenencia, sus ventajas, consideraciones clave y cómo Next.js ayuda en el desarrollo. ¡Comencemos!

♪♪♪ ♪♪♪ ♪♪♪ ♪♪♪ Hola y namaste, Nueva York. Espero que todos estén bien y disfrutando de la conferencia hasta ahora. Muchas gracias por unirse a mi charla y realmente aprecio que estén aquí. Estoy realmente emocionado hoy de hablar sobre la construcción de aplicaciones escalables de múltiples inquilinos con Next.js. En esta breve charla, cubriremos qué es la multi-tenencia, cuáles son las ventajas de la multi-tenencia, qué medidas debes tener en cuenta al construir una aplicación de múltiples inquilinos y cómo nos ayuda Next.js en todo eso. Antes de comenzar, me gustaría presentarme. Mi nombre es Chakith Arora, soy un ingeniero de soluciones en Storyblok. Soy un desarrollador full-stack, soy un escritor de contenido técnico, me gusta estar involucrado en comunidades. Siempre estoy aquí y allá en los meetups, así que probablemente puedas encontrarme en algún lugar. Este es mi sitio web, como se menciona aquí, chakitharora.com, y también está mi Twitter, Arora Chakith, puedes contactarme en cualquier momento que desees. Así que sí, vamos a sumergirnos en el tema entonces.

2. Understanding Multi-Tenancy

Short description:

Antes de comenzar con la multi-tenencia, vamos a entender qué es un inquilino. Un inquilino es un grupo de usuarios que comparten el mismo o un acceso similar a una aplicación. En la arquitectura de múltiples inquilinos, todos los inquilinos comparten la misma aplicación pero tienen diferentes accesos, roles y permisos. La arquitectura puede manejar diferentes diseños, temas de color y más. Los beneficios de la multi-tenencia son numerosos.

Antes de comenzar con la multi-tenencia, necesitamos saber qué es un inquilino, ¿verdad? Entonces, ¿qué es exactamente un inquilino? Según la definición, un inquilino es algo que un grupo de usuarios o un grupo de personas que visitan tu aplicación, utilizan tu aplicación, comparten el mismo acceso o un acceso similar. Solo para darte un par de ejemplos, puedes ver que, por ejemplo, en tu sitio web, si alguien lo visita, los usuarios normales tendrán diferentes accesos, el sitio de e-commerce será algo diferente, el blog se alojará en un portal diferente, por ejemplo, habrá diferentes portales internos, portales de la empresa, y así sucesivamente. Para darte un ejemplo real de caso de uso, supongamos que hay una plataforma de pruebas, o algo así, donde los estudiantes ingresan y realizan pruebas, entonces habrá un inquilino que serán los estudiantes, habrá otro inquilino que serán los profesores, quienes crean las pruebas o las elaboran y ven las analíticas, y luego también habrá otro inquilino, digamos los administradores, quienes revisarán todo, agregarán profesores, les darán permisos, y así sucesivamente. Hoy en día, es bastante común tener este tipo de aplicaciones que lo tienen todo en uno. Pero también veamos un poco más en detalle cómo se ve. Sí, hablemos de qué es la multi-tenencia ahora. Y sí, quiero decir, para conocer la multi-tenencia, también necesitamos conocer la arquitectura de cómo se ve la arquitectura de múltiples inquilinos, así como la arquitectura de un solo inquilino. Entonces, veamos primero la arquitectura de un solo inquilino. Así es como se ve la arquitectura. Esto solía ser muy común hace unos años, y aún lo es. No hay nada malo en esto, pero discutiremos los beneficios de la multi-tenencia y todo eso. Pero así es como se ve una arquitectura de un solo inquilino. Entonces, tienes un inquilino, tal vez un estudiante, por ejemplo, lo que discutimos antes para una plataforma de pruebas. Tienen una aplicación separada para ellos y una base de datos separada para ellos. Luego, los profesores pueden tener aplicaciones separadas para ellos, bases de datos separadas para ellos, y así sucesivamente. Así es como se ve una arquitectura de un solo inquilino. Pero cuando pasamos a la arquitectura de múltiples inquilinos, todos comparten la misma aplicación, pero tienen diferentes accesos, tienen diferentes roles allí, tienen diferentes permisos allí, y así sucesivamente. Así es como se ve la arquitectura en ese caso. Entonces, no importa quién visite el sitio web, visite tu aplicación, será la misma aplicación, y la base de datos puede ser compartida o no, eso depende de la arquitectura, pero todos pueden compartir la misma aplicación con diferentes conjuntos de permisos, y así sucesivamente. Y sí, podemos hablar de muchos ejemplos en este caso. Estoy seguro de que todos están usando algo donde tienen algún tipo de acceso, y sus gerentes o administradores tienen diferentes accesos, y así sucesivamente. El ejemplo similar que discutimos antes. Entonces, sí, ese es el ejemplo básico, y así es como se ve la arquitectura en general. Cada inquilino puede visitar la misma aplicación, y luego la aplicación se encargará de todo para ellos. La aplicación mostrará un diseño diferente, la aplicación mostrará diferentes temas de color, la aplicación también puede ser completamente diferente.

Hablemos un poco sobre los beneficios de tener una arquitectura de múltiples inquilinos. Todos estos que se enumeran aquí son los beneficios, y esa lista puede seguir. También hay muchos más beneficios.

3. Benefits and Challenges of Multi-Tenancy

Short description:

La fácil mantenibilidad, eficiencia, escalabilidad y rentabilidad son algunos de los beneficios de la multi-tenencia. Sin embargo, los desafíos incluyen escalabilidad, aislamiento, seguridad y personalización. En Next.js, la detección del inquilino se puede hacer a través de subdominios, métodos basados en rutas o métodos basados en consultas.

El primero sería la fácil mantenibilidad. Como puedes ver, estás manteniendo solo una aplicación. Por supuesto, la aplicación puede tener diferentes bases de código, tal vez, pero puedes compartir parte del código, por lo que el mantenimiento es fácil. También puedes seguir un enfoque atómico donde puedes compartir muchos componentes. Es eficiente, y como estamos compartiendo todo, como estamos trabajando de esta manera, también es escalable y más barato, por supuesto. Si estás utilizando solo una aplicación, bases de datos similares, es bastante fácil mantener tres infraestructuras diferentes en comparación con mantener tres infraestructuras diferentes. Veamos también los desafíos que surgen con la multi-tenencia. El primero aquí es, por ejemplo, la escalabilidad. Si tienes aplicaciones completamente diferentes, a veces es más fácil escalar. Quiero decir, ahora tenemos muchas herramientas para escalar la arquitectura de múltiples inquilinos también, pero solo hablando de la estructura antigua, es bastante fácil, ¿verdad? Tienes una aplicación completamente separada para todo, por lo que puedes mantenerla como quieras. Puedes escalar de la forma que desees. El aislamiento era bastante fácil. En este caso, necesitamos mantener el aislamiento. Necesitamos asegurarnos de tener medidas para que nadie pueda acceder a los datos de otra persona o algo así, los datos de otro inquilino. Entonces, los estudiantes no pueden acceder a lo que ven los profesores y así sucesivamente. Lo mismo ocurre con la seguridad y la personalización. Necesitas tener diferentes tipos de personalización en su lugar. Sigamos adelante y veamos cómo funciona la multi-tenencia con Next.js. Entonces, lo que quiero hacer es cubrir rápidamente tres cosas básicas, como cuando el usuario llega, cuando el inquilino llega al sitio web, qué haces y cómo funcionan las cosas. Entonces, lo primero que se hace es detectar el inquilino. Pueden haber diferentes formas. Puedes tener estudiantes.miapp.com, puedes tener profesores.miapp.com y así sucesivamente. También podría ser basado en rutas, donde tienes miapp.com/profesores, miapp.com/estudiantes y muchas cosas más. Necesitamos, cuando alguien visita estos subdominios de nuestra plataforma, necesitamos identificar qué inquilino es. Así que eso es bastante fácil con Next.js en la actualidad. Simplemente puedes tener middlewares en su lugar y los middlewares pueden detectar el inquilino por ti. Lo mismo ocurre con las props del lado del servidor. Depende del caso de uso, pero las props del lado del servidor, que es otra característica de Next.js, también pueden permitirte identificar el inquilino y así sucesivamente. Esto también puede basarse en consultas, pero no he visto muchos ejemplos de esto basado en consultas. Puede ser subdominio o basado en rutas, pero es bastante fácil identificar el dominio y ese sería el primer paso.

4. Organizando Dominios y Enrutamiento Dinámico

Short description:

Next.js permite una fácil organización de diferentes dominios y rutas. El enrutamiento dinámico en Next.js permite la personalización de los diseños para cada inquilino, asegurando una apariencia y sensación personalizada. Funciones como generar parámetros estáticos simplifican el proceso, y se puede utilizar middleware a nivel de raíz.

Además, con Next.js, puedes tener estos diferentes dominios en su lugar. Puedes organizar fácilmente estos diferentes subdominios, diferentes rutas y demás. Pasemos al segundo paso, que es el enrutamiento dinámico. Tengo algunas capturas de pantalla aquí, que estaba revisando y tratando de crear para esta presentación. En este caso, también necesitamos enrutamiento dinámico. No quieres mostrar las mismas páginas a ambos inquilinos. En este caso, Next.js te brinda una muy buena manera de mantener todas estas cosas. Puedes tener rutas completamente separadas. Por ejemplo, en este caso, el inquilino 1 puede tener un diseño diferente, el inquilino 2 puede tener un diseño diferente, y esto es algo que es realmente importante. Quieres tener una apariencia y sensación personalizada para el inquilino que ingresa, luego puedes separarlos por completo mediante esto. Por supuesto, no tienes que hacer todo manualmente. Obtienes un montón de funciones con Next.js, no es necesario generar todas estas páginas. Puedes usar cosas como generar parámetros estáticos y demás para facilitar estas cosas. Solo lo menciono porque estas cosas se usan bastante con este tipo de estructuras de carpetas y demás. Luego, por supuesto, el middleware puede estar en algún lugar a nivel de raíz.

5. API Routing, Middleware, and Scalability

Short description:

El enrutamiento de API de Next.js permite aislar la obtención de datos para diferentes inquilinos. El middleware puede manejar la validación de solicitudes y proporcionar funciones como autenticación, autorización, redireccionamiento del lado del servidor, redireccionamiento condicional y aislamiento de datos. Next.js ofrece escalabilidad a través de la caché, un enfoque basado en componentes y modular, equilibrio de carga, funciones y plataformas sin servidor, y diferentes tipos de renderizado. Next.js continúa evolucionando y es una opción popular para la arquitectura multiinquilino.

Avanzando, digamos que ahora has identificado al inquilino, estás dentro de la aplicación, tienes una apariencia y sensación completamente diferente para el inquilino, pero ahora también depende de con qué interactúan. Nuevamente, no quieres obtener algo para ellos que no les pertenezca. En ese caso, el enrutamiento de API que Next.js también puede ser muy útil. Puedes ver que simplemente puedes hacer API/ID del inquilino, que puede ser cualquier cosa. También puedes separar las API de tal manera que puedas aislar la obtención de datos para diferentes inquilinos. Esto también se aplica a la seguridad. Puedes usar middlewares para este caso, para la validation de solicitudes, etc. Esta sería una forma general de cómo harías el enrutamiento de API también. Pasemos rápidamente a la otra diapositiva donde quiero resaltar un par de características más con Next.js que pueden ayudarte en esto. Ya hemos hablado varias veces sobre los middlewares, pero estas son todas las cosas enumeradas que los middlewares pueden ayudarte mientras construyes tu aplicación multiinquilino. Por ejemplo, authentication, autorización, redireccionamiento del lado del servidor, redireccionamiento condicional, aislamiento de datos, etc. Este es un fragmento muy básico aquí que puede ayudarte a entender cómo puede funcionar. Simplemente puedes dividir el dominio y redirigirlo al diseño que deseas. Así de fácil funciona el middleware.

Avanzando hacia el último tema, que es la scalability. Solo quiero hablar sobre cómo escalarías estas aplicaciones. En general, quiero hablar sobre la architecture o el ecosistema que tiene Next.js. Hay caché que puede ayudarte a escalar estas aplicaciones. Es un enfoque basado en componentes. Es un enfoque modular donde puedes compartir los modules. Puedes hacer equilibrio de carga fácilmente. Tienes un montón de funciones serverless, plataformas serverless que puedes usar con Next.js, que pueden realizar diferentes cosas para ti en diferentes momentos para diferentes inquilinos, por ejemplo. Luego hay diferentes tipos de renderizado que pueden ayudarte a mantener estas arquitecturas y escalar estas cosas. Ya hemos cubierto la authentication con el middleware, pero también hay diferentes formas en las que puedes hacer la authentication. Así es como escalas una aplicación multiinquilino con Next.js. Para concluir, esto es lo que siempre digo. Sé que Next.js ha estado aquí por un tiempo. También hay diferentes frameworks, pero al ver la forma en que Next.js está escalando en estos días, me gustaría decir que Next es Next.js. Next.js siempre está presentando características emocionantes y demás. Hoy en día es bastante común usar este tipo de frameworks junto con las capacidades que tienen para mantener la architecture multiinquilino. Eso es todo sobre la charla. Muchas gracias por estar aquí. En caso de que quieras comunicarte, nuevamente, ese es mi Twitter en la parte inferior izquierda. Siéntete libre de hacerlo. Espero que disfrutes el resto de la conferencia. Muchas gracias. Adiós.