Андрей Еслер – Наследник $$$ уровня 6 (страница 12)
— Получается граф. Каждая страница становится узлом, каждая ссылка связью между узлами. Сам алгоритм я ещё не написал, но все нужные данные паук уже собирает.
— Сколько их?
— Сейчас больше шестидесяти миллионов уникальных адресов в очереди и около ста миллионов обнаруженных связей между страницами. Часть отсеется. Часть адресов окажется мёртвой. Но для первых экспериментов данных уже достаточно.
Я некоторое время смотрел на исписанный лист.
Семь дней.
Я попросил человека собирать ссылки семь дней назад.
— Допустим, ты всё это сделаешь. Что потом?
Игнасио отложил карандаш.
— Потом нужно решить, что именно вы хотите построить.
— Поисковик.
Он покачал головой.
— Это как сказать, что вы хотите автомобиль. Один автомобиль возит семью, другой сорок тонн груза. Формально и то и другое автомобиль, но строятся они совсем по-разному.
Я сделал приглашающий жест.
— Продолжай.
— Если вам нужен поисковик только для Валентии, задача относительно простая. Национальный сегмент сети я сейчас оцениваю примерно в пятьдесят-шестьдесят миллионов действительно полезных страниц. Возможно, до ста миллионов, если собирать всё подряд, включая архивы, дубли и почти заброшенные сайты. При нынешней скорости до приемлемого покрытия мы доберёмся за несколько недель.
— А дальше?
— Дальше надо закончить индексатор, сделать нормальное ранжирование, посчитать ссылочный вес, научить систему лучше работать с формами слов и собрать всё так, чтобы индекс можно было постоянно обновлять, не останавливая поиск. Понадобится ещё резервное хранение и нормальное распределение нагрузки. Если один сервер упадёт, весь поиск падать не должен.
— Люди?
Игнасио задумался всего на несколько секунд.
— Если не отбирать их у Виды, ещё шесть человек.
— Почему именно шесть?
— Двое займутся индексом и ядром. Двое инфраструктурой, серверами и распределением данных. Один языком. Ещё один ранжированием вместе со мной. Лучше восемь, но с шестью можно начать.
— Срок?
— Через два месяца можно открыть поиск для пользователей. Через три-четыре он перестанет выглядеть как студенческая работа.
Я поднял бровь.
— Для всей страны?
— Да.
Это звучало слишком легко.
Не в том смысле, что задача действительно была лёгкой. Просто после всех разговоров о сложности поиска я ожидал услышать годы, сотни специалистов и суммы, от которых захочется лечь на пол. Вместо этого Лунтик сидел передо мной в медицинской маске и совершенно буднично рассказывал, как через несколько месяцев собирается дать целой стране собственный поисковик.
Я немного подумал.
— А если я хочу весь мир?
Игнасио замолчал.
Потом медленно откинулся на спинку кресла.
— Вот тогда начинается веселье.
— Я так и думал.
Он снова придвинул к себе лист.
— Национальный поиск — это десятки миллионов полезных страниц. Мировой уже на старте означает сотни миллионов. А если вы хотите не просто написать на главной странице, что ищете по всему миру, а действительно покрывать значительную часть известной сети, надо готовиться к миллиарду страниц и нескольким миллиардам обнаруженных адресов.
Я посмотрел на нарисованные кружочки.
— Если страниц в десять раз больше, значит работы тоже в десять раз больше?
— К сожалению, нет. Сами страницы можно просто добавить. Главная проблема начинается, когда всё перестаёт помещаться в одной системе. Индекс приходится делить между машинами. Запрос одновременно отправляется в несколько частей, после чего ответы собираются обратно и сортируются. Ссылочный вес приходится считать уже не на десятках миллионов страниц, а на сотнях миллионов. И всё это нельзя посчитать один раз и забыть.
— Почему?
— Потому что сеть меняется постоянно. Пока мы обходим вторую половину интернета, первая уже успевает измениться. Какие-то страницы появляются, какие-то исчезают, содержимое обновляется, ссылки меняются. Чем больше индекс, тем больше ресурсов уходит просто на поддержание его в актуальном состоянии.
— Сколько людей?
— Для первого мирового этапа двадцать пять-тридцать.
Я невольно поднял брови.
— Ты быстро вырос из шести человек.
— Вы быстро выросли из Валентии до всей планеты.
Туше.
— Это только программисты?
— Нет. Вся поисковая команда первого этапа. Ядро, индекс, пауки, ранжирование, инфраструктура. Потом понадобится больше. Если сервис станет популярным, появятся отдельные люди для борьбы со спамом. Отдельные команды для языков. Потом качество выдачи, новые типы документов, изображения, новости. Чем больше людей будут пытаться обмануть поиск, тем больше людей понадобится, чтобы им мешать.
— Серверы?
— Для Валентии хватит нескольких десятков хороших машин плюс отдельное хранение и резервирование. Для мира…
Он ненадолго замолчал, что-то прикидывая.
— Несколько сотен на первом этапе, если не пытаться сразу индексировать вообще всё. Но если полезем к миллиарду страниц и захотим регулярно обновлять базу, довольно быстро понадобится уже не сотни, а тысячи машин.
Вот теперь я начинал понимать, почему Матео решил меня предупредить.
— Срок?
— Валентия — два-три месяца до первого запуска. Мир — около шести месяцев, если нужен просто рабочий продукт. Год, если вы хотите сервис, которым мне самому не будет стыдно пользоваться.
— А после года?
— Будем улучшать его ещё лет десять.
Я невольно усмехнулся.
— Почему так долго?
Игнасио посмотрел на меня так, словно я только что задал самый странный вопрос за весь разговор.
— Потому что интернет за эти десять лет тоже не остановится, десять лет это просто чтобы умерить ваши ожидания, на самом деле процесс не имеет сроков как таковых.
Я некоторое время молчал, разглядывая его совершенно серьёзное лицо.
Сегодня у него уже двадцать три миллиона найденных страниц, рабочий поиск по восьми миллионам из них, почти сто миллионов связей между страницами и примерный план развития мировой поисковой системы на ближайшее десятилетие. Причём сам Игнасио воспринимал происходящее так, будто просто немного увлёкся дополнительным заданием.