Skip to content

Current State Architecture

plutogr edited this page May 23, 2026 · 2 revisions

Архитектура и зависимости

Обновлено: 2026-05-23

Runtime-схема

flowchart LR
    FE[Frontend] --> GW[Gateway]
    GW --> ID[Identity]
    GW --> CAT[Catalog]
    GW --> BKG[Booking]
    GW --> CH[Chat]
    GW --> MED[Media]

    BKG -- gRPC --> CAT
    BKG -- gRPC --> ID
    CH -- gRPC --> BKG

    ID --> PG[(PostgreSQL)]
    CAT --> PG
    BKG --> PG
    CH --> PG
    MED --> PG
    GW -. optional .-> REDIS[(Redis)]
    CH -. optional .-> REDIS
    ID -. optional .-> REDIS
    MED --> MINIO[(MinIO/S3)]
Loading

Роли сервисов

Компонент Роль
Gateway reverse proxy, auth policy, cookie flow, rate limit, health aggregation
Identity регистрация/логин/refresh/logout/профиль, JWT, gRPC user summary
Catalog каталог туров/направлений, CRUD туров, gRPC tour snapshot
Booking заявки, статусы, предложения, избранное, gRPC validate access
Chat история сообщений + realtime, проверка доступа через Booking gRPC
Media файлы и превью, presigned URL, owner-only delete

Порты (актуально в коде/compose)

Компонент Локальный запуск Docker host
Gateway 5166 (launch profile) 5001:8080
Identity 5010 5010:8080
Catalog 5020 5020:8080
Booking 5030 5030:8080
Chat 5040 5040:8080
Media 5050 5050:8080
PostgreSQL - 5433:5432
Redis - 6379:6379
MinIO - 9000:9000, 9001:9001
Frontend 5173 (vite dev) 3000:80 (compose profile full)

Ключевые зависимости по сервисам

Сервис БД Redis S3/MinIO Межсервисно
Gateway - optional - HTTP к Identity/Catalog/Booking/Chat/Media
Identity IdentityDb optional - gRPC server (GetUserSummary)
Catalog CatalogDb - - gRPC server (GetTourSnapshot)
Booking BookingDb - - gRPC clients к Identity/Catalog; gRPC server для Chat
Chat ChatDb optional - gRPC client к Booking + SignalR
Media MediaDb - required HTTP only

Cross-cutting (единый слой)

  • JWT-валидация: Shared.Infrastructure/JwtAuthenticationExtensions
  • gRPC auth header x-internal-auth: GrpcAuthInterceptor/GrpcAuthCallOptionsFactory
  • Correlation ID middleware
  • Global exception middleware (ProblemDetails)
  • Shared auth policies/roles: RequireAuthenticated, RequireManager, RequireAdmin, RequireManagerOrAdmin; роли Client, Manager, Admin

Ключевые env vars

  • Общие:
    • JwtSettings__SigningKey, JwtSettings__Issuer, JwtSettings__Audience
    • GrpcSettings__InternalServiceToken
    • ASPNETCORE_RUN_MIGRATIONS
  • По сервисам:
    • Identity: ConnectionStrings__IdentityDb, ConnectionStrings__Redis (optional)
    • Catalog: ConnectionStrings__CatalogDb
    • Booking: ConnectionStrings__BookingDb, GrpcClients__CatalogServiceUrl, GrpcClients__IdentityServiceUrl
    • Chat: ConnectionStrings__ChatDb, ConnectionStrings__Redis (optional), GrpcClients__BookingServiceUrl
    • Media: ConnectionStrings__MediaDb, Storage__*, Upload__*
    • Gateway: ConnectionStrings__Redis, RateLimiting__*, Cookie__*, ReverseProxy__Clusters__*

См. также:

Clone this wiki locally