Зачем твоему краулеру Docker

Рассказываем о пет-проекте — веб-пауке или краулере данных с сайтов с использованием Docker. Объясняем, при чём здесь Docker.

1К открытий4К показов
Зачем твоему краулеру Docker

Docker — это инструмент, который позволяет создавать, развертывать и запускать приложения в контейнерах. Использование Docker для развертывания парсеров (или любых других приложений) имеет ряд преимуществ.

Преимущества Docker

Изолированность

Каждый Docker контейнер работает независимо. Это значит, что приложение будет работать одинаково в любой системе, на которой запущен Docker, независимо от установленных на этой системе библиотек и другого программного обеспечения. Это особенно полезно для парсеров, поскольку они могут требовать конкретные версии библиотек или других зависимостей.

Переиспользование

Docker позволяет создать образ, который затем может быть использован для создания новых контейнеров. Это означает, что вы можете настроить все необходимые для парсера зависимости один раз, а затем использовать этот образ для быстрого и легкого создания новых экземпляров парсера. В реальности многие сайты сопротивляются скрейпингу, потому умеют блокировать IP. Сменив виртуальную машину и обновив правила неактивности паука, вы потратите минимум усилий на восстановление работоспособности проекта. 

Все это делает продукт идеальным инструментом для масштабирования приложений. Если ваш парсер должен обрабатывать большой объем данных, вы можете просто создать дополнительные контейнеры для распределения нагрузки.

Безопасность

Docker обеспечивает дополнительный уровень безопасности, поскольку контейнеры изолированы от хост-системы. Это означает, что даже если парсер станет целью атаки, атакующий не сможет вмешаться в работу хост-системы.

Управление версиями и обновлениями

Docker позволяет легко управлять версиями и обновлениями приложений. Вместо ручного обновления каждого экземпляра парсера вы можете просто обновить Docker-образ и затем обновить его на всех машинах.

Недостаток Docker

В 2023 году все же бытует мнение, что Docker – трата времени. Полагаю, в таких случаях речь шла о готовом контейнере с очень нужным кодом: его нашли на просторах сети и развернули один раз, попутно ругаясь из-за возможных ошибок при подъеме контейнера. 

Проект: паук HeadHunter на Docker

Поисковый робот (веб-паук, краулер) — программа, являющаяся составной частью поисковой системы и предназначенная для обхода страниц Интернета с целью занесения информации о них в базу данных поисковика.

Пользователь GitHub с ником undadasea реализовал проект поиска вакансий на hh.ru с помощью docker и PostgreSQL:

Зачем твоему краулеру Docker 1

Если верить описанию, код проекта сохраняет вакансии в базу данных PostgreSQL в контейнере Docker. Так что мы определенно имеем дело с типовым пауком. Если вакансии больше нет на сайте, она помечается в базе данных как «закрытая». Мониторинг проводится раз в сутки.

Простым набором команд мы клонируем репозиторий на свою машину:

			git clone https://github.com/undadasea/headhunter-monitor.git
		

А затем разворачиваем контейнер:

			$ cd website-monitoring
$ sudo apt-get install docker-compose
$ docker-compose build
$ docker-compose up
		

И это все, как же радует такая лаконичность! Конечно, я опустила момент дотяжки алгоритма поиска под свои поисковые запросы, но об этом лучше написать отдельную статью.  Как вы уже догадались, помимо пауков в Docker упаковывают и другие категории ПО:

  • серверы, вроде Redis, Jenkins
  • базы данных, например, MongoDB
  • фреймворки машинного / глубокого обучения, такие как PyTorch, Tensorflow

Если верить статье datadoghq.com, несмотря на разногласия в комьюнити, Docker все же прижился в 25% IT-компаний:

Зачем твоему краулеру Docker 2
dabbling – “балующиеся” [продуктом], экспериментирующие с ним вне прода

Более того, вероятность его использования возрастает с ростом инфраструктуры:

Зачем твоему краулеру Docker 3

Вывод получается “с разветвлением”: если ты работаешь над крупным проектом, тебе, скорее всего, потребуется Docker, будь то паук или другой микросервис. В случае индивидуальных экспериментов разворачивание контейнера, хоть и демонстрирует преимущество в разрезе безопасности и воспроизводимости, легко становится тратой драгоценных ресурсов разработчика.

В ваших проектах используется Docker?
Да
Нет
Не знаю
Хочу посмотреть результаты
Следите за новыми постами
Следите за новыми постами по любимым темам
1К открытий4К показов