Запуская свои сервисы, компания Amazon, конечно же, думала не только о том, как облегчить жизнь своим клиентам. Как и любая другая крупная компания, она была вынуждена приобрести гораздо больше вычислительных мощностей, чем ей могло когда-либо потребоваться. Ее система должна была справляться с самой большой нагрузкой, с которой мог столкнуться сайт; кроме того, следовало обеспечить дополнительные мощности в целях безопасности. Другими словами, компании Amazon необходимо было создать систему, способную справиться с бурной торговлей в течение недели после Дня благодарения, несмотря на то что такая неделя бывает только раз в году. В остальное время бо́льшая часть вычислительных мощностей системы оставалась незадействованной. Основатель и главный исполнительный директор компании Джефф Бэзос признался в интервью 2006 года: «Иногда мы используем менее 10 % мощности». Сдавая систему в аренду другим пользователям, Amazon может увеличить эффективность работы своих мощностей и уменьшить общую стоимость вычислений не только для своих клиентов, но и для себя. Как это было с электроэнергетическими компаниями, чем больше клиентов обслуживает Amazon, тем лучше компании удается сбалансировать нагрузку, увеличив тем самым общий коэффициент использования оборудования. Решение компании Amazon заняться предоставлением вычислительных услуг (несколько неожиданный выбор для компании розничной торговли) показывает, что компании владеют избыточными вычислительными мощностями и что коммунальные вычисления могут решить эту проблему.
Поскольку Amazon дает клиентам возможность работать со всеми видами программ, установленных на компьютерах компании, она не может адаптировать свою систему к работе с ограниченным набором приложений, как это сделала компания Google. Ей необходимо быть более гибкой. По этой причине принцип работы системы Amazon отличается от принципа работы системы Google. В ее основе заложена не технология параллельной обработки, а так называемая виртуализация – технология, которая будет иметь решающее значение для дальнейшего развития сферы коммунальных вычислений. Действительно, без виртуализации крупномасштабные сервисы коммунальных вычислений просто немыслимы.
Как и многие другие компьютерные термины, понятие «виртуализация» не так сложно, как кажется на первый взгляд. Оно имеет отношение к программному обеспечению для моделирования аппаратных средств. В качестве простого примера вспомним, как за прошедшие годы изменился телефонный автоответчик. Вначале он представлял собой громоздкий автономный аппарат, записывающий голоса в виде аналоговых сигналов на магнитную ленту. Однако по мере того как начали появляться все более продвинутые компьютерные чипы, автоответчик превратился в крошечное цифровое устройство, часто встроенное в телефон. Сообщения больше не записывались на пленку: они хранились в виде строк двоичных разрядов в памяти устройства. Однако как только машина стала полностью цифровой, она перестала быть собственно машиной. Все ее функции могли выполняться с помощью программного кода. Именно это и произошло. Аппарат исчез. Физическая машина превратилась в виртуальную – в чистое программное обеспечение, работающее где-то в системе телефонной компании. Когда-то вам нужно было покупать автоответчик. Теперь достаточно просто подключить соответствующую услугу. В этом и заключается суть виртуализации.
Поскольку все компоненты компьютерных систем – от микропроцессоров и накопителей до такого сетевого оборудования, как маршрутизаторы, брандмауэры и устройства балансировки нагрузки, – работают в цифровом режиме, они тоже могут быть заменены программным обеспечением. К ним тоже применима виртуализация. Когда вы арендуете компьютер или тысячу компьютеров через сервис EC2 компании Amazon, вы арендуете не настоящие компьютеры. Вы арендуете виртуальные машины, которые существуют только в памяти физических компьютеров Amazon. Благодаря виртуализации один компьютер Amazon можно запрограммировать так, чтобы он работал как несколько разных компьютеров, каждый из которых управляется разными клиентами.
Виртуализация давно стала важной частью процесса вычислений. Это одна из технологий, которые позволили мейнфреймам одновременно обрабатывать множество различных задач. Однако сегодня она стала поистине революционной благодаря взрывному росту производительности компьютерных чипов. Поскольку работа виртуальной машины ничем не отличается от работы приложения, она использует значительную часть мощности микропроцессора. До недавнего времени это ограничивало полезность виртуализации. Запуск одной или двух виртуальных машин настолько замедлял скорость работы компьютера, что его вычислительных мощностей не хватало больше ни на что. Однако микропроцессоры стали такими мощными, что теперь могут поддерживать одновременную работу нескольких виртуальных машин и при этом иметь достаточную мощность для запуска сложных бизнес-приложений на каждой из них.