Giter VIP home page Giter VIP logo

barcamp2023's Introduction

Unlocking the Power of Multi-tenancy (Spring Boot and Vaadin Flow)

front_page

Descargo de responsabilidad

  • La información proporcionada en esta presentación tiene como objetivo educativo y se basa en mi experiencia personal y conocimientos actuales. Si bien he hecho todo lo posible para garantizar la precisión y la actualidad de la información presentada, no puedo garantizar su exactitud completa.

  • El uso de las tecnologías mencionadas, está sujeto a los términos y condiciones de cada herramienta. Es responsabilidad del usuario realizar su propia investigación y cumplir con las directrices y políticas de cada tecnología antes de implementarlas en su entorno de producción.

  • Además, cabe señalar que las mejores prácticas y las soluciones presentadas en esta charla pueden variar según los requisitos y las circunstancias específicas de cada proyecto. Recomiendo encarecidamente realizar pruebas exhaustivas y consultar con profesionales capacitados antes de implementar cualquier solución en un entorno de producción.

  • En resumen, mientras que esta presentación busca proporcionar información útil y práctica, el uso de las tecnologías y las decisiones de implementación son responsabilidad del usuario final. No asumo ninguna responsabilidad por los resultados derivados de la aplicación de los conceptos discutidos en esta presentación.

    Recurso

    Presentación - Google Slide

Este proyecto Multi-Tenant, nos embarcaremos en la creación de una simulación de una agenda de contactos. En este escenario, la información sobre los contactos de diversas empresas se almacenará utilizando un enfoque de Schema-per-tenant (Esquema por tenant).

En lo que respecta a la autenticación, contemplaremos usuarios que pueden estar registrados en uno o varios tenants, utilizando las mismas credenciales. Sin embargo, se asignarán niveles de permisos distintos para cada tenant, asegurando así una gestión independiente de los accesos y privilegios.

  • Multi-Tenant: En un entorno Multi-Tenant, el software o sistema está diseñado para servir a múltiples clientes o " tenants". Cada tenant es una entidad independiente que utiliza los recursos del sistema, pero comparte la misma infraestructura subyacente. En tu caso, cada empresa que utiliza la simulación de la agenda de contactos se consideraría un "tenant".

  • Schema-per-Tenant: Este enfoque implica tener un esquema de base de datos separado para cada tenant. Cada tenant tiene su propia estructura de base de datos para almacenar la información de los contactos. Esto garantiza la segregación de datos entre tenants, lo que es crucial para la privacidad y seguridad de la información.

  • Autenticación: La autenticación permite a los usuarios acceder al sistema. En este proyecto, los usuarios pueden estar registrados en uno o varios tenants. Esto significa que un usuario puede tener acceso a la información de contactos de diferentes empresas utilizando las mismas credenciales.

  • Niveles de Permisos: Aunque los usuarios pueden tener acceso a varios tenants, se asignan niveles de permisos distintos para cada uno. Esto asegura que, aunque un usuario tenga acceso a múltiples empresas, sus privilegios dentro de cada tenant sean gestionados de manera independiente. Por ejemplo, un usuario puede tener permisos de administrador en un tenant y solo permisos de lectura en otro.

  • Gestión Independiente de Accesos y Privilegios: Al asignar niveles de permisos específicos para cada tenant, se logra una gestión independiente de accesos y privilegios. Esto significa que cada empresa puede controlar quién tiene acceso a su información de contactos y qué acciones pueden realizar. La gestión independiente es esencial para garantizar la seguridad y la privacidad de los datos de cada tenant.

  • Simulación de Agenda de Contactos: La simulación de una agenda de contactos implica la creación, actualización y eliminación de información de contactos para cada empresa. Puede incluir campos como nombre, número de teléfono, dirección, etc. La simulación debería reflejar de manera realista el manejo de contactos en un entorno empresarial.

Ejecutando la aplicación

El proyecto es un proyecto estándar de Maven. Para ejecutarlo desde la línea de comando, escriba make start (Mac & Linux), luego abra http://localhost:60269 en su navegador.

El comando make start, es una forma eficiente de automatización del proceso de configuración y ejecución de la aplicación en un entorno Docker. Esta abstracción simplifica enormemente, ya que permite poner en marcha la aplicación sin tener que preocuparse por los detalles específicos de la configuración de la aplicación y otros procesos de inicio.

Credenciales:

Usuario Contraseña
root 1234f
f.pena 1234f
m.perez 1234f

También puede importar el proyecto a su IDE de elección como lo haría con cualquier Proyecto Maven. Leer más en cómo importar proyectos de Vaadin a diferentes IDE ( Eclipse, IntelliJ IDEA, NetBeans, y VS Code).

Implementación en producción

Para crear una compilación de producción, llame a mvnw clean package -Pproduction (Windows), o ./mvnw clean package -Pproduction (Mac y Linux). Esto creará un archivo JAR con todas las dependencias y recursos de front-end, listo para ser implementado. El archivo se puede encontrar en la carpeta target una vez que se completa la compilación.

Una vez creado el archivo JAR, puede ejecutarlo usando java -jar target/barcamp.jar

Implementación usando Docker

Para construir la versión Dockerizada del proyecto, ejecute

mvn clean package -Pproduction
docker build . -t barcamp:latest

Una vez que la imagen de Docker esté correctamente creada, puede probarla localmente usando

docker run -p 60269:60269 barcamp:latest

barcamp2023's People

Contributors

fredpena avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

barcamp2023's Issues

🧚🤖 Pixeebot Activity Dashboard

DashList

👋 This dashboard summarizes my activity on the repository, including available improvement opportunities.

Recommendations

Last analysis: Sep 08 | Next scheduled analysis: Sep 15

Open

✅ Nice work, you're all caught up!

Available

✅ Nothing yet, but I'm continuing to monitor your PRs.

Metrics

What would you like to see here? Let us know!

Resources

📚 Quick links
Pixee Docs | Codemodder by Pixee

🧰 Tools I work with
SonarCloud | SonarQube | CodeQL | Semgrep

🚀 Pixee CLI
The power of my codemods in your local development environment. Learn more

💬 Reach out
Feedback | Support


❤️ Follow, share, and engage with Pixee: GitHub | LinkedIn | Slack

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.