tgoop.com/Java_Iibrary/1705
Create:
Last Update:
Last Update:
Наткнулся на такой пост от сеньора, про предварительные условия для System Design:
1. Понимание цели
Разберись, что именно ты строишь, кто будет пользоваться и для чего это нужно.
2. Профиль трафика (read-heavy vs write-heavy)
Если система в основном читает (много пользователей просматривают данные), делай упор на кэширование, индексацию, реплики для чтения. Пример: каталог Netflix, карточки товаров Amazon.
Если в основном пишут (много аплоадов, входящих данных), подойдут очереди, пакетная запись, eventual consistency. Пример: сообщения WhatsApp, данные IoT-датчиков.
3. Консистентность vs доступность
Строгая консистентность нужна там, где ошибка недопустима (банки, бронирование).
Eventual consistency подходит там, где можно жить с устаревшими данными (Instagram, аналитика).
4. Требования к задержке
Реалтайм — оптимизация под низкую задержку через кэш или предвычисления. Примеры: гейминг, Zoom, подтверждение платежей.
Асинхронно — очередь и фоновые воркеры. Примеры: e-mail рассылка, генерация отчётов.
5. Масштабируемость
Закладывай рост ×10. Пример: Google Docs начинался маленьким, но сейчас обрабатывает миллионы правок одновременно. Uber — тысячи поездок в минуту. Используй stateless-сервисы и горизонтальное масштабирование.
6. Паттерны доступа
Оптимизируй под то, какие данные и как часто читаются: поиск по гео/локации (geo-hash + ElasticSearch), быстрый доступ к часто используемым ID (Redis/Memcached).
7. Рост данных и партиционирование
Продумывай шардинг заранее (по пользователю, времени, гео). Пример: комментарии YouTube шардуются по ID видео.
Холодные данные сжимай или архивируй (Gmail, Google Drive).
8. Обработка отказов
Используй ретраи, фоллбэки, circuit breakers.
Если API падает по таймауту → повтор + настройка таймаута (пример: Amazon payment retry).
Если кэш недоступен → фоллбэк в БД (пример: Reddit загружает комментарии из БД).
9. Безопасность и авторизация
Авторизация: OAuth / JWT (пример: логин через Google или Spotify).
Защита от абузов и ботов: rate limiting, CAPTCHA (пример: Gmail signup, формы).
10. Нужно ли писать всё самому?
Некритичные фичи лучше вынести в SaaS или сторонние API:
Платежи — Stripe, PayPal.
Хранение медиа — Cloudinary, S3.
Уведомления — Firebase, SendGrid.
