# Виртуализация/контеризация

В промышленной разработке есть необходимость «упаковки» собранного приложения, например, чтобы его можно было передать на тот сервер, где оно будет работать, в том виде, в каком разработчик собрал его у себя на компьютере, такая «упаковка» должна служить как бы защитой. Это исключает сюрпризы, вроде тех, когда во время теста приложение работает, а при переносе в рабочую среду — ломается. Так же «упаковка» изолирует одно приложение, от другого, находящееся на том же самом сервере, такая изоляция позволяет одному приложению не мешать работе другого (например: одно приложение не сможет забрать себе всю оперативную память сервера, оставив второе приложение на произвол судьбы). Особенно заметны плюсы «упаковки» при микросервисной архитектуре, оно и понятно, много микросервисов – много небольших приложений, которые должны общаться между собой, но при этом не должны мешать друг другу. В пример можно привести комод (сервер), в котором много разных ящиков, и мы можем спокойно перекладывать разные носки из одного ящика в другой, и при этом они не будут смешиваться ни друг с другом, ни с труселями.

Упаковка создается средствам виртуализации. Когда-то давно, в качестве «упаковки» использовались виртуальные машины (VM). Олды вспомнят как разворачивали Windows XP на Vista на виртуальной машине. Сейчас VM для упаковки приложений - это прошлый век. Мир захватили контейнеры. Потому что они: легче, производительнее и безопаснее.

## Преимущества контеризации

* простота и гибкость развертывания приложений по сравнению с ВМ;
* непрерывность создания, интеграции и развертывания контейнера с возможностью быстро откатить изменения;
* создание контейнеров приложений в процессе сборки/релиза и отделение приложения от аппаратной инфраструктуры;
* идентичность среды разработки и тестирования на сервере и терминалах разработчика (ноутбуках, ПК);
* возможность переносить приложения между облаками и ОС — Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine и т.д.;
* разделение приложений на изолированные, распределенные, гибкие микросервисы с динамическим развертыванием и управлением.

Источники:&#x20;

* <https://javarush.com/groups/posts/3793-kto-takie-docker-kubernetes-openshift-i-kak-oni-mezhdu-soboy-svjazanih#discussion>
* <https://blog.skillfactory.ru/glossary/kubernetes/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.system-analyst-base.ru/hard-skills/devops-for-sa/razvertyvanie-prilozhenii/middle+/virtualizaciya-konterizaciya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
