Профессиональное развертывание не сохранит исходный код на удаленном сервере по нескольким причинам:
Это менее безопасно. Если вы можете изменить запущенное приложение, отредактировав исходный код и перекомпилировав (или даже если изменения развернуты автоматически), злоумышленнику будет гораздо проще сделать то же самое .
Это менее стабильно. Что происходит с пользователями, которые пытаются получить доступ к вашему приложению во время редактирования исходных файлов или перекомпиляции? В лучшем случае они получают страницу с ошибкой; в худшем случае они могут получить мусорную реакцию или даже утечку данных клиента.
Это менее проверяемое. Если вы редактируете свой исходный код и сразу же развертываетесь, как вы тестируете, чтобы убедиться, что ваше приложение работает? Бросать непроверенный баг-код прямо в ваших пользователей крайне непрофессионально.
Он менее масштабируемый. Если вы можете хранить исходный код на сервере, то по определению у вас есть только один сервер. (Или, что еще лучше, небольшое количество серверов с общей файловой системой.) Но это не очень масштабируемо: вы явно размещены только в одном географическом местоположении и, таким образом, уязвимы для всех видов единичных точек отказа. Профессиональное развертывание в масштабах сети должно быть географически распределенным и избыточным на каждом уровне приложения.
Если вам нужен «быстрый итеративный цикл разработки», то лучший способ сделать это - локальная среда разработки , которая может включать локальную виртуальную машину (управляемую чем-то вроде Vagrant) или локальный контейнер (управляемый чем-то вроде Docker). Виртуальные машины и контейнеры предоставляют механизмы для сопоставления локального каталога, содержащего ваш исходный код, с работающим сервером приложений.