Виртуализация приложения

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

application-virtualization

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

и какой от этого толк?

Наиболее популярным способом разбития монолитной архитектуры на микросервисы была виртуализация отдельных частей (сервисов) в виртуальных машинах (Hyper-V, VirtualBox).

Решение было хорошим до того момента, когда сервисы не начинали разрастаться. И для нормальной работы требовалось наращивание серверных мощностей.

И тут на помощь приходит Docker.

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

application-virtualization

При этом у каждого контейнера изолированная файловая система.

Docker работает только на Unix-системах, но благодаря WSL есть возможность запускать Docker на Windows (так же Docker можно запускать с помощью виртуализации, но с появлением WSL2 в этом нет смысла).

С 2015 года Microsoft меняет свою позицию по отношению к Open Source и другим сторонним технологиям. С появлением .Net Core есть возможность упаковывать веб приложения в контейнер Docker’a.

Для того, чтобы включить поддержку Docker’a при создание приложения.

application-virtualization

После чего в тулбаре появляется возможность упаковать приложения в контейнер Docker’a.

application-virtualization

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

Как пример Azure Service Fabric.

Написано 21 июля 2019