Как правильно организовывать работу нескольких приложений на 1 VDS?

Развернул 2 приложения на 1 VDS (на разных портах). При развертывании приложений задался вопросом имеет ли смысл создавать отдельного пользователя на отдельное приложение?

Конечно, думаю что с точки безопасности - это вроде как имеет смысл, а с точки зрения производительности? Будет ли система потреблять больше ресурсов или ничего не изменится?

И надо ли создавать для каждого приложения отдельно виртуальное окружение? Может, иметь только 1 общее, просто пути прописать для каждого приложения?

Да, понимаю, что виртуальное окружение работает как песочница - чисто под нужды проекта, но если несколько проектов могут работать на 1 виртуальном окружении - это же какая экономия места на диске...

Кто как решает эти вопросы?


Ответы (2 шт):

Автор решения: S.H.

я не хочу агитировать Вас за очевидное, но я бы поместил каждое приложение в отдельный докер - контейнер, а перед ними поставил бы nginx, который по именам "разруливает", на какой из контейнеров "кинуть коннект".

А всё это описал в одном докер-композе.

Премущества:

Все приложения работают на стандартных портах, разница - только имени. Например, app1.mydomain.ru и app2.mydomain.ru

во вторых, у Вас есть строгая изоляция. даже не на уровне виртуальных окрежений, а на гораздо более "изолированном" уровне докер-контейнеров.

Предположим, вы встали не с той ноги и переписали одно из приложений на Go. Нет проблем! в виде контейнера оно установится на Ваш хостинг точно так же.

Экономия места тут работает так: если мы "наследуемся" от одного образа - то место занимают только "различия".

Ну, и наконец, это "очень протоптанная дорога": сейчас так делают примерно все и примерно всё. :-) Это означает, что советов - надают!

→ Ссылка
Автор решения: Kluev


Создание различных пользователей и/или различных виртуальных окружений зависит от схожести стеков самих приложений.
Из личного опыта, я не создаю различных пользователей для приложений, но точно создаю раздельные виртуальные окружения.
С приложениями работаю через screen, утилита позволяет работать с "окнами" терминала.

sudo apt install screen

Чтобы создать окно используется флаг -S

screen -S some_screen_name

После чего ты окажешься в "отдельном" окне терминала, там же ты можешь работать с конкретным приложением.
Чтобы выйти обратно нужно нажать ctrl + A и потом D

Чтобы перейти в уже созданное окно, используется флаг -r

screen -r some_screen_name

Таким образом можно создать несколько необходимых папок с виртуальными окружениями и комфортно с ними работать через screen.
Если ты решишь делать отдельных пользователей, то screen будет так же удобен.

→ Ссылка