Фото: handybackup.ru
Что такое облачные вычисления и зачем они нужны
Автор: Павел Бернштам
Допустим, программист Поль (все имена вымышленные!), начал работать в перспективном стартапе, который делает сайт, который делает хостинг картинок и даёт вам линк на уменьшенные и полноразмерные картинки для включения на свой сайт или пост в блоге.
Начальство просит Поля написать соответствующую программу, Поль пишет и говорит начальству — мне нужен компьютер, мощный сервер, чтобы на нём бежала наша программа.
Начальство покупает ему сервер, но дальше начинаются проблемы — сервер греется и ему нужно покупать мощный вентилятор, ходят слухи, что появилась банда взломщиков, которая взламывает фирмы и ворует оттуда компьютеры, Поль считает, что всем данным сервера надо делать бэкап, а где хранить бэкапы? Если на соседнем компьютере — его украдут вместе с основным или он сгорит в том же пожаре.
И вот университетский приятель Поля, программист Джон, советует вместо того, чтобы держать компьютеры у себя в фирме, взять компьютер на хостинге. Платишь за компьютер на год вперёд, он хранится у них где то там в Америке, нужен еще один — докупаешь еще один. А подключаешься к ним со своего лэптопа, чтобы установить программы или еще что то сделать.
И перенёс Поль всю программу на хостинг.
И всё у него было хорошо, но сервис стал постепенно набирать популярность.
И пришлось Полю покупать новый, более мощный компьютер на хостинге, а за старый фирма всё равно платит — заплатили на год вперед.
Потом наняли в фирму тестировщика Семёна, а Семён говорит — мне для нагрузочного тестирования (т.е. чтобы посмотреть как сайт будет себя вести под большой нагрузкой) нужно еще 5 компьютеров, но не всё время, а только 2 дня каждый раз перед выпуском новой версии.
Пригорюнился Поль, пожаловался на жизнь армейскому товарищу Ицику, в то время, что парился с ним вместе в бане, а тот ему посоветовал взять компьютеры на облаке Амазона, Гугла или Микрософта
Что оказалось — там можно получить компьютер определенной мощности (число процессоров, память, размер диска), а потом апгрейднуть его (увеличить число процессоров, объем памяти или размер диска и число дисков) по мере надобности.
То, что нужно Полю при увеличении числа пользователей сайта! Можно новый компьютер любой конфигурации создать или уничтожить, включить или выключить (и платишь только за те, что включены) — то, что нужно Семёну тестеру для нагрузочного тестирования!
Когда число пользователей еще выросло, Поль создал еще один компьютер и настроил на третьем компьютере Load Balancer — программу, которая случайным образом направляет запросы юзеров на один или второй компьютер, чтобы распределить между ними нагрузку.
Так вот — такую штуку, когда по мере надобности создаешь и уничтожаешь компьютеры, платишь только за реальную работу процессора и хранение данных называют Infrastructure as a Service (IAAS)
Под капотом всего этого бегут, конечно настоящие компьютеры, где то в датацентре Амазона (или Гугла или Майкрософта), но специальная программа умеет нарезать из них «виртуальные» компьютеры, которые снаружи выглядят как абсолютно независимые настоящие.
Но проблемы остались. Во первых Поля конкретно достало, что он, программист с 10 летним опытом, всё больше времени проводит за системным администрированием системы, а не за разработкой новых возможностей — надо было следить за нагрузкой, добавлять еще компьютеры, настраивать Load Balancer, писать скрипты для Семёна, которыми он бы включал и выключал компьютеры для тестов.
Во вторых оказалось, что через пару дней выйдет статья на Techrunch про этот прекрасный стартап и ожидается очень большой наплыв пользователей, который постепенно будет спадать на протяжении недели. Сколько еще компьютеров поднять перед выходом статьи? 10? 100? А ведь за них придется платить!
В третьих пользователи не из Америки начались жаловаться на то, что для них сайт работает медленно — ведь купленные на облаке компьютеры физически располагались в Америке!
Можно было бы создать такие же компьютеры в облаке в Европе и Азии, но тогда картинки японца будут хранится в Японии и человек зашедший из Америки на сайт японца будет долго ждать пока сгрузятся картинки!
Итак, Полю нужно было, чтобы всё работало так:
Есть хранилище картинок, продублированное по всему миру так, что если картинку добавляют в одну копию хранилища (например в Америке), она тут же оказывалась и в других копиях.
Нужна база данных со списком пользователей и картинок, также продублированная по всему миру и синхронизирующая копии при любом изменении.
Нужно, чтобы когда пользователь набирает http://kartinok.net, он попадал на ближайшую к нему копию сервера фирмы.
Нужно одновременно ставить новую версию на все копии сервера фирмы по всему миру
Нужно, чтобы если нарастает нагрузка в каком то одном регионе, поднимались новые копии сервера именно в этом регионе и между ними равномерно распределялась нагрузка
И еще нужно делать бэкап всех данных, чтобы если в результате бага что то испортилось, быстро восстановить данные пользователей
Можно это всё сделать? Можно. Но работы — очень много.
Ну на самом деле проблем у Поля было даже больше, просто нужно влезать глубже, чтобы понять часть из них — синхронизация кэшей в памяти и т.д.
И думал уже Поль увольняться из стартапа и идти работать программистом в банк, но на свою удачу в детском садике на утреннике разговорился с Адамом — своим соседом.
И Адам ему раскрыл глаза на то, что в облаке все эти фокусы можно получить уже готовые, а не настраивать их самому.
А именно —
• хранилище картинок, которое само заботится о том, чтобы быть продублированным по всему миру, и когда программа просит оттуда файл, то файл загружается с ближайшего сервера.
• Автоматическое масштабирование — при увеличении нагрузки, сам по себе включится компьютер определенной конфигурации, сообщит о себе в Load Balancer и начнет обслуживать запросы клиентов. А когда пик нагрузки спадёт, он сам выключится и не будет жрать деньги.
• Более того, можно вообще не иметь дело с компьютерами — можно написать программу, сказать облаку, чтобы её запустил и облако само будет создаст её копии по всему миру, чтобы быстро обслуживать пользователей. Это особенно обрадовало Поля — ведь если имеешь дело с компьютером, то надо тратить время на его обслуживание — следить за обновлениями программ и операционной системы, настраивать секьюрити, чтобы злые хакеры не забрались в него и т.д. А нет компьютера — нет проблем.
На самом деле, конечно, есть компьютеры, есть синхронизация хранилищ файлов и баз данных, есть настройка Load Balancer, но программы облака берут это всё на себя и делают для программистов это всё прозрачным. В самом деле — зачем каждый раз изобретать велосипед, если все эти вещи более менее одинаковые нужны всем, кто запускает свой сервис, свой сайт на облаке!
Такая вот штука, когда облако берет на себя всякую черную работу и можно от компьютеров полностью или частично отказаться — называется Platform As a Service (PAAS)
И сделал так Поль, и пришел стартапу успех, и купил этот стартап Ebay, и заработал себе Поль на опциях на отпуск в Непале.
А сам сайт, который сделал Поль, маркетологи и сейлсмены назвали SAAS (software as a service), но Полю было уже всё равно, он отравился на треке в Лангтанге и сидел в это время в туалете на высоте 4 тыс м.
Так вот, упомянутые выше IAAS, PAAS, SAAS — это всё вместе или по отдельности чаще всего и имеют в виду, когда говорят Cloud Computing!
Иллюстрация: artismedia.by