КАК УСТРОЕНО ВСЁ - приложение K

Облако и виртуализация: что такое AWS и почему «облако» - это просто чужой компьютер

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

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

🖥️ Проблема, которую решает виртуализация

Представьте компанию, которой нужно три сервера: один для сайта, один для базы данных, один для почты. Каждый из них нагружен лишь на 10-20% - большую часть времени мощности простаивают. Покупать три отдельные машины расточительно. Можно ли запустить все три задачи на одном мощном сервере?

Можно - но напрямую это опасно. Если сайт взломают и получат доступ к серверу - окажутся скомпрометированы и база данных, и почта. Нужна изоляция: каждая задача должна думать, что у неё отдельный компьютер, и не иметь доступа к соседним. Именно это и обеспечивает виртуализация.

🔲 Виртуальная машина и гипервизор

Виртуальная машина (ВМ) - это программная эмуляция полноценного компьютера. У неё есть виртуальный процессор, виртуальная память, виртуальный диск, виртуальная сетевая карта. Операционная система внутри ВМ не знает, что работает на эмуляции: она видит «железо», взаимодействует с ним через обычные драйверы и ведёт себя ровно так же, как на реальном компьютере.

Управляет всем этим гипервизор - специальная программа, которая сидит между реальным железом и виртуальными машинами. Он делит физические ресурсы - процессорные ядра, оперативную память, дисковое пространство - между несколькими ВМ и следит, чтобы они не мешали друг другу. Популярные гипервизоры: VMware ESXi, Microsoft Hyper-V, KVM (встроен в Linux).

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

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

☁️ Что такое облако на самом деле

AWS, Google Cloud, Microsoft Azure - это огромные парки физических серверов, расставленных по дата-центрам по всему миру. Когда вы арендуете «виртуальный сервер» в AWS - вы получаете виртуальную машину, которая работает на одном из этих физических серверов. Рядом с ней на том же железе могут работать виртуальные машины других клиентов, но они полностью изолированы.

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

Облачный провайдер, в свою очередь, продаёт одни и те же физические ресурсы многим клиентам - зная, что пиковая нагрузка у всех в разное время. Это то же «oversubscription», что и у интернет-провайдеров: полосу 1 Гбит/с продают ста клиентам, зная, что одновременно они всей сотней не качают.

📦 Контейнеры: виртуализация без лишнего

Виртуальная машина - мощный, но тяжёлый инструмент. Каждая ВМ несёт с собой полную копию операционной системы: несколько гигабайт на диске, сотни мегабайт памяти, минуты на загрузку. Если нужно запустить сто экземпляров одного веб-приложения - это сто полных ОС.

Контейнеры решают это иначе. Они не эмулируют железо и не запускают отдельную ОС. Вместо этого они используют ядро основной операционной системы, изолируя только пространство имён процессов, файловую систему и сетевые интерфейсы. Несколько контейнеров делят одно ядро Linux, но при этом не видят процессов и файлов друг друга.

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

💡 Docker - стандарт упаковки контейнеров: Docker - это инструмент, который сделал контейнеры удобными для разработчиков. Разработчик описывает в текстовом файле (Dockerfile), что должно быть в контейнере: какая ОС-основа, какие библиотеки, какие файлы программы. Docker собирает из этого образ - снимок файловой системы. Образ можно запустить на любой машине с Docker и получить одинаковое окружение. Именно поэтому «работает на моём компьютере, не работает на сервере» стало проблемой прошлого: контейнер везде одинаковый.

🔄 ВМ против контейнеров: когда что

Параметр Виртуальная машина Контейнер
Изоляция Полная - отдельное ядро ОС Частичная - общее ядро
Потребление памяти Гигабайты Мегабайты
Время запуска Минуты Секунды
Накладные расходы Заметные Минимальные
Разные ОС на одном хосте Да - Windows и Linux рядом Нет - только Linux на Linux
Типичное применение Облачные серверы, изоляция систем Микросервисы, деплой приложений

🔗 Виртуализация и всё, что мы знаем

Виртуализация опирается на все механизмы, которые мы разбирали в разделе про операционные системы - и добавляет ещё один уровень. Виртуальная память из статьи 2.4 теперь работает дважды: внутри каждой ВМ своя виртуальная память, а гипервизор сам управляет физической памятью между машинами. Планировщик задач из статьи 2.3 тоже работает на двух уровнях: планировщик внутри ВМ распределяет время между своими процессами, а гипервизор распределяет физические ядра между ВМ.

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


ANY.BY

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