Статья опубликована в рамках: Научного журнала «Студенческий» № 7(135)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2
АНАЛИЗ ТЕХНОЛОГИЙ КОНТЕЙНЕРИЗАЦИИ ДЛЯ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ
ANALYSIS OF CONTAINERIZATION TECHNOLOGIES FOR THE DEVELOPMENT OF SOFTWARE PRODUCTS
Radmir Sakaev
student, Department of automated control systems, Ufa State Aviation Technical University,
Russia, Ufa
АННОТАЦИЯ
В статье обозреваются технологии контейнеризации, используемые в разработке программных продуктов, обосновывается их значимость. Приводится сравнительный анализ наиболее развитых востребованных контейнерных технологий, обозначаются их основные преимущества и недостатки с точки зрения процесса разработки программного обеспечения. В заключении предлагаются наиболее эффективные технологии контейнеризации для разрабатываемых программных продуктов с различными ключевыми требованиями, такими как безопасность, простота использования, масштабируемость, надежность работы с большим объемом данных.
ABSTRACT
The article reviews the containerization technologies used in the development of software products, substantiates their importance. A comparative analysis of the most developed demanded container technologies is presented, their main advantages and disadvantages from the point of view of the software development process are indicated. In conclusion, the most effective containerization technologies are proposed for developing software products with various key requirements, such as security, ease of use, scalability, and reliability of working with large amounts of data.
Ключевые слова: контейнеризация, контейнер, технологии контейнеризации, docker, core os rkt, lxc, mesos.
Keywords: containerization, container, containerization technologies, docker, core os rkt, lxc, mesos.
Введение. На данный момент большинство IT предприятий развертывают значительную часть своих программных компонент и ресурсов на виртуальных машинах (VM), данный подход называется «виртуализацией» и используется для решения проблемы зависимости программного обеспечения от окружения, в котором оно запускается. Например, если программный продукт необходимо запустить в системе, для которой данный продукт не предназначен, требуется создать некоторое изолированное окружение, и виртуализация позволит это осуществить. Однако, на практике часто встречаются ситуации, в которых необходимо запустить множество различных сервисов, имеющих различные зависимости от операционной системы, других сервисов и иного программного обеспечения. В таких случаях на развертывание всех необходимых программных продуктов уйдет крайне большое количество ресурсов, что влечет за собой большие финансовые и временные убытки.
Контейнеризация или контейнерные технологии – это способ виртуализации на уровне операционной системы: ядро операционной системы имеет возможность поддерживать сразу несколько адресных пространств виртуальной памяти, назначенных для хранения пользовательских приложений.
Контейнеры — это форма виртуализации операционной системы. Один контейнер может использоваться для запуска любого цифрового продукта, от небольшого микросервиса до более крупного приложения. Однако образ виртуальной машины включает полную операционную систему, образ контейнера, напротив, предполагает большую часть возможностей операционной системы от операционной системы сервера на машине. В образе контейнера должны находиться только все необходимые исполняемые файлы, двоичный код, библиотеки и файлы конфигурации. Благодаря этому контейнеры занимают намного меньше дискового пространства и значительно снижают объем ресурсов на свое облуживание.
Появление контейнерных технологий повысило эффективность и стабильность развертывания приложений, что положительно сказывается на циклах разработки программного обеспечения. Контейнеризация активно используется при сборке, тестировании приложений и их развертывании. Приложения, работающие в контейнерах, можно легко развернуть на нескольких различных операционных системах и аппаратных платформах.
В связи с большим ростом востребованности использования технологий контейнеризации имеет смысл изучение существующих контейнерных технологий и их сравнительный анализ.
По статистке лидируют следующие технологи контейнеризации:
− Docker
− Core OS rkt
− Mesos
− LXC Linux
Docker. Наиболее востребованная на данный момент технология контейнеризации, разработанная в 2013 году. В 2017 году использовалась в 99% контейнеров, на данный момент она несколько сдала позиции, но остается самой популярной в разработке с использованием технологий контейнеризации.
Обладает очень простой и быстрой настройкой, за счет чего развертывание происходит быстрее. При всей простоте развертывания, технология обладает широким набором инструментов и позволяют гибко управлять процессом. Docker можно использовать в самых разных средах, требования инфраструктуры не связаны со средой приложения. Контейнеры docker запускаются в изолированной среде и независимы друг от друга, что повышает стабильность развертывания. Наличие оркестратора контейнеров Swarm, позволяет управлять несколькими контейнерами, как одним контейнером, и позволяет настроить взаимодействие между контейнерами.
Core OS rkt. Вторая по востребованности технология контейнеризации, разработана в 2014 году. В 2018 году 12 процентов производственных контейнеров составляли rkt, на данный момент ее доля выше. Rkt поддерживает два типа изображений: docker и appc. Преимуществом rkt является его основанный на подах процесс, который работает с Kubernetes (также называемый «rktnetes»). Некоторые уникальные функции rkt включают поддержку модулей доверенной платформы (TPM). Он оптимизирован для контейнеров приложений, однако, по сравнению с Docker, разработчики могут найти меньше сторонних интеграций. В целом, совместимость rkt делает его идеальным для переносимости общедоступного облака и быстрого развертывания. Разработчики rkt уделили большое внимание безопасности: подключаемая изоляция контейнеров, а также криптографические примитивы помогают добиться хорошей защиты компонент.
Некоторые потенциальные недостатки включают несоответствие OCI (Инициативе Открытого Контейнера). Rkt больше не разрабатывает приложения и планирует использовать OCI, но пока она не поддерживается. Следует отметить, что технология все еще находится на стадии разработки и неизвестно, как она себя покажет в ближайшее время.
Mesos. Контейнерная технология Mesos занимает третье место по использованию в разработке программных продуктов. Представленная в 2009 году технология, занимает 4 процента, по состоянию на 2018 год. Как и rtk, технология поддерживает два типа изображений: docker и appc. Разработчики планируют внедрить OCI, и на данный момент следуют траектории развития Docker. Mesos обладает уникальной способностью индивидуально управлять разнообразным набором рабочих нагрузок, включая традиционные приложения. Широкий охват рабочих нагрузок Mesos обеспечивается его двухуровневой архитектурой, которая обеспечивает планирование с учетом приложений. Практика показывает, что лучше всего Mesos взаимодействует с фреймворками для приложений с большими данными. Стоит отметить возможность эластичного масштабирования приложения и базовой инфраструктуры от нескольких узлов до десятков тысяч узлов.
Недостатком данной технологии является отсутствие автономного запуска контейнеров, для этого необходим фреймворк Mesos.
LXC. Linux Containers – технология контейнеризации от Linux, представлена в 2008 году, сейчас имеет долю в ~1% от используемых технологий контейнеризации. В отличие от контейнеров Docker контейнеры LXC ведут себя как легкие виртуальные машины, есть возможность войти в свой контейнер LXC, относиться к нему как к ОС, установить приложение и службы, и он будет работать, как и ожидалось. LXC предлагает преимущества виртуальной среды в Linux, в основном это возможность изолировать ваши собственные частные рабочие нагрузки друг от друга. Это более дешевое и быстрое решение для реализации, чем виртуальная машина, но для этого требуются дополнительные знания и опыт. Технология очень недоработана до современных технологий контейнеров, у нее весьма низкая портативность, но при этом есть возможность многопроцессорного запуска, который снижает производительность развертывания.
Заключение. Современные модели разработки программных продуктов предусматривают автоматизацию таких процессов, как сбор приложения, его тестирование и развертывание. Такая технология, как контейнеризация в разы упрощает и ускоряет процессы в жизненном цикле программного обеспечения, начиная со стадии кодирования и отладки до стадии развертывания приложения.
На данный момент существует множество технологий контейнеризации, и достаточно трудно выделить самую эффективную, универсальную и надежную технологию. Но, в зависимости от требований к разрабатываемому продукту, можно выделить наиболее подходящую данному продукту технологию контейнеризации, которая будет удовлетворять основным требованиям приложения:
− в случае, если команде разработки требуется быстрая интеграция продукта и постоянное расширение его компонент, наиболее подходящей технологией контейнеризации будет являться Docker;
− в случае, если приоритетом при разработке является безопасность, наиболее надежной технологией контейнеризации является Core OS rkt;
− если приложение будет являться средой работы с большим объемом данных, требования производительности удовлетворит Mesos;
− при высоких запросах к масштабируемости технология контейнеризации Mesos является наиболее подходящей при разработке
Список литературы:
- Hlali A. The evolution of containerization and its impact on the Maghreb ports // Annals of Marine Science. 2019. № 3(1). C.1-5.
- Mojtaba Sh., Muhammad Ali B.,Liming Z. Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices // IEEE Access. 2017. №PP(99).
- Евстратов, В. В. Контейнеризация как современный способ виртуализации // Молодой ученый. 2020. № 49 (339). С. 7-9.
- Колесов, А.В. Виртуализация операционных систем и приложений // PC Week 2008 №10 С.16-18.
- Вичугова А.А. Автоматизация процесса разработки программного обеспечения: методы и средства // Прикладная информатика. 2016. Том 11. №3(63) С.65-69.
- The true benefits of moving to containers // IBM Developer. URL:htttps://developer.ibm.com/technologies/containers/articles/true-benefits-of-moving-to-containers-1/ (дата обращения: 18.02.2021)
- Microservices and containers // Avinetworks URL: https://avinetworks.com/what-are-microservices-and-containers/ (дата обращения: 17.02.2021)
- Kubernetes vs. Docker // Sumo Logic. URL: https://www.sumologic.com/blog/kubernetes-vs-docker/#:~:text=A%20major%20difference%20between%20Docker,runtime%20in%20order%20to%20orchestrate. (дата обращения: 18.02.2021)
- Docker vs. Vagrant, Yong Fu, OCI Software Engineer // Object Computing. URL: https://objectcomputing.com/resources/publications/sett/march-2015-docker-vs-vagrant (дата обращения: 16.02.2021)
- Docker vs. Kubernetes vs. Apache Mesos // d2iq. URL: https://d2iq.com/blog/docker-vs-kubernetes-vs-apache-mesos (дата обращения: 19.02.2021)
- Маркелов А.А. Работа с контейнерами Docker // Системный администратор. 2017. №1-2 с.170-171.
- Евстратов, В. В. Оркестрация контейнеров на примере Kubernetes // Молодой ученый. 2020. № 51 (341). С. 11-13.
- Основы современной контейнеризации // Innostage. URL: https://innostage-group.ru/blog/review/osnovy-sovremennoy-konteynerizacii/ (дата обращения: 18.02.2021)
- Containerization Approaches for the IIoT // missioncritical URL: https://www.missioncriticalmagazine.com/articles/92943-containerization-approaches-for-the-industrial-internet-of-things (дата обращения: 18.02.2021)
- Силаков Д. Apache Mesos // Системный администратор. 2018. №10 с.191-192.
- LXC // Admin magazine URL: https://www.admin-magazine.com/Archive/2015/30/LXC-1.0 (дата обращения: 17.02.2021)
Оставить комментарий