Контейнерная инфраструктура и микросервисы

Контейнерная инфраструктура и микросервисы
МИКРОСЕРВИСНАЯ АРХИТЕКТУРА

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

В монолитной архитектуре сервис – это комплексная система, состоящая из тесно взаимосвязанных компонентов, которые обмениваются данными по «тяжеловесным» протоколам – как открытым (например, SOAP, XML-RPC), так и проприетарным.

В микросервисной архитектуре сервис включает в себя небольшие и слабо связанные между собой модули – микросервисы, которые взаимодействуют по «экономичным» сетевым протоколам (в стиле REST и с использованием, например, JSON, Protocol Buffers, Thrift).

Особенности микросервисной архитектуры:

  • модули можно легко заменять в любое время;
  • каждый модуль предназначается для выполнения конкретной функции;
  • модули могут быть реализованы с помощью различных языков программирования и фреймворков;
  • модули находятся в одноранговой зависимости друг от друга.
КОНТЕЙНЕРНАЯ ИНФРАСТРУКТУРА

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

Контейнеризация (или виртуализация на уровне операционной системы) – это метод виртуализации, позволяющий ядру операционной системы поддерживать не один, а несколько экземпляров пространства пользователя. Эти экземпляры называют контейнерами. С точки зрения выполняемых процессов контейнеры идентичны отдельным экземплярам операционной системы. Программы из разных контейнеров не могут воздействовать друг на друга. Сами контейнеры хранятся в хостовой операционной системе.

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

DOCKER-КОНТЕЙНЕРЫ

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

Ключевая особенность Docker заключается в том, что он позволяет «упаковать» приложение или самодостаточный компонент приложения со всем его окружением и всеми зависимостями в контейнер. Этот контейнер можно затем развернуть в любой операционной системе Linux, поддерживающей контрольные группы в ядре. Такие контейнеры называются docker-контейнерами.

Важно отметить, что работоспособность компонента почти полностью обеспечивает разработчик, поскольку именно он «упаковывает» в контейнер все необходимые зависимости и библиотеки. Разработчик должен позаботиться о том, чтобы компонент или приложение в контейнере вели себя так, как задумано.

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

РАЗВЕРТЫВАНИЕ СЕРВИСОВ С ПОМОЩЬЮ DOCKER

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

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

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

Таким образом, контейнеризация – наиболее перспективный способ поставки (развертывания) компонентов сложных программных комплексов.

Alt text

Ваша приватность умирает красиво, но мы можем спасти её.

Присоединяйтесь к нам!