Мой опыт работы со Scaleway: плюсы и минусы

Мой опыт работы со Scaleway: плюсы и минусы

30 марта 2023 г.

Несколько лет назад я разработал приложение, которое помогло мне управлять рабочим процессом отправки материалов на конференцию. С тех пор я счастливый пользователь бесплатного плана Heroku. Прошлым летом владелец Heroku, компания Salesforce, объявила о прекращении действия бесплатного плана в ноябре 2022 года.

Я искал нового хостинг-провайдера и нашел Scaleway. В этом посте я хотел бы объяснить свои требования, почему я их выбрал и мой опыт их использования.

Контекст

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

Источником правды является Trello, где я управляю состоянием своих CFP конференции: невыполненные, отправленные, заброшенные, принятые и опубликованные (в этом блоге). Состояние «Готово» — это когда я архивирую опубликованную карточку.

Я написал приложение на Kotlin с помощью Spring Boot. Это веб-приложение, которое прослушивает события изменений из Trello через веб-перехватчики. Событие запускает рабочий процесс BPMN на основе Camunda. Рабочий процесс управляет моим календарем Google и файлом таблицы Google.

Например, когда я перемещаю карточку из невыполненной работы в отправленную, она добавляет конференцию в мой календарь. Событие помечено как «Бесплатное» и имеет особый серый цвет, чтобы обозначить его как местозаполнитель. Он также добавляет строку в Google Sheet со статусом «Отправлено».

Когда я перемещаю карточку из «Отправлено» в «Принято», она меняет цвет события Календаря Google на значение по умолчанию и помечает его как «Занят». Это также изменяет статус Google Таблицы на Принято.

Почему Scaleway?

Как я уже упоминал во введении, я был счастливым пользователем Heroku. Одной из замечательных особенностей Heroku, помимо бесплатного плана, была функция «спящего режима»: когда приложение не использовалось, оно отключалось. По сути, это было масштабирование до нуля для веб-приложений.

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

Я большой поклонник канала Виктора Фарчича на YouTube, Инструментарий DevOps. В то же время, когда Heroku объявил об окончании бесплатного плана, я посмотрел Scaleway — все, что мы ожидаем от службы облачных вычислений?

Случайно Scaleway предлагает бесплатные кредиты стартапам, включая компанию, в которой я сейчас работаю. Мне не потребовалось много времени, чтобы перенести приложение в Scaleway.

Развертывание в Scaleway

Прежде чем описывать развертывание на Scaleway, давайте объясним, как я выполнял развертывание на Heroku. Последний предоставляет репозиторий Git. Каждое нажатие на master запускает сборку на основе того, что может распознать Heroku.

Например, если он видит pom.xml, он знает, что это проект Maven, и соответственно вызывает команду Maven. Под капотом он создает обычный контейнер Docker, сохраняет и запускает его.

Для справки, этот подход лежит в основе Buildpacks, и Heroku является частью его создателей вместе с VMWare. В Heroku разработчики следуют своему обычному рабочему процессу, а платформа выполняет как сборку, так и развертывание.

Scaleway предлагает специальную функцию масштабирования до нуля для своего предложения Serverless Containers. Во-первых, вам нужно иметь уже построенный контейнер. Когда я начал его использовать, контейнер должен был размещаться в специальном реестре контейнеров Scaleway; теперь его можно разместить где угодно.

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

Основные проблемы

Я столкнулся с двумя основными проблемами при использовании Scaleway.

* Графический интерфейс — единственный способ развернуть контейнер:

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

* Вам необходимо заполнять секреты при каждом развертывании:

GitHub и GitLab позволяют настраивать развернутые контейнеры с переменными среды. Таким образом, можно создать один контейнер, но развернуть его в разных средах. Вы можете настроить некоторые переменные среды как секреты. Никто не может их потом прочитать, и они не появляются в логах. Scaleway также предлагает секреты. Однако их необходимо заполнять при каждом развертывании. За пределами пары из них это неуправляемо.

Ошибки и поддержка Scaleway

За короткое время использования Scaleway я обнаружил две ошибки.

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

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

Вторая ошибка произошла в графическом интерфейсе. Форма развертывания сбрасывалась, пока я заполнял разные поля. Я пытался быть достаточно быстрым при заполнении, но безрезультатно. Произошло то же самое, что и с предыдущей проблемой: много переходов туда-сюда, а фактического исправления нет.

Наконец, я попробовал через пару дней после того, как создал тикет, и сообщил в поддержку. Мне ответили, что это нормально, потому что исправили, но мне не сказали.

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

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

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

Ведение журнала

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

Подход Scaleway совершенно другой. Он упорядочивает строки журнала в обратном порядке, самые новые первыми и самые старые последними. Хуже того, нет прокрутки, но есть нумерация страниц. Наконец-то нет автообновления!

Чтобы обновить представление, нужно разбивать страницы назад и вперед, и если появляются новые строки журнала, страницы не отображают одни и те же данные. Это сильно мешает разработчику и затрудняет отслеживание журналов.

Я попытался понять, почему Scaleway реализовал консоль ведения журнала таким образом, и нашел несколько возможных объяснений:

* Инженерное дело не ест свою собачью еду.

* Разработчики не заботятся об опыте разработчиков.

* Так было дешевле.

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

В любом случае это плохо отражается на продукте.

Заключение

Несмотря на то, что я использую Scaleway на 100 % бесплатно, я очень недоволен частью развертывания. Я пришел за бесплатными кредитами и возможностью масштабирования до нуля.

Однако отсутствие приемлемого решения для автоматизированного развертывания и поддержка разнородного качества (чтобы быть дипломатичным) заставляют меня передумать.

С другой стороны, сам сервис Scaleway Cloud до сих пор был надежным. Мой рабочий процесс Trello работает гладко, и я не могу жаловаться. Scaleway типичен для неплохого продукта, испорченного ужасно плохим опытом разработчиков.

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

Дальше:

Первоначально опубликовано на сайте A Java Geek 26 марта 2023 г.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE