Назад к проектам

multitenancy-microservices

Архитектурный демо-проект на Spring Boot для сравнения стратегий мультитенантности в микросервисах. В отдельных сервисах показаны изоляция через базу на tenant, схему на tenant и tenant-колонку.

Кратко

Демо микросервисов Spring Boot с паттернами tenant isolation

Демонстрирует: Компромиссы мультитенантности, границы сервисов, изоляция tenant

Ключевые возможности

  • Сравнивает модели изоляции: отдельная база, отдельная схема и tenant-колонка
  • Разделяет employee, organization, device и tenant registry по отдельным сервисам
  • Использует PostgreSQL, Consul, Docker Compose, Actuator и проверку tenant-заголовков для локального тестирования архитектуры

Задача

Сравнить стратегии tenant isolation в микросервисной системе, где у каждого сервиса разные ограничения владения данными.

Архитектура

Четыре Spring Boot сервиса моделируют границы employee, organization, device и tenant registry. PostgreSQL показывает изоляцию через database-per-tenant, schema-per-tenant и tenant-column, а Consul и Docker Compose отвечают за локальный service discovery и инфраструктуру.

Ключевые решения

  • Разнести стратегии изоляции по разным сервисам, чтобы trade-offs были видимыми и сравнимыми.
  • Использовать tenant headers и service boundaries, а не прятать мультитенантность в одной общей абстракции.

Компромиссы

  • Database-per-tenant усиливает изоляцию, но увеличивает operational overhead.
  • Tenant-column storage проще в эксплуатации, но требует строгой дисциплины запросов.

Моя роль

  • Спроектировал service boundaries, примеры tenant isolation, локальную инфраструктуру и validation flow.

Технологии

JavaSpring BootSpring CloudPostgreSQLConsulDocker

Что можно улучшить

  • Добавить centralized observability для tenant-aware request tracing.
  • Добавить security tests на нарушения tenant boundaries.

Архитектурный демо-проект на Spring Boot для сравнения стратегий мультитенантности в микросервисной среде. В репозитории собраны четыре сервиса и локальная инфраструктура для tenant-aware backend design: `employee-service`, `organization-service`, `device-service` и `tenant-service`.

Проект показывает несколько подходов к изоляции tenant-данных в одной системе, при этом границы сервисов остаются явными. Данные сотрудников используют модель database-per-tenant, данные организаций изолируются через schema-per-tenant, данные устройств хранятся с tenant-колонкой, а tenant service содержит общие метаданные арендаторов.