В этой заметке обзор на основе личного опыта разных облачных сервисов, которые использую или пробовал использовать для своих персональных проектов. Цель заметки не повторять основы и их описания, а поделиться плюсами и минусами, с которыми столкнулся в работе. Также в основном все провайдеры будут рассматриваться с точки зрения использования только Python, который я использую.
IBM Bluemix (PaaS)
Использую как основной PaaS для Python программ. Например, на нем сейчас работают Агрегатор новостей РТИ, Бот для викторины и несколько других.
Плюсы:
- Очень хороший Free Tier:
- Дают только 512 MB оперативной памяти, но их можно распределить между несколькими серверами по своему усмотрению. Легкие Python боты прекрасно работают при 64 MB, т.е. потенциально можно захостить 6-8 программ.
- Free Tier работает на основе среднемесячной квоты, т.е. в пиковые периоды или при тестировании можно выбирать больше чем 512 MB, если в другие брать меньше
- Дополнительно предоставляется память под запуск контейнеров.
- К виртуалке можно добавить дополнительные сервисы, например, БД или мониторинг.
- Даже при отсутствии внешних запросов сервисы не направляются в сон по таймауту (как в том же Heroku). Однако все виртуалки должны иметь возможность что-то ответить на web-запрос, если виртуальная машина не отвечает, то это расценивается облаком как то, что она упала.
- UPD 09.2018: Судя по комментариям к этой заметке, возможно, уже что-то поменялось. Хотя, это также может быть и “проблема в стиле AWS” - когда, пока не выставят счет, не поймешь, сколько надо платить. Со своей стороны, тем, кто думает попробовать облако IBM, рекомендую для начала попробовать новый начальный тариф, в котором даже номер кредитной карточки не надо указывать.
- Деплой своих программ достаточно прост и логичен. Делается через свой адаптированный клиент, который особого раздражения не взывает.
- Большой выбор поддерживаемых технологий и несколько датацентров на выбор
- Достаточно легко настроить SSL, нужно просто загрузить сертификат и настроить DNS. К сожалению пока нету собственной автоматизации получения/обновления сертификатов
- По умолчанию настроен перезапуск виртуальной машины при ее падении. Удобно, что не надо заморачиваться.
Минусы:
- Стабильность неидеальна. За год пару раз сталкивался с даунтаймом сервисов. Хорошо, что сами запущенные программы не падают. Недоступными становятся разные поддерживающие сервисы, например не работает деплой или админка.
- Деплой может идти долго по времени. Так настроено, что при каждом деплое на сервере полностью пересобирается контейнер и заново устанавливаются зависимости, даже если конфигурация виртуалки не менялась. Обновление простого сервиса с парой внешних зависимостей может занимать минуту. Но с этим, вроде, постепенно становится лучше.
- Во время редеплоя виртуалка уходит в даунтайм. Для сервисов, от которых ожидается непрерывность работы, это плохо. В документации рекомендуют вручную запускать параллельную виртуалку и потом менять роутинг.
- Сложновато разбираться с багами при работе виртуалки. Инструментарий в этой части немного хромает. С парой неприятных проблем я так и смог справиться, т.к. на локальной машине они не воспроизводились и были связаны именно с работой в облаке.
- Не совсем минус, но особенность, что облако дает вашему сервису только 2 минуты на ответ на внешний web-запрос. Если на запрос нет ответа в течение 2-х минут, то считается, что виртуалка упала и будет принудительно перезагружена.
Heroku (PaaS)
Немного пользовался, но в итоге перешел на IBM Bluemix, так как необходимо было запускать несколько сервисов, в том числе без ухода в сон.
Плюсы:
- Во Free Tier выдают 550-1000 часов работы виртуальной машины, что соответствует почти 2 круглосуточно работающим машинам
- Удобный отработанный API для быстрой развертки проекта у себя. Возможность создать для проекта “Установщик в одну кнопку” - Heroku Button.
Минусы:
- Компания продолжает искать свою бизнес-модель и поэтому периодически меняют тарифную линейку.
- Виртуалки на Free Tier после 30 минут без внешних запросов уходят в сон. С одной стороны, это удобно, так как экономит ресурсы, а, с другой, приводит к небольшой задержке после выхода.
Amazon Web Services (IaaS, PaaS)
Плюсы:
- Представляю полноценный VPS сроком на 1 год. Причем можно выбрать виртуальную машину с Windows.
- Есть PaaS, называется AWS Elastic Beanstalk. Отдельного Tier нет, но, предположительно, можно использовать для него бесплатно предоставляемый VPS.
- Еще очень интересным является сервис AWS Lambda, в котором используется serverless подход и оплата только ха реально потраченные на выполнение задачи ресурсы.
Минусы:
- Сложный биллинг. Практически невозможно сказать заранее, во сколько обойдется работа сервиса. В качестве альтернативы можно использовать их же сервис AWS Lightsail, который построен как обычный провайдер VPS (вроде Digital Ocean).
Google App Engine (IaaS, PaaS)
Особо не пользовался, так как до недавнего времени у них был доступен только старый Python 2.7.
При регистрации дают $300 на использование услуг. Есть постоянный Free Tier на ~1,5 инстанса в месяц.
OpenShift (PaaS)
Использовал для самого первого учебного проекта Облако тегов. Этот проект запускался давно, к настоящему времени тарифную линейку и платформу успели обновить. Мои комментарии больше относятся к тому, что сейчас называется OpenShift Online 2.
Плюсы:
- Неплохой Free Tier. Ранее давали 3 виртуалки по 512 МБ. Сейчас дают 1ГБ памяти и только 1 проект.
- Быстрое развертывание приложений. Уже не помню, есть ли при редеплое даунтайм.
Минусы:
- Ужасная утилита для управления виртуальными машинами. Написана на Ruby и требует конкретных версий интерпретатора. Когда я активно работал с OpenShift, утилита не работала на более свежих версиях Ruby.
- Не очень удобно, что развертывание идет через Git и при создании новой конфигурации виртуальной машины в локальную директорию автоматически клонируется, затирая все внутри, базовое приложение-заглушка. Не уверен, что можно взять уже существующую директорию с Git и залить ее в облако.
PythonAnywhere (PaaS)
Сервис предназначен больше для обучения, а не для хостинга приложений. Поэтому у него есть своя специфика.
Плюсы:
- Предоставляет интерактивная среда Jupyter для обучения и анализа данных
- Можно запустить свой скрипт как полноценное приложение во Free Tier
Минусы:
- На скрипты есть ограничения по количеству потоков. Серьезное приложение разместить не получится.
- Бесплатные аккаунты на Pythonanywhere могут делать исходящие соединения только по сайтам из белого списка.
Заключение
Как я уже писал, в основном я использую PaaS от IBM Bluemix. Именно к нему и рекомендую присмотреться, если нужен простой доступный PaaS. Если нужно что-то более серьезное, надо уже присматриваться к полноценным VPS провайдерам (может быть в скором времени будет на них тоже обзор).