In20Years.com - Взлетай В Облака

Всем привет! В последнее время в своей работе (а именно разработке и поддержке высоконагруженных сайтов) мы стали активно использовать облачные технологии.

Но до сих пор мы не запустили проект, который полностью живет в облаках.

И вот теперь представилась такая возможность.

Позвольте мне показать вам индивидуальный веб-сайт Голдфингер Приложения Лтд. И Люксанд, Инк.

который мы запустили на прошлой неделе, и расскажите нам немного о том, как мы его сделали.

Что это за сайт?

In20Years.com - взлетай в облака

In20Years.com Вы можете загрузить свою фотографию на сайт и узнать, как вы будете выглядеть через 20 или 30 лет. Когда вы включите опцию «Наркоманка», вы сможете увидеть, что будет с вами через 20 лет, если вы будете активно употреблять наркотики.

Как это работает?



Внешний интерфейс

Само интерфейсное приложение было разработано на PHP5; В качестве серверной базы использовался Linux/Nginx/PHP-FPM. По требованиям заказчика работа с базой данных не требовалась, а также не требовалась специальная работа с сеансом.

Это позволило создать легко клонируемый «образ» фронтенда.

В зависимости от обстоятельств мы могли построить экземпляр от одноядерного до восьмиядерного экземпляра.

Хотя облако дает много преимуществ, здесь есть и много подводных камней.

О некоторых из них мы говорили на РИТ Первый вопрос возник балансировка .

Поскольку каждый новый запрос пользователя может поступать в другой экземпляр внешнего интерфейса, необходимо было автоматизировать операции по обработке фотографий.

Мы решили это так:

  1. Загрузка файла и передача его в обработку осуществляется одним запросом.

    Результатом этой операции является идентификатор запроса, по которому проверяется готовность фотографии.

  2. Любой экземпляр с этим идентификатором готов ответить о статусе обработки.

  3. Информация о пути к странице с итоговой фотографией содержится в самом URL — www.in20years.com/photoЭst=3&fid=1005149&fname=aged_wb20100514045631899489.png st обозначает идентификатор хранилища данных, fid обозначает конкретную папку, а fname обозначает имя файла.

    На основе этой информации любой экземпляр может подставить в шаблон полный путь к фотографии и отобразить его.

Еще одной проблемой, которую необходимо было решить, была минимизация работы с жестким диском .

По нашему опыту, основным узким местом облака является его производительность — работу с хранилищем виртуализировать сложнее всего.

Соответственно, мы постарались максимально минимизировать работу с диском:

  1. Загрузка файлов Используя Поддержка ускоренной загрузки в PHP-FPM и Nginx мы начали принимать пользовательские файлы в tmpfs хранилище, таким образом мы избежали необходимости нагружать диск большим количеством пользовательских данных (а их очень много, об этом мы поговорим позже).

  2. Обработка файлов Задача номер два заключалась в обработке файлов – передача их в обработку, обрезка лица, создание кадра.

    Здесь мы также постарались максимально избежать работы с диском.

    Обработку изображений осуществляет API-сервер, получая данные, с которого мы не сохраняли их на диск, а загружали непосредственно в GD. Соответственно, дальнейшая обработка производилась там, в памяти.



Бэкэнд

В РИТ мы сказали, что используем Softlayer в качестве хостинг-провайдера.

В последнее время мы стали недовольны надежностью их облачных решений и постепенно переносим свои проекты на Amazon, которым пользовались раньше, но не так активно.

Между тем доверия к обоим не очень, поэтому мы пришли к выводу, что для обработки изображений в API нужно использовать экземпляры обоих провайдеров, чтобы в случае возникновения проблем у одного из них можно было быстро переключиться на другого.



Хранилище данных

Немного об обмане - сохраненные файлы наверняка нужно где-то и как-то хранить.

В целом для этого подошло бы решение S3 от Amazon или аналогичное от Softlayer, но так как у нас уже был сервер хранения для makemebabies.com мы использовали его.

Поэтому да, сохраненные картинки не в облаках).



Запуск

Через пять часов после запуска это произошло пост на Mashable (это наш четвертый освещаемый там проект!), и аудитория начала расти в геометрической прогрессии.

За первый день было обработано 300 тысяч изображений, а дальше с каждым днем это число только росло.

  1. в первые минуты после публикации на mashable мы исчерпали производительность «бэкенда» и увеличили его ресурсы во много раз всего за десятки минут.
  2. Через несколько часов мы достигли предела мощности балансировщика нагрузки, и эта проблема была решена простым увеличением канала.

  3. через день мы «нашли себя» в производительности фронтендов и снова за счет создания новых клонов инстансов легко увеличили производительность всей системы.

Сейчас, хотя рост продолжается, ничего экстраординарного не происходит. Как мы уже говорили, это был наш первый опыт создания проекта, полностью находящегося в облаках, и, к нашему удивлению, он оказался весьма успешным.



выводы

Можем ли мы после всего этого рекомендовать облако в качестве решения для проектов с высоким трафиком? Да и нет.
  • Нет — нужно понимать, что финансовая сбережения очень труднодостижимо (мы не хотим произносить слово «невозможно»).

    Распространено мнение, что любому владельцу сайта, трафик которого колеблется в течение дня/ночи, будет достаточно иметь «слабую» конфигурацию ночью, увеличивая ее в часы пик.

    Нужно понимать, что время создания новых конфигураций в облаках колеблется от 10 до 40 минут — вам нужно решить, готовы ли вы потерять свою аудиторию за этот период? Если нет, то вам придется держать инстанс, сравнимый по мощности с настоящим выделенным сервером — а это чаще всего дороже аппаратного обеспечения.

  • Да — Это возможно, и относительно легко обеспечить возможность масштабирования роста проекта.

    К вам пришло в 10 раз больше посетителей, чем в обычный день? Вы можете легко масштабировать ресурсы.

    Если надежность обслуживания является вашим главным приоритетом, облако — ваш выбор.

  • В которой - Как мы сказали в РИТ - облака не надежны, не забывайте, что в реальности сократить работу по системному администрированию не получится.

    Вам придется либо обучить свой персонал поддержке ваших облачных решений, либо обратиться к специалистам, и то и другое в любом случае стоит денег.

Спасибо за внимание! Теги: #стартап #highload #облачные вычисления
Вместе с данным постом часто просматривают: