Интернет можно представить как огромную книжную библиотеку. Он хранит огромное количество различной информации. Местами полезной, местами вредной, иногда мусорной. В этой библиотеке огромное количество пользователей — они постоянно берут почитать какие-то книги, приносят новые, а иногда вырывают листы и портят страницы. Так как библиотека большая и древняя, она состоит не только из новеньких ровных стеллажей, но и из груд различной макулатуры в дальних углах.
Яндекс Поиск в этой метафоре можно представить в виде автоматизированного каталога, который помогает быстро пройти по всем переулкам и найти нужную информацию. Но как он узнаёт, что она там лежит? В этом ему помогают сотни тысяч «пауков», которые и находят что где лежит в этой бесконечной библиотеке.
Наша команда занимается созданием таких «пауков», бродящих по всему интернету и выкачивающих данные для построения поисковой базы. Только скачиванием данных одновременно занимаются 1,5 тыс. машин, которые делают это с десятками тысяч RPS.
Вокруг этого создано много инфраструктуры, которая позволяет не качать одно и то же несколько раз, соблюдать пожелания сайтов к индексации и интенсивности скачивания. Короче, есть где развернуться и начинающему разработчику, и опытному архитектору.
Немного про нашу нагрузку в продакшне:
- До 1,5 млн RPS нагрузки на отдельные сервисы
- 13 ПБ данных и триллионы записей
- 300 тыс. RPS походов в интернет
- 5 тыс. инстансов, исполняющих наш код
Какие задачи вас ждут
Скачивание данных
Нам нужно поддерживать современные протоколы, аккуратно обходить баны, оптимизировать скорости прокачки. При том, что далеко не все владельцы сайтов представляют, что такое HTTP(S) (мы надеемся, что эти буквы хорошо вам знакомы).
Оптимизация выполнения JavaScript
Современный интернет сложно представить без скриптов, выполняемых прямо в браузере, и вам нужно будет оптимизировать выполнение JavaScript для получения контента.
Поддержка быстрых прокси
Мы умеем не только сами ходить в интернет, но и помогаем делать это различным сервисам Яндекса. И всем, конечно, хочется делать это быстро и на минимальном «железе».
Потоковая обработка данных
Полученное из интернета надо подготовить для потребителей. Это предстоит сделать быстро (у нас под капотом актор-система — надеемся, что вам это интересно).
Улучшение инфраструктуры для разработки и эксплуатации
Мы хотим иметь удобные условия для написания и релиза кода, поэтому вкладываемся в улучшение CI/CD, тестирование, Observability и прочее.
Мы ждем, что вы
- Уверенно владеете С++ (от 4 лет)
- Умеете писать и отлаживать многопоточный код
- Имеете опыт работы с Protobuf и gRPC (или желание разобраться в них)
- Представляете, как устроены компьютерные сети и хотите «подержать в руках» Curl или Wireshark
- Можете общаться на техническом языке: объяснять свои идеи и понимать коллег
- Знаете принципы микросервисной архитектуры
- Готовы профессионально расти и принимать новые вызовы, которые подкидывает безграничный интернет
Будет плюсом, если вы
- Владеете Go или JavaScript