Перевод 35 практических мыслей о системном дизайне от Рауля Джанго 😆
✅Основные принципы
1. Любая система — это компромисс → нельзя одновременно получить скорость, низкую стоимость и простоту.
2. Латентность накапливается → каждая добавленная миллисекунда на каждом слое превращается в боль для пользователя.
3. Масштабируемость ≠ производительность → одно про рост, другое про скорость.
4. Read vs Write пути → масштабирование каждого требует совершенно разных стратегий.
5. Проектируй под изменения, а не под идеал → требования будут меняться.
✅Базы данных и хранение
6. Индексы — это рычаг → колонки с высокой селективностью стоит индексировать, с низкой — чаще нет.
7. Репликация помогает чтению, партиционирование — записи → не путай эти вещи.
8. Dual writes — это иллюзия → без координации неизбежен рассинхрон.
9. Event store > очереди (иногда) → лучше трассируемость, хуже простота.
10. Инвалидация кэша — всё ещё самая сложная проблема → свежесть vs производительность — вечный компромисс.
✅Надёжность и согласованность
11. Идемпотентность спасает → ретраи без неё приведут к проблемам.
12. Fail fast, fail loud → тихие ошибки убивают системы.
13. Eventual consistency — это фича → а не баг, но только если бизнес это допускает.
14. Разрешение конфликтов в active-active — это бизнес-логика, а не инфраструктура.
15. Надёжность (durability) не бесплатна → синхронизация между регионами стоит денег и добавляет задержки.
✅Архитектурные паттерны
16. Микросервисы — это про организацию команды, а не про технологическую цель.
17. Сначала монолит, потом модульность, потом микросервисы → не прыгай раньше времени.
18. Choreography масштабируется, orchestration упрощает → выбирай по зрелости команды.
19. Serverless даёт фокус, но забирает контроль.
20. Очереди не убирают работу, они её сглаживают.
✅Наблюдаемость и эксплуатация
21. Трейсинг > логирование → логи говорят «что», трейсы — «почему».
22. Метрики деградируют без владельца → измеряй то, что кто-то реально использует.
23. Ретраи без backoff = DDoS на самого себя.
24. Dead-letter очереди — обязательны → в любой системе есть «ядовитые» сообщения.
25. Рычаги > крутилки → проектируй быстрые kill switch’и и механизмы ограничения blast radius.
✅Производительность и стоимость
26. Оптимизируй hot path, а не cold path.
27. Большинство узких мест — в базе данных, а не в коде.
28. Горизонтальное масштабирование лучше вертикального → пока координация не начинает всё ломать.
29. Тёплый кэш маскирует плохие запросы → проверяй и холодные старты.
30. Самый дешёвый ресурс — диск, самый дорогой — время.
✅Люди и процессы
31. Лучшая архитектура умирает без документации.
32. Design review — это не про диаграммы, а про компромиссы.
33. Маленькие PR — про скорость, большие — про контекст → нужен баланс.
34. Роль синьора — задавать неудобные вопросы «а что если».
35. Ни один дизайн не переживает первое столкновение с продом → но хороший — гнётся, а не ломается.
👉 @PythonPortal
Post #5665
6.07K

- 👍 16
- ❤ 8
- 🔥 6