Научная статья на тему 'Аналіз процесів використання Docker для побудови мікросервісів'

Аналіз процесів використання Docker для побудови мікросервісів Текст научной статьи по специальности «Прочие технологии»

CC BY
333
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
контейнеризація / розроблення мікросервісів / віртуалізація / Docker-технологія / containerization / development of microservice / virtualization / Docker-technology

Аннотация научной статьи по прочим технологиям, автор научной работы — Адрушко Олег Андрійович, Борзов Юрій Олексійович, Малець Ігор Остапович, Придатко Олександр Володимирович

Висвітлено складність командної роботи в процесі розробки програмних продуктів за умови віддаленого доступу. Доповнено знання про технології контейнеризації щодо особливостей використання Docker для побудови мікросервісів. Визначено особливості використання та основні переваги Docker-технологій у процесі побудови мікросервісів. Висвітлено переваги контейнерування над процесом віртуалізації машини як інструменту оптимізації використання обчислювальних ресурсів. Описано шляхи уникнення конфліктів між різними середовищами розробки шляхом використання Docker, за рахунок гарантії того, що мікросервіси додатків працюватимуть у відокремлених від операційної системи середовищах. Описано принцип оптимізації середовищ, із необхідними бібліотеками та мовами, для різних учасників проектної команди на основі Docker Hub. Визначено основні переваги застосування процесу контейнеризації над використанням віртуальних машин у межах одного серверу. Розглянуто архітектуру мікросервісу для кращого уявлення про особливості застосування Docker у процесі розроблення програм. Розглянуто архітектуру Docker та описано основні компоненти. Описано Docker-системи оркестрування контейнерами для динамічного управління додатками.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по прочим технологиям , автор научной работы — Адрушко Олег Андрійович, Борзов Юрій Олексійович, Малець Ігор Остапович, Придатко Олександр Володимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ANALYSIS OF THE USE OF DOCKER TO BUILD MICROSERVICES

The problem of the complexity of teamwork in the process of developing software products with remote access is described. The existing knowledge of containerization technologies is supplemented in the light of the peculiarities of using Docker for creating microservices. The features of use and the main advantages of Docker-technologies in the process of building micro-services are determined. The advantages of container technology over the process of machine virtualization as a tool for optimizing the use of computing resources are highlighted. Described ways of avoiding conflicts between different development environments by using Docker, due to the guarantee that application micro services will operate in completely separate environments from the operating system. The optimization principle of environments, with necessary libraries and languages, for various participants of a design team based on Docker Hub is described. A number of main advantages of using the containerization process over the virtual machines within a single server for the purpose of creating micro-services are determined. Microservice architecture is considered for better understanding of Docker application features in the process of program development. Docker architecture is considered and the main components are described. Description of Docker-system for containers dynamic management is presented. According to the analysis of the processes of using Docker results, there is a number of advantages that include optimizing the computing resources use, efficiency in separated from the OS environments and the possibility of orchestration by complex programs, which allows avoiding conflicts between different development environments in the process of development of microservices.

Текст научной работы на тему «Аналіз процесів використання Docker для побудови мікросервісів»

НЛТУ

ы КРАЖИ

»mutet*

Науковий bIch и к НЛТУУкраТни Scientific Bulletin of UNFU

http://nv.nltu.edu.ua https://doi.org/10.15421/40270920 Article received 22.11.2017 р. Article accepted 28.11.2017 р.

УДК 004.42

ISSN 1994-7836 (print) ISSN 2519-2477 (online)

El Correspondence author О. А. Andrushko info@symfoni-esm.com

О. А. Андрушко1, Ю. О. Борзов2,1. О. Малець2, О. В. Придатко2

1 Symfoni ESM - a Fujitsu Company, м. Осло, Норвегiя 2 Львiвський державний утверситет безпеки життeдiяльностi, м. Львiв, Украша

АНАЛ1З ПРОЦЕС1В ВИКОРИСТАННЯ DOCKER ДЛЯ ПОБУДОВИ М1КРОСЕРВ1С1В

Висвгтлено складшсть командно1 роботи в процеа розробки програмних продубив за умови в^аленого доступу. До-повнено знання про технологи контейнеризацп щодо особливостей використання Docker для побудови мжросервгав. Виз-начено особливоста використання та основнi переваги Docker-технологш у процесi побудови мжросервгав. Висвiтлено переваги контейнерування над процесом вiртуалiзацiï машини як шструменту оптимiзацiï використання обчислювальних ре-сурав. Описано шляхи уникнення конфлiктiв мiж рiзними середовищами розробки шляхом використання Docker, за раху-нок гарант того, що мiкросервiси додаткiв працюватимуть у вiдокремлених вiд операцiйноï системи середовищах. Описано принцип оптимiзацiï середовищ, iз необхiдними бiблiотеками та мовами, для рiзних учасникiв проектноï команди на основi Docker Hub. Визначено основш переваги застосування процесу контейнеризацп над використанням вiртуальних машин у межах одного серверу. Розглянуто архитектуру мiкросервiсу для кращого уявлення про особливоста застосування Docker у процеа розроблення програм. Розглянуто архiтектуру Docker та описано основш компоненти. Описано Docker-системи ор-кестрування контейнерами для динамiчного управлiння додатками.

Krnuoei слова: контейнеризащя; розроблення мшросервгав; вiртуалiзацiя; Docker-технолопя.

Вступ. Розроблення серверных веб-додатк1в значно змiнилося пiсля дебюту Docker'а. Поява Docker спрос-тила створення масштабованих та керованих додатк1в, побудованих за допомогою мжросервгав. Для кращого розумiння, що таке мiкросервiс i як Docker допомагае 1х реалiзовувати, розглянемо приклад. Уявiмо, що у команд веб-розробнишв працюе три програшсти, як для створення одного й того ж додатку використовують рiз-m операцiйнi системи: macOS, Windows та Debian. Пе-редусiм, кожне з перелiчених середовищ потребуе окре-мих унiкальних налаштувань. Окрiм цього, розробники повиннi встановити та налаштувати рiзнi бiблiотеки для сво1х мов програмування. Неминучим е той факт, що бiблiотеки та мови програмування конфлжтуватимуть мiж рiзними середовищами. Додаймо ще сервери для тестування та виконання, пiсля чого стае зрозумшим наск1льки складно забезпечити однаковi умови для вах середовищ.

Аналiз останшх досл1джень та публiкацiй. Почи-наючи з 2013 р., коли розробники Docker Inc. презенту-вали першу вераю iнструменту для вiртуалiзацiï рiвня операцiйноï системи, багато з них почали адаптовувати Docker пiд власш потреби. Разом iз цим проведено на-уковi дослвдження щодо визначення особливостей

ефективного використання Docker. У науковш працi (Musaev, Gazul & Anantchenko, 2014) розглянуто лабо-раторп вiртуалiзацiï, що дають змогу створювати вiрту-альнi лабораторiï на платформi Docker. Також, в огля-нутш працi наведено порiвняння архiтектури вiртуаль-них IТ-сервiсiв на основi Docker та вiртуальних машин, що дало тдстави до розроблення рекомендацiй щодо створення вiртуальних лабораторiй на основi контейне-рiв пiд загальним управлiння Docker.

У роботi (Belonozhko et al., 2016) проведено аналь тичний огляд наявних хмарних сервiсiв, а також апарат-них, програмних i оргашзацшних особливостей 1'х ре-алiзацiï. Значну увагу придiлено огляду Docker-шстру-ментiв, що дае змогу усввдомити його мiсце в техноло-пях створення хмарних сервiсiв.

Стаття (Korolov, Gavrikov & Smirnov, 2017) спрямо-вана на огляд та висвилення переваг процесу вiртуалi-зацiï, а також його впливу на використання обчислю-вальноï потужностi апаратно1' частини. Особливу увагу придшено огляду переваг ново1' технологiï вiртуалiзацiï-контейнеризацiï.

З проведеного аналiзу зрозумiло, що питання особливостей використання технологiï контейнеризацп Docker розкрито досить широко, проте все ж таки актуаль-

1нформащя про aBTopiB:

Адрушко Олег Андршович, Maricrp, технiчний консультант. Email: info@symfoni-esm.com

Борзов Юрм Олексiйович, канд. техн. наук, доцент кафедри управлшня проектами, шформацшних технологiй та

телекомушкацш. Email: borzovuo@ukr.net Малець 1гор Остапович, канд. техн. наук, доцент, професор кафедри управлшня проектами, шформацшних технологш та

телекомушкацш. Email: igor.malets@gmail.com Придатко Олександр Володимирович, канд. техн. наук, заступник начальника кафедри управлшня проектами, шформацшних

технолопй та телекомушкацШ. Email: o_prydatko@ukr.net Цитування за ДСТУ: Андрушко О. А., Борзов Ю. О., Малець I. О., Придатко О. В. Аналiз процеав використання docker для

побудови мiкросервiсiв. Науковий вкник НЛТУ УкраТни. 2017. Вип. 27(9). С. 95-98. Citation APA: Andrushko, О. А., Borzov, Yu. О., Malets, I. О., & Prydatko, O. V. (2017). Analysis of the Use of Docker to Build Microservices. Scientific Bulletin of UNFU, 27(9), 95-98. https://doi.org/10.15421/40270920

ними залишаються не розглянуп питання. Мета нашо! роботи полягае у доповненш знань про технологи кон-тейнеризацп в свiтлi особливостей використання Docker для побудови м^осервгав.

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

Виклад основного матер1алу дослiдження. Описана вище проблема е актуальною за умови побудови мо-нолiтних програм та стае ще нагальнiшою, якщо слду-вати сучаснiй тенденцп розроблення додатшв на базi мiкросервiсiв.

Оск1льки мшросервюи е автономними, незалежними прикладними блоками, кожен з яких виконуе лише одну конкретну бiзнес-функцiю, ix можна розглядати як невелик! самостшш програми. Що станеться, коли ство-рити десяток мiкросервiсiв для одного додатку? I що, коли необхвдно побудувати калька мiкросервiсiв з рiз-ними стеками теxнологiй? Дуже швидко команда прог-рамiстiв зiткнеться з багатьма перешкодами, осшльки розробники повинш керувати ще бiльшою к1льк1стю се-редовищ, нiж у традицiйному монолггному додатку.

Однак, iснуе рiшення - використання м^осервгав та контейнерiв для iнкaпсуляцп кожного такого сервiсу i Docker допомагае керувати цими контейнерами. Docker - це шструмент контейнерування, побудований на основi контейнерiв Linux, для забезпечення простого керування контейнерними додатками. Далi розглянемо переваги Docker для розробки мiкросервiсiв на основi аналiзу процесiв його використання.

Контейнерування, як альтернатива вiртуалiзацii, зав-жди могло вдосконалити спосiб створення додатк1в, а Docker, як шструмент контейнерування, часто порiв-нюеться з вiртуальними машинами.

Як вiдомо, вiртуальнi машини (VM) створено для оптимiзацii використання обчислювальних ресурсiв. За умови запуску шлькох вiртуальниx машин на одному серверi та розгортання кожного екземпляра програми на окремш вiртуальнiй машинi, забезпечуватиметься стабiльне середовище для кожного екземпляра. Однак, на жаль, масштабуючи програму, швидко виникне проблема, пов'язана з продуктивнiстю, оск1льки VM споживають багато ресурсiв.

Наведена схема (рис. 1) демонструе мiсце hypervisor у системi керування к1лькома операцшними (гостьови-ми) системами на одному сервера iзолюючи !х одна вщ одно! У найпростiшиx випадках, hypervisor допомагае зменшити ресурси, необxiднi для запуску дешлькох операцiйниx систем.

Осшльки мшросервюи подiбнi до невеликих додатшв, потрiбно розгортати мiкроконтролери для власних вiртуальниx екземплярiв (щоб забезпечити дискретне середовище). I варто погодитись з тим фактом, що присвоения всiеi вiртуaльноi машини для розгортання лише невелик частини додатку - не найефектившший варiант. Однак за допомогою Docker можна зменшити втрати продуктивностi та розгортати тисячi м^осервь сiв на одному серверi, осшльки контейнер Docker пот-ребуе набагато менше обчислювальних ресурав (Byli-na, 2016), нiж вiртуaльнi машини.

Рис. 1. Модель керування роботою VM з допомогою hypervisor

До цього моменту наш огляд зосереджувався на ке-руванш середовищами для одного додатка. Проте далi розглянемо випадок розроблення двох рiзних проектiв або тестування двох рiзних версiй того самого додатку. Конфлшти мiж вераями додатк1в або бiблiотеками у цьому разi неминyчi, i пiдгримка двох рiзних середо-вищ на однш VM е складним завданням. Тут доречно задати питання: "Чим Docker кращий за вiртyальнi машини?". На ввдмшу вiд роботи вiртyальних машин, Docker не потребуе постшного створення нових середо-вищ, намагаючись уникнути конфлiктiв. Docker гаран-туе, що мшросервюи додатк1в працюватимуть у власних середовищах, як повшстю вiдокремленi вiд опера-цiйноï системи.

Завдяки Docker, перед командою розробнишв не ви-никае необхiдностi примусово працювати в iдентичних середовищах. Натомють, один розробник може створи-ти стабшьне середовище з yсiма необхщними бiблiоте-ками та мовами, тсля чого зберегти це налаштування в Docker Hub. 1ншим розробникам залишаеться лише за-вангажити налаштування. Завдяки цш особливостi Docker може заощадити багато часу.

Зважаючи на описаш особливостi використання Docker, можна узагальнити основш переваги використання цiеï технологiï:

• зменшення часу запуску (контейнер Docker запускаеться за лiченi секунди, оскiльки контейнер - це лише процес операцiйноï системи. Запуск вiртyальноï машини з пов-ною ОС може тривати кшька хвилин);

• швидке розгортання (не мае необхщност створювати нове середовище. Членам команди веб-розробки по^б-но лише завантажити образ Docker, щоб запустити його на iншомy сервер^;

• зручне керування та масштабування контейнерiв (зни-щення та запуск контейнерiв швидше нiж знищення i запуск вiртyальноï машини);

• використання обчислювальних ресурив (можливiсть запуску бiльшоï кiлькостi контейнерiв, тж вiртyальних машин на одному сервер^;

• пiдгримка рiзних операцiйних систем (Docker працюе пiд Windows, Mac, Debian та iншi ОС).

Для кращого уявлення про особливостi застосування Docker у процесi розроблення програм, що базуються на м^осервюах, варто розглянути 1х архiтектyрy. Поч-немо з огляду простого мшросервюу.

Користу-

Контейнер Nginx

Контейнер MySQL

Рис. 2. Докеризований додаток (мiкросервiс)

Програма (м^осервк), зображена на рис. 2, скла-даеться лише iз трьох служб i дае змогу реалiзyвати блог для веб-сайту. Кожна зi служб, Nginx (веб-сервер), MySQL (база даних) i Wordpress (рyшiй блогу), шкапсу-люеться в контейнер. Архитектура Docker мiстить три основнi компоненти - образ, контейнери та реестри. Розглянемо кожен компонент окремо.

Образи (Docker Images) слугують шаблонами для створення Docker-контейнерiв. Контейнери, своею чертою, е екземплярами образiв та вважаються другим ос-новним компонентом в архiтектyрi Docker.

Реестри образгв (репозиторп). Отже, образи та контейнери - два основних компоненти архггектури Docker. Але де вони розташоваш? Уа контейнери в наведе-ному прикладi побудовано зi стандартних образiв, що збережено в Docker Hub (реестр^. Реестри надшей можливiстю додавання образiв та 1х завантаження з реестру.

Далi, для повноти аналiзy процесiв використання Docker, варто розглянути особливостi yправлiння сотнями або тисячами контейнерiв Docker на кшькох серверах.

Докер дае змогу розгортати м^осервюи один за одним на одному хосп (сервер^. Невеликий додаток, у прикладi вище, не потребуе складного управлшня. Але що робити у випадку, коли додаток збшьшуеться? Як розгорнути калька контейнерiв у кожному з дешлькох запущених серверiв? Як масштабувати щ сервери "догори" та "донизу"? Для виршення цих окреслених пи-тань, Docker включае системи оркестрування контейнерами.

Контейнерна оркестрова система (container orchestration system) - це додатковий шструмент, який необ-хщно використовувати з Docker. До середини 2016 р. Docker фактично не надав жодного конкретного способу керування додатками, побудованими з тисяч м^о-сервiсiв. Але тепер е Docker Swarm - вбудована платформа для оркестрування контейнерiв тощо.

Docker Swarm дае змогу використовувати Docker CLI для запуску команд, тому можна легко шщал1зува-ти групи контейнерiв, додавати та видаляти контейнери з цих груп.

Як хмарш ршення, як1 можуть допомогти запустити докерованi додатки та оркеструвати контейнери, пот-рiбно розглядати таю сервюи:

• Google Cloud Platform з тдтримкою Kubernetes;

• Amazon ECS. Web-сервери Amazon дають змогу використовувати службу Elastic Compute Cloud (EC2) для запуску та оброблення контейнерiв Docker;

• Azure Container Service е хостинговим ршенням, подiб-ним до Amazon ECS, i тдтримуе рiзнi способи для оркестрування докерованих додатюв, включаючи Kubernetes, DC / OS з Mesos та Docker Swarm.

Отже, використання мшросервгав та контейнерiв вважають ефективним сучасним способом створення масштабованих i керованих веб-програм. У разi не кон-тейнеризацп мiкросервiсy виникатимуть трyднощi пiд час 1х розгортання та керування. Саме тому, для уник-нення будь-яких проблем пiд час 1х розгортання, рекомендовано використання Docker. О^м цього, кон-тейнерна система оркестрування дае змогу ефективно керувати комплексними докеризованими програмами.

Висновки. За результатами проведеного аналiзy процесiв використання Docker означено низку переваг, яш полягають в оптимiзацiï використання обчислювальних ресурав, працездатностi у ввдокремлених вiд ОС середовищах та можливосп оркестрування ком-плексними програмами, що унеможливлюе виникнення конфлiктiв мiж рiзними середовищами розробки пiд час побудови мшросервгав.

Перелiк використаних джерел

Amazon Web Services. (n.d.). Amazon Web Services - cloud computing services. Retrieved from: http://aws.amazon.com/ru/ Belonozhko, P., Belous, V., Kutsevych, N., & Khramov, D. (2016). Free cloud hardware and software platforms. Analytical review. Science: Internet Magazine, 8(6). https://doi.org/10.15862/61 TVN616 Bylina, A. (2016). Automate the deployment of infrastructure for business. Problems and prospects of modern science, 4, 87-91. [in Russian].

Docker. (n.d.). Docker - Build, Ship, and Run Any App, Anywhere.

Retrieved from: https://www.docker.com/ Korolov, O., Gavrikov, I., & Smirnov, A. (2017). The economic role of virtualization in information systems. International scientific review, 5(36), 69-70. [in Russian]. Musaev, A., Gazul, S., & Anantchenko, I. (2014). The information infrastructure design of an educational organization using virtuali-zation technologies. Bulletin of the Saint Petersburg State Institute of Technology (Technical University), 27(53), 71-76. [in Russian].

О. А. Андрушко1, Ю. А. Борзов2, И. О. Малець2, А. В. Придатко2

1 Symfoni ESM - a Fujitsu Company, г. Осло, Норвегия 2 Львовский государственный университет безопасности жизнедеятельности, г. Львов, Украина

АНАЛИЗ ПРОЦЕССОВ ИСПОЛЬЗОВАНИЯ DOCKER ДЛЯ ПОСТРОЕНИЯ МИКРОСЕРВИСОВ

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

Ключевые слова: контейнеризация; разработка микросервисов; виртуализация; Docker-технология.

O. A. Andrushko1, Yu. O. Borzov2,1. O. Malets2, O. V. Prydatko2

1 Symfoni ESM - a Fujitsu Company, Oslo, Norway

2 Lviv State University of Life Safety, Lviv, Ukraine

ANALYSIS OF THE USE OF DOCKER TO BUILD MICROSERVICES

The problem of the complexity of teamwork in the process of developing software products with remote access is described. The existing knowledge of containerization technologies is supplemented in the light of the peculiarities of using Docker for creating microservices. The features of use and the main advantages of Docker-technologies in the process of building micro-services are determined. The advantages of container technology over the process of machine virtualization as a tool for optimizing the use of computing resources are highlighted. Described ways of avoiding conflicts between different development environments by using Docker, due to the guarantee that application micro services will operate in completely separate environments from the operating system. The optimization principle of environments, with necessary libraries and languages, for various participants of a design team based on Docker Hub is described. A number of main advantages of using the containerization process over the virtual machines within a single server for the purpose of creating micro-services are determined. Microservice architecture is considered for better understanding of Docker application features in the process of program development. Docker architecture is considered and the main components are described. Description of Docker-system for containers dynamic management is presented. According to the analysis of the processes of using Docker results, there is a number of advantages that include optimizing the computing resources use, efficiency in separated from the OS environments and the possibility of orchestration by complex programs, which allows avoiding conflicts between different development environments in the process of development of microservices.

Keywords: containerization; development of microservice; virtualization; Docker-technology.

i Надоели баннеры? Вы всегда можете отключить рекламу.