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

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

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

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

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

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

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

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

5e8a11af9aa0b6a15f39392a79ccf839.png

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

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

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

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

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

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

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

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

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

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

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

55848ead40782353a9a63f9c5f89532a.png

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

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

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

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

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

  • Нет возможности в автоматическом режиме обновить docker images, которые были скачаны при создании виртуальной машины. Чтобы это сделать, нужно напрямую подключаться к машине через ssh и обновлять все images вручную.

  • И вишенка на торте: все environment переменные ты должен указать руками. Из файла их подтянуть можно, но не через интерфейс (как это сделано у AWS).

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

  • Интерфейс выглядит современно, а не «привет из 90-х», как у Amazon.

  • Быстрые ответы службы поддержки в режиме чата и в режиме обращений.

  • Расположение серверов в России (актуально для компаний, которые не могут использовать зарубежные сервера из-за внутренних политик компании).

  • Возможность оплаты с российских карт.

  • Цена ниже по сравнению с AWS.

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

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

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

eaa406d83e4bf67e1c3d0709196d914a.png

© Habrahabr.ru