Инженерный разбор

Как устроен этот сайт

Инженерный разбор production-подхода к портфолио и публикационной платформе: архитектура, локализация, управление контентом, качество, безопасность и инфраструктура.

Задача

Сайт объединяет статьи, матрицу компетенций и разбор собственной архитектуры. Он должен быть полезным читателям, удобным для автора и одновременно показывать реальные инженерные решения, а не только список технологий.

Архитектура

Backend

Litestar, SQLAlchemy, Dishka и PostgreSQL образуют API-first backend с явными границами между доменной логикой, HTTP-слоем, инфраструктурой и хранением. Статьи, матрица компетенций, управление командой и служебные инструменты сохраняют собственные контракты, а общие механизмы остаются ниже транспортной границы.

LitestarSQLAlchemyPostgreSQLDishkaTaskIQ

Frontend

Angular hybrid SSR/CSR и backend-driven i18n дают SEO для публичных страниц, а read-only матрица и статьи отделены от protected workspaces: контентом управляют владелец, администраторы и модераторы, а командой — владелец и администраторы.

AngularSSRTypeScriptBootstrap

Infrastructure

nginx, Docker, MinIO с S3-compatible media storage, Valkey и TaskIQ разделяют edge routing, файлы, кэш, фоновые задачи и runtime frontend/backend контейнеров, а публичный трафик переключается между blue/green слотами после health checks. Для public-media PostgreSQL отслеживает жизненный цикл ссылок, а фоновая TaskIQ-задача безопасно удаляет неиспользуемые объекты после настраиваемого периода хранения и повторяет неудачные операции. Edge nginx самовосстанавливается после устойчивого отказа локального liveness endpoint и использует restart policy для перезапуска Docker или VPS.

nginxDockerMinIOValkeyGitHub Actions

Безопасный AI-доступ

Ограниченный Agent REST-контур смонтирован в основном Litestar-приложении без отдельного процесса и Unix-сокета. Приватную границу сохраняет отдельный WireGuard-bound nginx mTLS-listener с точным allowlist; публичный listener возвращает 404 для внутреннего пути и удаляет поддельный certificate header. Локальный stdio MCP-мост открывает ограниченный набор Draft-only операций без publish, generic CRUD, SQL, shell или URL fetch. Упрощение осознанно оставляет общими с backend процесс, роль БД, секреты и доступность: изоляция private application network и доверие к nginx остаются частью boundary.

Litestar RESTlocal stdio MCPWireGuardmTLSDraft-only

Инженерные решения

  • Clean Architecture: доменная логика не зависит от Litestar, SQLAlchemy или внешних сервисов.
  • RU/EN локализация разделена на UI-каталог и контентные поля, чтобы не смешивать интерфейс со статьями и матрицей.
  • Privacy-safe аналитика считает просмотры и реакции без cookies, raw IP, user-agent или сторонних идентификаторов.
  • Деплой оформлен как управляемый release process с ручным запуском: runtime-конфигурация собирается из manifest, CI quality gates отделены от deploy workflow, ручное подтверждение production environment остаётся явным, а blue/green переключение с health checks снижает риск релиза.

Качество и эксплуатация

Качество держится на коротких проверках: стиль, типы, unit/integration тесты, безопасность, SSR smoke, производительность и SQL-планы. Они остаются CI evidence перед релизом, а production deploy запускается вручную и переключает blue/green трафик только после health checks. В эксплуатации фоновые задачи, кэш, файлы и runtime контейнеры разделены по ответственности; публичные ассеты обслуживаются с CSP и immutable caching.

Что дальше

Ближайшие направления: RSS/Atom, публичный roadmap и дальнейшая работа над наблюдаемостью, производительностью и качеством контента.

Перейти к статьям