Назад | Перейти на главную страницу

Размещение нескольких веб-приложений Python или Django - нужен совет по структуре / архитектуре сервера

У нас много веб-приложений / сайтов. Некоторые из них довольно сложные, но многие из них представляют собой простые веб-сайты. В настоящее время мы размещаем около 10 сайтов на одном выделенном сервере, используя nginx и uwsgi. Хотя это очень рентабельно и требует меньше времени на обслуживание (поскольку нам нужно поддерживать 1 сервер на 10 сайтов), у него есть некоторые проблемы, которые мне не нравятся, в том числе:

  1. Обновления - скажем, если я хочу обновить Postgres, мне нужно беспокоиться о 10 сайтах и ​​их конфигурациях. Это делает любые обновления зависимостей, а также обновления ОС очень рискованными и сложными.
  2. Python 3 - мне нужно обновить один проект до Python 3. Хотя virtualenv может позволить мне выполнить обновление, не затрагивая остальную систему, я не уверен в зависимостях, отличных от Python.
  3. Проблемы с ОС - иногда появляются странные проблемы с ОС. Если предположить, что на нем работает один сайт, я мог бы просто использовать балансировщик нагрузки, чтобы направить трафик на отдельный сервер и исправить проблему здесь. Теперь, когда у вас 10 сайтов, это также требует много времени.

Поэтому я думаю о том, как обойти эти проблемы. Несколько вариантов рассматриваю.

  1. AWS - запускайте сложные приложения на отдельных экземплярах, используйте RDS для баз данных. Таким образом, мы также могли масштабировать приложения по отдельности, не беспокоясь о других приложениях. Простые сайты могут размещаться на EC2 или любом другом сервере, поскольку они просты и не требуют регулярных обновлений.

  2. Используйте Docker для размещения этих приложений / сайтов на текущем выделенном сервере, чтобы избежать вышеупомянутых проблем. Я новичок в докере, поэтому не совсем уверен, решит ли он вышеуказанные проблемы.

Каков ваш опыт работы с AWS и / или Docker, на которых размещены веб-приложения Python? Как вы размещаете большое количество приложений / сайтов (я считаю, типичный случай для агентств и фрилансеров)?

AWS - правильный ответ в этом случае!

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

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