88 lines
4.4 KiB
HTML
88 lines
4.4 KiB
HTML
<h2>Архитектурные подходы</h2>
|
|
<p class="subtitle">Выбери подход к построению сервиса транскрибации и протоколирования</p>
|
|
|
|
<div class="options">
|
|
<div class="option" data-choice="a" onclick="toggleSelect(this)">
|
|
<div class="letter">A</div>
|
|
<div class="content">
|
|
<h3>Монолит на Python (FastAPI)</h3>
|
|
<p><strong>Стек:</strong> FastAPI + Celery + PostgreSQL + Redis + React</p>
|
|
<p>Единое приложение: API, обработка задач, боты, веб-интерфейс — всё в одном репозитории и процессе (+ воркеры Celery для тяжёлых задач).</p>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>✓ Плюсы</h4>
|
|
<ul>
|
|
<li>Простота разработки и деплоя</li>
|
|
<li>Один язык, одна кодовая база</li>
|
|
<li>Быстрый старт — MVP за недели</li>
|
|
<li>Легко отлаживать</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>✗ Минусы</h4>
|
|
<ul>
|
|
<li>Масштабирование — только вертикальное</li>
|
|
<li>Боты, API, обработка связаны — падение одного влияет на всё</li>
|
|
<li>При росте код станет сложным</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="option" data-choice="b" onclick="toggleSelect(this)">
|
|
<div class="letter">B</div>
|
|
<div class="content">
|
|
<h3>Модульный монолит с очередями (рекомендация)</h3>
|
|
<p><strong>Стек:</strong> FastAPI + Celery + PostgreSQL + Redis + React/Vue</p>
|
|
<p>Единый деплой, но внутри — изолированные модули: API, транскрибация, генерация протоколов, боты мессенджеров. Общение между модулями — через очереди задач (Celery/Redis). Каждый модуль можно выделить в отдельный сервис позже.</p>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>✓ Плюсы</h4>
|
|
<ul>
|
|
<li>Баланс простоты и масштабируемости</li>
|
|
<li>Модули изолированы — падение воркера не роняет API</li>
|
|
<li>Легко выделить модуль в микросервис при росте</li>
|
|
<li>Один деплой, но чистая архитектура</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>✗ Минусы</h4>
|
|
<ul>
|
|
<li>Чуть больше начальной настройки чем чистый монолит</li>
|
|
<li>Нужна дисциплина разделения модулей</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="option" data-choice="c" onclick="toggleSelect(this)">
|
|
<div class="letter">C</div>
|
|
<div class="content">
|
|
<h3>Микросервисы (Docker Compose)</h3>
|
|
<p><strong>Стек:</strong> FastAPI сервисы + RabbitMQ/Redis + PostgreSQL + React + Docker</p>
|
|
<p>Каждый компонент — отдельный контейнер: API Gateway, Transcription Service, Protocol Generator, Telegram Bot, Lensa Bot, Web Frontend.</p>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>✓ Плюсы</h4>
|
|
<ul>
|
|
<li>Максимальная гибкость и масштабируемость</li>
|
|
<li>Независимый деплой каждого сервиса</li>
|
|
<li>Полная изоляция компонентов</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>✗ Минусы</h4>
|
|
<ul>
|
|
<li>Сложность: сеть, мониторинг, логи, оркестрация</li>
|
|
<li>Оверкилл для одного сервера</li>
|
|
<li>Долгий старт разработки</li>
|
|
<li>Сложная отладка</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|