Научная статья на тему 'ПРЕИМУЩЕСТВА КОНТЕЙНЕРИЗАЦИИ И СЕРВИСНО-ОРИЕНТИРОВАННОЙ АР-ХИТЕКТУРЫ ПРИ РАЗРАБОТКЕ И РАЗВЕРТЫВАНИИ ВЕБ-ПРИЛОЖЕНИЯ'

ПРЕИМУЩЕСТВА КОНТЕЙНЕРИЗАЦИИ И СЕРВИСНО-ОРИЕНТИРОВАННОЙ АР-ХИТЕКТУРЫ ПРИ РАЗРАБОТКЕ И РАЗВЕРТЫВАНИИ ВЕБ-ПРИЛОЖЕНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
173
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОНТЕЙНЕРИЗАЦИЯ / СЕРВИСНО-ОРИЕНТИРОВАННАЯ АРХИТЕКТУРА / МИКРОСЕРВИСЫ / ВЕБ-ПРИЛОЖЕНИЕ / РАЗРАБОТКА / CONTAINERIZATION / MICROSERVICE ARCHITECTURE / MICROSERVICE / WEB APPLICATION / DEVELOPMENT

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Карнаухов К.В.

Рассмотрены проблемы в процессах разработки и развертывании веб-приложения и пути их решения с использованием контейнеризации и сервисно-ориентированной архитектуры.Problems in the processes of developing and deploying a web application and ways of solving them using containerization and service-oriented architecture are considered.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Карнаухов К.В.

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

Текст научной работы на тему «ПРЕИМУЩЕСТВА КОНТЕЙНЕРИЗАЦИИ И СЕРВИСНО-ОРИЕНТИРОВАННОЙ АР-ХИТЕКТУРЫ ПРИ РАЗРАБОТКЕ И РАЗВЕРТЫВАНИИ ВЕБ-ПРИЛОЖЕНИЯ»

УДК 004.457

Карнаухов К.В. студент 4 курса

факультет «Информационных систем и технологий» Поволжский Государственный Университет Телекоммуникаций и Информатики

Россия, г. Самара ПРЕИМУЩЕСТВА КОНТЕЙНЕРИЗАЦИИ И СЕРВИСНО-ОРИЕНТИРОВАННОЙ АР-ХИТЕКТУРЫ ПРИ РАЗРАБОТКЕ И РАЗВЕРТЫВАНИИ ВЕБ-ПРИЛОЖЕНИЯ

Аннотация: Рассмотрены проблемы в процессах разработки и развертывании веб-приложения и пути их решения с использованием контейнеризации и сервисно-ориентированной архитектуры.

Ключевые слова: контейнеризация, сервисно-ориентированная архитектура, микросервисы, веб-приложение, разработка

Карнаухов К.В. студент 4 курса

факультет «Информационных систем и технологий» Поволжский Государственный Университет Телекоммуникаций и

Информатики Россия, г. Самара

ADVANTAGES OF CONTAINERIZATION AND MICROSERVICE ARCHITECTURE FOR DEVELOPMENT AND DEPLOYMENT OF WEB

APPLICATIONS

Problems in the processes of developing and deploying a web application and ways of solving them using containerization and service-oriented architecture are considered.

Keywords: containerization, microservice architecture, microservice, web application, development

Контейнеризация - это процесс распространения и развёртывания приложений портируемым и предсказуемым образом. Это достигается путём упаковывания компонентов и их зависимостей в стандартные, изолированные и лёгкие окружения (process environments), называемые контейнерами. В настоящее время многие организации заинтересованы в создании приложений и сервисов, которые могут быть легко развёрнуты на распределенных системах, позволяя системе легко масштабироваться и оставаться работоспособной при отказе отдельных машин или приложения.

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

проектирования и управления сервисами. Разработано большое количество программного обеспечения, работающего на основе данной экосистемы распределённого управления контейнерами.

Без стандартизации окружений, в котором запускается проект во время разработки и эксплуатации, каждое из них (локальное у разработчика, тестовое и рабочее окружения) приходится настраивать по отдельности. Причем не всегда этим занимается один и тот же человек.

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

1. Установить компилятор или интерпретатор языка программирования

2. Установить базу данных

3. Установить другие системные утилиты

4. Клонировать репозиторий

5. Заставить все компоненты работать вместе

Причем не всегда получается сделать минимальной разницу между всеми окружениями. Из-за этого может возникнуть такая ситуация, когда на рабочем окружении код не работает, а разработчик, написавший его, утверждает, что у него «локально все работает».

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

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

На сегодняшний день Docker является самым распространённым программным обеспечением для контейнеризации. Хотя существуют и другие системы контейнеризации, Docker делает создание и управление контейнерами простым и легко интегрируется с многими open-source проектами.

Рис. 1. Устройство контейнера в общем виде

На картинке выше Вы можете увидеть (в упрощенном виде), как контейнеры соотносятся с хост-системой. Контейнеры изолируют отдельные приложения и используют ресурсы операционной системы с помощью Docker. В развёрнутом виде на картинке справа можно видеть, что контейнеры построены при помощи "слоев", при этом несколько контейнеров могут иметь общие нижние слои, уменьшая использование ресурсов.

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

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

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

представляет собой "черный ящик". Хосту нет дела то того, что за приложение внутри.

Простота масштабирования. Одним из преимуществ абстрагирования между операционной системой хоста и контейнерами является то, что при правильном проектировании приложения, масштабирование может быть простым и прямолинейным. Сервис -ориентированная архитектура в комбинации с контейнеризованными приложениями обеспечивает основу для лёгкого масштабирования.

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

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

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

Чрезвычайно легкие, изолированные среды выполнения. Несмотря на то, что контейнеры не предоставляют такого же уровня изоляции и управления ресурсами, как технологии виртуализации, они обладают чрезвычайно лёгкой средой исполнения. Контейнеры изолированы на уровне процессов, работая при этом поверх одного и того же ядра хоста. Это значит, что контейнер не включает в себя полную операционную систему, что приводит к практически мгновенному его запуску. Разработчики могут легко запустить сотни контейнеров со своей рабочей машины без каких-либо проблем.

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

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

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

Docker-файлы невероятно полезны и ими довольно легко начать пользоваться. Вот лишь некоторые из преимуществ, которые они предоставляют:

• Простота работы с версиями: Docker-файлы могут быть сохранены в системе контроля версий для отслеживания изменений и "откатывания" ошибок.

• Предсказуемость: Сборка образов из Docker-файла помогает избавиться от человеческих ошибок в процессе создания образов.

• Контролируемость: Если Вы планируете делиться своим образом, обычно хорошим тоном является предоставление Docker-файла, который создает данный образ, чтобы другие пользователи могли проконтролировать процесс. Таким образом Вы, по сути, предоставляете историю предпринятых для построения образа шагов.

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

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

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

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

Использованные источники:

1. Моуэт, Э. Использование Docker. Разработка и внедрение программного обеспечения при помощи технологии контейнеров [Текст] / Э. Моуэт - М. : ДМК Пресс, 2017. - 354 с.

2. Goasguen, S. Docker Cookbook: Solutions and Examples for Building Distributed Applications [Text]

/ S. Goasguen - 1st ed. - CA : O'Reilly Media, 2015. - 366 p.

3. Kane, S. Docker Up & Running [Text] / S. Kane, K. Matthias - CA : O'Reilly Media, 2015. - 207 с.

УДК 614.842.8

Ковзель М.В. студент магистрант Сметанкина Г.И., к.т.н.

доцент кафедра ОГО и УЧС ВИ ГПС МЧС России - филиал Ивановской пожарно-спасательной академии МЧС России

Россия, г. Воронеж ОСНОВНЫЕ НАПРАВЛЕНИЯ СОВЕРШЕНСТВОВАНИЯ ДЕЯТЕЛЬНОСТИ НАДЗОРНЫХ ОРГАНОВ МЧС РОССИИ Рассмотрены основные направления деятельности надзорных органов МЧС России. Проанализирована Концепция основных направлений совершенствования деятельности надзорных органов МЧС России и План реализации Концепции. Обозначена основная цель и задача МЧС. В докладе определена роль и значение реализация мероприятий, проводимых Министерством по совершенствованию деятельности надзорных органов МЧС России.

Требования пожарной безопасности, обеспечение пожарной безопасности, Концепция основных направлений совершенствования деятельности надзорных органов, совершенствование сферы обеспечения пожарной безопасности

Kovzel' M.V. master student VE GPS of the Ministry of Emergency Situations of Russia - a branch of the Ivanovo Fire and Rescue Academy of the Ministry of Emergency Situations

of Russia Russia, Voronezh Smetankina G.I. Ph.D.

Associate Professor of the Department of CSOs and UES VE GPS of the Ministry of Emergency Situations of Russia - a branch of the Ivanovo Fire and Rescue Academy of the Ministry of Emergency Situations

of Russia Russia, Voronezh MAIN DIRECTIONS OF IMPROVING THE ACTIVITIES OF SUPERVISORY BODIES OF THE EMERGENCY MINISTRY OF RUSSIA The main activities of the supervisory bodies of the Ministry of Emergency Situations of Russia are considered. The Concept of the main directions of improving the activities of the supervisory bodies of the Ministry of Emergencies

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