Глубокое погружение в проектирование: сокращатель URL + Pastebin
В этом уроке мы отрабатываем ответ на классический вопрос собеседования: построение «сокращателя URL» (сервис, который принимает длинный веб-адрес и возвращает короткий, как bit.ly). Мы простыми словами говорим о том, как сервис принимает запросы (API — способ, которым программы общаются друг с друг
System Design (планирование того, как построить крупное работающее ПО) похож на планирование города: дороги, которые двигают трафик, склады для хранения, светофоры, которые управляют нагрузкой, и ремонтные бригады, которые устраняют проблемы, — чтобы город продолжал гладко работать даже в самый плотный час пик.
- Классическое глубокое погружение
- Классический вопрос, который отрабатывается в этом уроке: проектирование «сокращателя URL» вроде bit.ly. Мы разбираем, как приходят запросы (API), как хранятся данные (схема — форма таблицы), как создаётся короткий код (генерация ID), как мы ускоряем работу с помощью быстрой памяти (кэш) и как растём до множества пользователей (масштаб).
- Компромисс
- Компромисс — это осознанный выбор между двумя хорошими вещами, когда нельзя полностью получить обе, — как выбор между быстрым и дешёвым. Цена есть всегда, и на собеседовании вы проговариваете её вслух интервьюеру.
- Эксплуатационная метрика
- Число, которое показывает, действительно ли решение работает для реальных пользователей (на продакшене — в работающей системе). Например: задержка (сколько времени занимает получение ответа), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько работы скопилось в очереди) или доля попаданий в кэш (как часто в быстрой памяти уже был ответ).