AWS или Yandex Cloud? Выбираю облачный сервер для своего Pet-проекта

Привет! Меня зовут Влад, и я software инженер. Сегодня я расскажу вам о своем опыте использования Yandex Cloud в качестве облачного сервера и о том, что из этого вышло. Вот, как всё началось:

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

Моё лицо, когда я обнаружил что все билеты распроданы
Моё лицо, когда я обнаружил что все билеты распроданы

"Не беда, не в первый раз," думаю я. Оформляю оповещение о свободных билетах в приложении РЖД и жду. Периодически захожу в приложение и мониторю билеты сам.

И, о чудо, свободный билет находится. Быстро покупаю его и облегченно выдыхаю.

Потом появляется мысль: "Так, стоп. А почему приложение не прислало уведомление?" Проверяю, действительно, оповещений не было.

AWS или Yandex Cloud? Выбираю облачный сервер для своего Pet-проекта

В этот момент у меня закрадывается мысль: а что делать, если в следующий раз случится подобная ситуация?

Так родилась идея телеграм-бота @poisk_bileta_bot

Задача была довольно простая: бот должен уметь находить билеты и уведомлять о наличии освободившихся.

Прототип написал за 30 минут, который успешно стартовал на ноутбуке.

Встал вопрос выбора облачного сервиса для деплоя в мир. На тот момент у меня был опыт работы с Amazon AWS, и я знал его подводные камни. Но вот облом — API РЖД не работает с территории из других стран

- Лол что? Я не могу найти билет из-за границы на сайте РЖД?

- Нет, не можешь

А Amazon не позволяет подключать сервера в России. Так я познакомился с Yandex Cloud.

Первое впечатление было: "Как же удобно сделан интерфейс по сравнению с AWS." Затем были отрицание, гнев, торг, депрессия и принятие. Но обо всем по порядку.

Боту много не надо: база данных для сохранения подписок и Docker-контейнер, который будет слушать телеграм-бота и отвечать на запросы пользователя.

У Yandex Cloud есть замечательный сервис для быстрого разворачивания контейнеров: Serverless Containers. Казалось бы, отличный вариант, но вот засада: этот сервис в режиме ожидания не делает НИЧЕГО. Реально ничего. Т.е. он работает только тогда, когда к нему обращаются на публичный адрес, а в режиме простоя даже логи не пишет. Вроде ничего криминального, обычное ограничение системы, но в документации об этом ни слова. Да, кстати, все вопросы, которые у вас могут возникнуть про работу системы, вы скорее всего будете спрашивать у саппорта (хорошо что отвечают они супер быстро), потому что документация супер скудная.

AWS или Yandex Cloud? Выбираю облачный сервер для своего Pet-проекта

Далее взгляд пал на Compute Cloud. Он тоже умеет создавать виртуальные машины из docker-образов и разворачивать их за считанные секунды.

Вроде всё просто: загружаешь образ контейнера, запускаешь виртуальную машину, которая поднимает докер-контейнер внутри себя. Но дьявол кроется в деталях.

Вот на какие грабли наткнулся в процессе создания и настройки виртуалки:

  • Нет базового логирования. Чтобы узнать состояние контейнеров, которые запущены внутри Compute Cloud машины, нужно самостоятельно настраивать передачу логов через сторонние системы (например, fluentd). В случае, если контейнер вообще не стартовал из-за каких-то ошибок, то об этом пользователь вообще никак не узнает из интерфейса.
  • Нет возможности сохранить конфигурацию машины как шаблон для последующей быстрой развёртки.
  • Нет возможности в автоматическом режиме обновить docker images, которые были скачаны при создании виртуальной машины. Чтобы это сделать, нужно напрямую подключаться к машине через ssh и обновлять все images вручную.
  • И вишенка на торте: все environment переменные ты должен указать руками. Из файла их подтянуть можно, но не через интерфейс (как это сделано у AWS).

Несмотря на эти недостатки, у Yandex Cloud есть и свои преимущества по сравнению с AWS:

  • Интерфейс выглядит современно, а не "привет из 90-х", как у Amazon.
  • Быстрые ответы службы поддержки в режиме чата и в режиме обращений.
  • Расположение серверов в России (актуально для компаний, которые не могут использовать зарубежные сервера из-за внутренних политик компании).
  • Возможность оплаты с российских карт.
  • Цена ниже по сравнению с AWS.

Мой личный вывод таков: Yandex Cloud выигрывает у Amazon AWS в некоторых аспектах (например, интерфейс и цена), но в то же время есть и свои проблемы.

Надеюсь, в будущем команда Яндекса будет развивать сервис и устранять все недостатки.

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

AWS или Yandex Cloud? Выбираю облачный сервер для своего Pet-проекта
2 комментария

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

3
Ответить

Да, в этом есть проблема привязки к одному провайдеру услуг

Ответить