Віртуалізація Матрьошка - Шаблони інтеграції підприємств

інтеграції

ІТ люблять віртуалізувати речі, дотримуючись старого правила, згідно з яким в інформатиці кожну проблему можна вирішити лише ще одним рівнем опосередкованості. Хмарні обчислення засновані на віртуалізації обчислювальних ресурсів - вам не потрібно знати, на якій фізичній машині насправді працює ваш додаток, і ви можете отримати нові, натиснувши кнопку. Раніше хмара була модним словом, однак VMware та інші віртуалізували машини на рівнях операційної системи. Останнім часом (з точки зору галасу, а не технології) контейнери приносять ще один рівень легкої віртуалізації обчислювальних ресурсів. І не забуваємо про віртуальну машину Java, яка також вимагає рівня віртуалізації. Що ми повинні робити з усіма цими рівнями віртуалізації?

Що таке віртуалізація?

Віртуалізація перетворює фізичні ресурси на логічні ресурси, які є більш гнучкими і часто доступними за запитом. Подумайте про це як про оренду автомобіля, на відміну від власності машини: ви можете орендувати кабріолет у гарну погоду, повний привід взимку та універсал (маєток) для перевезення речей. І ви платите за них лише тоді, коли вони вам потрібні. Купувати всі ці машини було б дуже неефективно, особливо коли ви рідко ними користуєтесь (я насправді володію універсалом і кабріолетом, тому я знаю). Роблячи речі віртуальними, ви можете створювати нові екземпляри чогось із існуючих ресурсів, наприклад, орендувати машину з великого басейну. У світі програмного забезпечення у нас є деякі додаткові можливості: ми можемо створювати різні операційні системи, такі як Windows або Linux, на одному і тому ж обладнанні та гіпервізорі, або можемо перетворити одну велику фізичну машину на кілька невеликих віртуальних машин. Тут аналогія з орендованим автомобілем закінчується: перетворити вагони на кабріолети набагато складніше, і один автомобіль навряд чи можна розділити на два мотоцикли.

Рівні віртуалізації

Віртуалізація на рівні ОС існує вже давно. Гіпервізор керує та абстрагує апаратне забезпечення машини, тому ви можете створювати нові екземпляри операційної системи з різними смаками та розмірами на фіксованому наборі фізичного обладнання. Це давня новина у світі мейнфреймів, і подібні VMware пропонують це вже давно на платформах x86, скорочуючи час розгортання машини та витрати, одночасно збільшуючи використання ресурсів.

Однак більшість інтернет-гігантів не використовують гіпервізори всередині, оскільки вони несуть певні накладні витрати в діапазоні 5-15% і коштують чималих грошей за ліцензування, якщо ви використовуєте комерційний продукт. Якщо у вас є 100 машин, це, мабуть, не велика проблема, але якщо у вас 100 000 машин, ви хочете чогось іншого. Більшість публічних хмар використовують гіпервізори, напр. KVM для Google Compute Engine або Xen для Amazon EC2, оскільки вони повинні підтримувати декількох постачальників та версій операційних систем.

Сьогодні великі обчислювальні інфраструктури часто використовують контейнери, як правило, засновані на технології Linux LXC: кілька контейнерів працюють на одному екземплярі операційної системи і, таким чином, несуть менше накладних витрат, ніж окремі екземпляри ОС. Зазвичай вони також забезпечують меншу ізоляцію між екземплярами - щось слід врахувати, якщо ваш бізнес вимагає відповідності PCI тощо. Великі інфраструктури зазвичай використовують програмне забезпечення для управління кластерами, як Mesos або Kubernetes, для розподілу робочого навантаження між великою кількістю контейнерів. Ми зробили це в Google багато років тому з великим розмахом.