Теперь давай поговорим про то, как на один компьютер влезает несколько программ и друг другу не мешают. Вернее, как они влезают на один компьютер - понятно: установил да пользуешься, прямо как на домашнем компе. А как сделать так чтобы эти приложения друг другу не мешали. Ведь вполне может быть такое, что приложения по расчету клиентов двух конкурирующих кофеин могут физически в одном ЦОД располагаться на одном и том же компьютере и как сделать так чтобы конкурент не испортил нам программу или не подглядел нашу информацию - вот это уже вопрос. Я бы с удовольствием не давал вам пока эту сложную тему, но она очень важная для того чтобы понимать, где будут работать программки, которые вы будете программировать или тестировать. Итак, виртуализация!
Путь к тому, что мы имеем сейчас можно разделить на три условных этапа.
- Приложения полностью пользовались всеми доступными ресурсами компьютера: памятью, жестким диском, процессором и так далее. Все ровно как на твоем компьютере
- Виртуальные машины. По сути это попытка засунуть в один компьютеров несколько таких песочниц, которые с точки зрения программы будут отдельными компьютерами. Можешь на досуге поизучать программы типа VirtualBox или VM Ware. На серверах все немного сложнее. Внутрь одного компьютера засовывается несколько виртуальных, а распределением ресурсов между ними занимается специальная программка - Гипервизор. То есть у тебя есть сервер с 64 гигабайтами свободной оперативной памяти и ты можешь создать как 64 виртуальные машины с 1 гигабайтом оперативки так и 4 виртуалки по 16 гигабайт. Процессор и жесткий диск тоже можешь разделить на свое усмотрение. Помимо того что программы, запущенные на этих виртуальных компьютерах не знают о существовании друг друга и не могут друг другу навредить, так тони еще и не могут навредить главному компьютеру, уже физическому, внутри которого они запущены, так как работают в условной песочнице.
- Но предыдущие две технологии уже можно сказать “прошлый век”, так как не позволяют гибко управлять ресурсами, затрачиваемыми программой, а значит и меньше расходовать бюджет. Поэтому был придуман следующий этап виртуализации, являющийся сейчас стандартом де-факто для предприятий. Это контейнеризация. И снова вспомни мою мысль, что в IT нет сложных терминов, а все они взяты из нашей жизни. Когда я говорю слово “контейнер”, лично мне представляется огромный корабль, например, с надписью MAERSK, на “спине” которого лежат огромные грузовые контейнеры. То есть все программки у нас запрятаны в отдельные контейнеры и чтобы они друг другу не навредили - контейнеры изолированы друг от друга стенками. Конечно же, при необходимости можно контейнеры связать друг с другом, но по умолчанию они друг о друге не знают. И вот тут становится еще сложнее. В чем же у них отличие от виртуальных машин из второго пункта? А в том, что виртуальные машины используют полностью отдельную операционную систему, как будто это настоящий компьютер, а контейнеры - они на то и контейнеры, что пользуются общими ресурсами “корабля”, который их везет.
Теперь, если ты услышишь слова Docker, Kubernates и OpenShift, ты не испугаешься, а поймешь, что Docker - это средство, позволяющее программки разложить по контейнерам, а Kubernates (он же k8s) или OpenShift - это средства для управления этими контейнерами: запуск приложения, если сломается или запуск еще одной компии контейнера, если первый контейнер не будет справляться. Вот с использованием этих средств сейчас и ведется профессиональная разработка.
На этом всё, подписывайся и зови друзей!