Мне интересно услышать, как люди производят развертывание и обновление своих веб-приложений на Лиспе (особенно обновления).
В Ruby многие, включая меня, используют Capistrano для развертываний. Это обеспечивает некоторую приятную косвенность и возможность удаленного выполнения команд, а главное (на мой взгляд) возможность отката к работающей кодовой базе.
Я знаю, что идея долго работающего процесса Lisp, связанного с помощью Swank через SSH-туннель и модифицированного на месте, является популярной идеей, которая не работает, но я не выпил этот Koolaid, главным образом из-за проблемы обновление процесса с отслеживанием состояния (который, похоже, вызывает проблемы, если что-то идет не так, как непредвиденные несоответствия импеданса между текущим состоянием в памяти и новыми определениями объектов, которые скоро будут в памяти).
Учитывая, что вы можете создавать почти не сохраняющие состояния (или полностью) веб-приложения, используя hunchentoot (или вставить свой любимый сервер приложений на Лиспе здесь), кажется, что использование чего-то вроде Capistrano может быть использовано и для бесперебойного обновления кода на Лисп, если Лисп процесс (ы) прячется за nginx в его восходящем канале, и если вы можете правильно поставить хореографию, отключая процессы hunchentoot и раскручивая их обратно после обновления кода, например, восстанавливайте их все время, оставляя хотя бы один процесс hunchentoot запущенным в кластер в любой момент (можно использовать CGI или mod_lisp, но я не особенно заинтересован в этом подходе - хотя, если вам действительно нравится этот подход, пожалуйста, по крайней мере, скажите что-нибудь об этом, я хочу изучить). Например, используя Passenger (который сравнивает апельсины с яблоками, поскольку он ускоряет процессы по требованию), вы нажимаете tmp / restart.txt, и на этот раз сервер приложений перезагружается со свежим обновленным кодом - без перебоев с точки зрения пользователей.
Ну, это немного странно, и на самом деле я собираюсь попробовать все это, но я хотел бы получить отзывы об этих идеях от других. Может быть, у вас есть идея получше.
Спасибо