Hacker News Digest

16 августа 2025 г. в 07:38 • seangoedecke.com • ⭐ 821 • 💬 348

OriginalHN

#system-design#cqr#stateless#stateful#databases#api#microservices#conways-law#kiss

Good system design

Всё, что я знаю о хорошем системном дизайне

Системный дизайн — это то, как мы собираем сервисы, а не строки кода. Его примитивы: серверы, БД, кэши, очереди, прокси и т.д.

Хороший дизайн выглядит скучно: ничего не ломается, задачи решаются проще, чем ожидалось. Сложные системы с CQRS, консенсусом и прочими фокусами часто компенсируют плохие решения. Сложное должно расти из простого, а не строиться сразу.

Состояние и его минимизация
Сложность — в управлении состоянием. Stateless-сервисы (например, конвертер PDF → HTML) перезапускаются и живут вечно. Stateful-сервисы могут «испортиться» и требуют ручного лечения. Поэтому:

  • Один сервис пишет в БД, остальные общаются с ним по API/событиям.
  • Чтение иногда проще делать напрямую, но писать — только через «владельца» данных.

Базы данных
Главный компонент.

  • Схема: читаемая человеком, достаточно гибкая, но не «всё в JSON».
  • Индексы: под самые частые запросы, не больше.
  • Узкие места: обращения к БД часто тормозят всё.