← Назад к вопросам

В чём разница между монолитом и микросервисной архитектурой?

2.0 Middle🔥 191 комментариев
#Архитектура и паттерны

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Монолит vs Микросервисы: Архитектурные решения

Это выбор, который определяет судьбу всего проекта. Оба подхода имеют право на существование — вопрос в том, когда что использовать.

Монолитная архитектура (Monolith)

Монолит — это единое приложение, где весь функционал собран в одном коде:

Монолитное приложение
├── Auth service
├── User service
├── Product service
├── Order service
├── Payment service
├── Notification service
└── Reporting service

Преимущества монолита:

  • Простота в начале — легко создавать новые функции
  • Производительность — нет сетевых задержек между сервисами
  • Транзакции ACID — все операции в одной БД
  • Простота развёртывания — один Docker контейнер
  • Отладка — все в одном месте, легко трейсить ошибки
  • Меньше операционных задач — одна БД, один процесс

Недостатки монолита:

  • Масштабируемость — нельзя масштабировать отдельные сервисы
  • Зависимость — одна ошибка может сломать всё
  • Технологический lock-in — очень сложно менять язык
  • Медленные разработчики — большая кодовая база сложна
  • Синхронизация команд — все разработчики мешают друг другу
  • Развёртывание — нужно перезагружать всё приложение

Микросервисная архитектура (Microservices)

Микросервисы — это множество независимых приложений, каждое отвечает за одну функцию:

Auth Service (8001) → PostgreSQL
User Service (8002) → PostgreSQL
Product Service (8003) → PostgreSQL
Order Service (8004) → PostgreSQL
Payment Service (8005) → PostgreSQL
Notification Service (8006) → Redis

Преимущества микросервисов:

  • Масштабируемость — можешь масштабировать каждый сервис независимо
  • Независимость — сбой одного сервиса не ломает другие
  • Скорость разработки — команда работает над своим сервисом
  • Гибкость технологий — каждый сервис на своём языке/фреймворке
  • Быстрые деплои — обновляешь только нужный сервис
  • Производительность по частям — оптимизируешь то, что нужно

Недостатки микросервисов:

  • Сложность — нужна глубокая архитектура
  • Сетевая задержка — синхронизация между сервисами медленная
  • Консистентность — нет глобальных ACID транзакций
  • Операции — много БД, логирования, мониторинга
  • Тестирование — сложнее интеграционные тесты
  • Разработка — нужно поднять 6+ сервисов локально

Практическое сравнение

Монолит на FastAPI:

from fastapi import FastAPI

app = FastAPI()

@app.post("/api/v1/users")
async def create_user(user: UserSchema):
    db_user = await db.create_user(user)
    await send_notification(db_user.email)
    await log_audit("user_created", db_user.id)
    return db_user

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Микросервисы:

# user-service/main.py
from fastapi import FastAPI
import httpx

app = FastAPI()

@app.post("/api/v1/users")
async def create_user(user: UserSchema):
    db_user = await db.create_user(user)
    
    async with httpx.AsyncClient() as client:
        await client.post(
            "http://notification-service:8006/api/v1/notify",
            json={"email": db_user.email}
        )
    
    return db_user

Таблица сравнения

КритерийМонолитМикросервисы
МасштабируемостьВертикальнаяГоризонтальная
Скорость (начало)БыстроМедленнее
Скорость (масштаб)МедленноБыстро
ТранзакцииACID гарантииEventual Consistency
РазвёртываниеОдно10+ приложений
ОтказоустойчивостьОдна точка отказаРаспределённые
ТехнологииОдин стекМножество
ОперацииПростыеСложные (Kubernetes)

Когда что использовать

Монолит подходит если:

  • Новый проект (стартап, MVP)
  • Небольшая команда (1-5 разработчиков)
  • Простой бизнес (не много интеграций)
  • Низкие требования к масштабированию
  • Бюджет ограничен

Микросервисы нужны когда:

  • Приложение выросло (>100K LOC)
  • Большая команда (>10 разработчиков)
  • Высокая нагрузка (>10K RPS)
  • Разные части масштабируются по-разному
  • Нужна гибкость в технологиях
  • Есть бюджет на операции (DevOps инженеры)

Вывод

Это не выбор монолит ПЛОХО, микросервисы ХОРОШО. Это выбор инструмента для конкретной задачи. Начни с монолита, переходи на микросервисы когда монолит ломается под нагрузкой.