Мой опыт работы со 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 г.
Оригинал