🗓 36-я годовщина IMDb — Internet Movie Database
🗓 36-я годовщина IMDb — Internet Movie Database 17 октября 1990 года Кол Нидхэм опубликовал в USENET-группе rec.arts.movies набор Unix shell-скриптов для поиска по спискам фильмов. Так родилась IMDb — на сегодня крупнейшая онлайн-база данных о кино, телевидении и видеоиграх. И вот тут интересно рассмотреть как менялся техстек этого проекта: В 1990 это были Unix shell-скрипты и текстовые файлы, а поиск выполнялся прямо из терминала ОС. К 1995 это был уже сайт, контент стал доступнен через браузер. Внутреннее ПО было написано с нуля на Perl. В 1998 проект IMDb покупает Amazon и в несколько итераций буквально перекраивает техстек. Для начала они перенесли контент из файлов в БД под управлением MySQL. А позднее провели куда более мощные преобразования. Сегодня «под капотом» у проекта IMDb гибридная архитектура на AWS: • Amazon DynamoDB — NoSQL и key-value БД; • Amazon Neptune — графовая БД для хранения связей между сущностями (knowledge graph); • Amazon OpenSearch — полнотекстовый поиск; • AWS Lambda + federated GraphQL — 19 субграфов (graphlets) и единый шлюз для клиентов (в IMDb данные для каждого уникального запроса параллельно извлекаются из 19 коллекций); • Amazon S3 + CloudFront — хранение и раздача статики, предрасчитанных индексов и трейлеров. И отдельно про «Магический поиск» (Magic Search): каждый, кто хоть раз пользовался IMDb отмечал, что она нереально быстро выдает информацию в ответ на Ваши запросы. Результаты появляются мгновенно, пока Вы набираете запрос. Как это работает? Предположим, что Вы набрали «sta» и получили в ответ киноэпопею Star Wars, сериал Star Trek и актера Сильвестра Cталлоне. IMDb заранее рассчитала все осмысленные варианты, куда входит набранное Вами сочетание букв. Данные по каждому такому варианту сохранены в виде готовых документов. Комбинации, которые ни к чему не ведут (вроде stb), не сохраняются. В результате поддерживаются в актуальном состоянии около 150 000 статических документов о фильмах и снявшихся в них актерах. Готовые файлы с этим контентом лежат в Amazon S3 и раздаются через Amazon CloudFront (CDN от Amazon). За счет использования CDN они физически близки к пользователю и отдача происходит намного быстрее, чем генерация любого динамического контента. По сути, динамический поиск превратили в раздачу статики. Сервер ничего не генерирует в момент запроса — он просто отдаёт Вам через CDN заранее подготовленный файл. Это и обеспечивает ту самую «магическую» скорость работы под огромными ежедневными нагрузками. В «кровавом enterprise» корпоративные архитекторы за такое бы руки вырвали любому, кто посмел бы такое предложить. Но здесь во главу угла было поставлено не абстрактное «соответствие канонам», а практическая польза, стоимость запроса и впечатления пользователей от работы с порталом. А потому IMDb живет и весьма шустро отвечает под нагрузкой более 200 миллионов запросов в день. Еще раз поздравляем этот интересный с инженерной точки зрения проект с 36 годовщиной его существования. Всем хороших выходных и отличного настроения!