История моего знакомства с «облаками» началась примерно три года назад. Моя компания занимается разработкой «коробочного» ПО, и единственным сервисом, который требовал администрирования, был наш собственный сайт.
Он размещался на выделенном сервере в одном из датацентров. Сайт работал и не доставлял особых хлопот ровно до тех пор, пока однажды в сервере не «умер» RAID-контроллер, похоронив вместе с собой и файловую систему. Не такое уж страшное событие, если бы не череда крайне неприятных совпадений. Во-первых, не оказалось работающего резервного контроллера. Во-вторых, случилось это
Оставить сайт нерабочим на несколько дней я не мог, поэтому продолжал искать варианты быстрого восстановления. Именно в этот момент пришло в голову попробовать Amazon AWS (Amazon Web Services) — исключительно в качестве временного варианта.
Но нет ничего более постоянного, чем временное: наш сайт так и продолжает работать в Амазоне. За это время мы с коллегами накопили огромное количество опыта работы с облачными провайдерами и с Амазоном в частности. Далеко не всегда опыт этот был положительным, но, тем не менее, все новые сервисы компании мы продолжаем запускать исключительно в «облаке». Почему это так, какие выводы мы сделали за три года — об этом и постараемся рассказать.
Миф № 1: «облако» — это быстро
Почти наверняка это не так. Одним из самых «узких» мест любого «облака» является дисковая система. Диски в «облаке» почти всегда медленные, и с этим приходится либо мириться, либо как-то бороться. Например, организацией софтверного RAID, если облачный провайдер дает возможность гибко управлять конфигурацией дисков в системе.
Миф № 2: «облако» — это надежно
Если кто-то предложит вам перенести ваш проект с обычного сервера в облако без каких-либо изменений архитектуры со словами «там надежнее» — он покривит душой... Утрируя, «облако» — это виртуальная машина, запущенная все на тех же серверах, в тех же датацентрах, обслуживающихся теми же людьми.
И им присущи те же проблемы, с которыми сталкиваются обычные серверы. Форс-мажоры случаются и в «облаках». Однажды молния попала в трансформатор в датацентре Амазона в Ирландии и вывела его из строя — а вместе с ним и сайт моей компании — на много часов. «Облачные» виртуальные диски выходят из строя так же, как и обычные «железные». Человеческий фактор — самый страшный источник бед и катаклизмов — никуда не исчезает из «облака». Например, инженер, случайно выкативший на боевые серверы неправильную конфигурацию, вполне может «грохнуть» пользовательские frontend’ы-балансировщики (да, так тоже было).
На моей памяти Амазон неоднократно «качественно» «лежал» — отдельными серверами, сервисами, а иногда и датацентрами — затрагивая немало крупных проектов: Foursquare, Instagram, Netflix, Pinterest...
Миф № 3: «облако» — это дешево
Если прямо сравнивать цены виртуальной машины в «облаке» и аналогичного по конфигурации «железного» сервера, виртуалка практически всегда проиграет. Говорят, что преимуществом «облака», которое дает реальный выигрыш в цене, является гибкость и масштабируемость. Что, мол, в любой момент времени мы платим только за те ресурсы, которые потребляем, и при возникновении нагрузки на сервис просто добавляем нужное количество виртуальных машин.
Это действительно так. Только на практике оказывается, что девять женщин не могут за один месяц родить ребенка, а 90% веб-приложений не умеет «из коробки» масштабироваться горизонтально, то есть распределяться на несколько серверов. А вертикальное масштабирование (увеличение ресурсов CPU, RAM) существующего сервера достаточно быстро упирается в «потолок».
Кажется, на этом месте пора ставить точку в рассказе про «облака»? Оценив все эти недостатки, но не разобравшись в теме досконально, многие бегут от «облаков» как от огня. И зря.
О чем следует подумать, выбирая «облако»?
Экономия в «облаке» базируется не на низкой цене, а на возможности очень гибко планировать свои расходы, а также на отсутствии расходов на старте. Если вы запускаете новый проект, который потребует значительных ресурсов по мере роста, вам нужно заранее быть готовыми к покупке или аренде необходимого количества серверов. В «облаке» можно делать это постепенно — и реально лишь по мере необходимости.
И самый главный ресурс, который экономит «облако» — это время. Добавить, удалить серверы, переконфигурировать дисковую систему, добавить новый компонент в архитектуру можно из браузера из любой точки мира в любое время. И не требуется ездить в датацентр или ждать выполнения своей заявки инженерами датацентра, в котором вы арендуете «железные» серверы.
Что касается надежности, то неразумно рассчитывать на то, что простой перенос сайта в «облако» даст гарантии 100% отказоустойчивости. Если для сервиса критически важна надежность (например, для интернет-магазина или для бизнес-приложения), необходимо самостоятельно оценить все возможные риски и спрогнозировать, как можно их избежать или минимизировать.
Что делать, если выйдет из строя диск? Как защититься от аварии на уровне целого датацентра? Как быстро отследить возможные ошибки разработчиков? Как не пропустить срок делегирования домена? Рисков — масса.
«Облака» — это не «волшебная пилюля», не панацея, которая спасет вас от всех бед. Более того, бездумный переход в «облако» может лишь прибавить проблем. Само по себе «облако» не надежнее традиционного хостинга и собственного оборудования, однако эта технология дает возможность организовать надежную инфраструктуру тем, для кого это действительно важно.