Вышел Rails 8, и в новом приложении по умолчанию Kamal 2. У меня шесть клиентов на Capistrano, всё работает годами: один VPS, Puma под systemd, nginx, MySQL на том же сервере. Новый клиент из Всеволожска как раз стартует на 8.0, и я думаю, тащить ему Capistrano по привычке или переходить на Kamal. Кто уже переводил что-то маленькое, есть смысл для одного сервера?
Для одного сервера Kamal хорош тем, что сервер становится одноразовым: поставили Docker, а всё, что нужно приложению, описано в репозитории. Через три года клиент переезжает к другому хостеру, и вы поднимаете всё за вечер, а не вспоминаете, какие пакеты ставили и какой версии был ruby-build. Деплой без простоя из коробки. Минусы: нужен registry для образов, сборка образа дольше, чем git pull, и клиенту, который сам заходит на сервер, Docker будет непонятнее.
Я на Capistrano остался. Клиенту важнее, чтобы любой фрилансер после меня разобрался, а Capistrano знают все
Попробовал Kamal 2 на новом клиенте. VPS на 4 ГБ, образ собирается в CI и кладётся в registry, на сервере только Docker. MySQL как accessory, бэкап кроном на хосте. Первый деплой вместе с настройкой занял полдня, из них два часа я разбирался, почему образ, собранный на ноутбуке с ARM, не запускается на x86. Решил через builder: arch: amd64 и сборку в CI. Дальше деплой 2-3 минуты, откат на прошлую версию через kamal rollback за 20 секунд, проверил специально. Старых клиентов оставляю на Capistrano, переводить буду только при переезде на новый сервер. В оценку новому клиенту заложил на 4 часа больше обычного, примерно столько и ушло.