Конференция по Data Science! 02 ноября 2023 Участвовать →

Docker - контейнеризация для Data scientist'ов

Data scientist'ы - специалисты с разным прошлым опытом. В сегодняшней динамичной среде крайне важно быстро реагировать на потребности клиентов и приносить пользу. Более быстрая полезность обеспечивает большую значимость для клиента и, следовательно, дает больше выигрышей для организации.

Информационные технологии всегда находятся под сильным давлением, чтобы повысить гибкость и ускорить предоставление новых функций бизнесу. Особой проблемой является развертывание нового или улучшенного кода приложения с частотой и оперативностью, требуемой типичной цифровой трансформацией. По сути, это непростая проблема, которая усугубляется также проблемами инфраструктуры. Например, время, необходимое для создания платформы для команды разработчиков, или насколько сложно создать тестовую систему, адекватно имитирующую производственную среду (см. IBM ). Docker ворвался в мир в 2013 году и повлиял на разработку программного обеспечения и привел к структурным изменениям в мире облачных вычислений.

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

Вы узнаете:

1. Зачем нужен Docker?

2. Где Docker работает в Data Science?

3. Что такое Docker?

4. Как работает Docker?

5. Преимущества использования Docker.

Зачем нужен Docker?

Image for post

Часто случается такое, что вы разрабатываете модель, код или создаете приложение, и оно всегда работает на вашем ноутбуке. Однако возникают определенные проблемы, когда мы пытаемся запустить ту же модель или приложение в производственной или тестовой среде. Это происходит из-за разницы в вычислительной среде между платформой разработчика и производственной платформой. Например, вы могли использовать ОС Windows или любое обновленное программное обеспечение, а на производстве они могли использовать ОС Linux или другую версию программного обеспечения.

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

Где Docker работает в Data Science?

В жизненном цикле Data Science или разработки программного обеспечения Docker появляется на стадии развертывания. 

Docker делает процесс развертывания очень простым и эффективным. Он также решает любые проблемы, связанные с развертыванием приложений.

Что такое Docker?

Изображение для публикации

Docker - это ведущая в мире платформа для создания программных контейнеров. Давайте рассмотрим реальный пример. Как мы знаем, наука о данных - это командный проект, и его необходимо координировать с другими областями, такими как клиентская часть (Front-end разработка), серверная часть (Backend), база данных и прочие области, от которых зависит запуск модели. Модель не будет развернута в одиночку, а она будет развернута вместе с другими программными приложениями для получения конечного продукта.

Image for post

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

Рассмотрим еще один практический пример из индустрии судоходства. 

Изображение для публикации

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

Теперь вернемся к нашей ситуации. У нас похожая проблема. Вместо товаров у нас есть разные компоненты (стек технологий), и было принято решение использовать контейнеры с помощью Docker. 

Docker - это инструмент, который упрощает создание, развертывание и запуск приложений с использованием контейнеров.

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

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

Как работает Docker?

Изображение для публикации

Разработчик или специалист по данным определит все требования (программное обеспечение, модель, зависимости и т.д.) в файле под названием Docker file. Другими словами, список шагов, используемых для создания образа Docker. 

Docker Image - это как рецепт блюда со всеми ингредиентами и этапами его приготовления. Проще говоря, это план, который содержит все программные приложения и зависимости, необходимые для запуска этого приложения в Docker.

Docker Hub - официальный онлайн-репозиторий, где мы можем сохранять и находить все образы Docker. В бесплатной версии есть возможность сохранить только 1 образ. Чтобы сохранить больше - потребуется подписка.

При запуске образа Docker мы можем получить контейнеры Docker. Контейнеры Docker - это примеры среды выполнения образа Docker, и эти образы могут храниться в онлайн-облачном репозитории, который называется Docker hub, или вы можете хранить их в собственном репозитории или в любом элементе управления версиями. Теперь эти образы можно использовать для создания контейнера Docker в любой среде (тестовой, производственной или любой другой). Затем все наши приложения запускаются внутри контейнера как для тестовой, так и для производственной среды. Теперь условия производственной и тестовой среды одинаковы, т.к. они работают в одном контейнере Docker. 

Преимущества использования Docker

1. Создавайте приложение только один раз

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

2. Портативность

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

3. Контроль версий

Мы можем управлять версиями в Docker. Docker имеет встроенный контроль версий и может фиксировать изменения в нашем образе Docker и контролировать их.

4. Независимость

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

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

Спасибо за прочтение!

Источник

Поделиться записью
Вверх