TGViewer
Java Backend | YeaHub Java Backend | YeaHub @yeahub_java_backend · 920 subscribers
Post #370 430
image_2025-08-22_08-09-28.png587.6 KB
#полезное
😐 Наткнулся на такой пост от сеньора, про предварительные условия для 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.


👉Новости 👉База вопросов
  • 🔥 2
  • ❤ 1
  • 👍 1
More from @yeahub_java_backend
  1. Oct 8, 2026#Собес #aggregate #function 🤔 Что такое агрегатные функции в SQL? 💬 Кратко: Агрегатные ф…
  2. Oct 7, 2026#Собес #. 🤔 DIS Group задача . 💬 Вопросы: - Что такое Git и GitHub? 👉 Все вопросы из эт…
  3. Oct 5, 2026#Собес #bucket #hashmap 🤔 Что такое bucket в HashMap и что в нем хранится? 💬 Кратко: Buc…
  4. Oct 2, 2026#documentation #яндекс #алгоритмы 📚 Структурный подход к алгоритмам: от теории к практике…
  5. Oct 1, 2026#Собес #LLM #RAG #metrics 🤔 Какие метрики собирал в проектах с LLM/RAG? Как доставлял их…
  6. Sep 30, 2026#Собес #oop #java #spring 🤔 Middle Java Backend разработчик в компанию Яндекс (Вертикали)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →