Создание сайта на Python/Django: подбор хостинга

Сегодня немного забегу вперед и остановлюсь на вопросе выбора хостинга для проекта на Django/Python, т.к. это весьма важный вопрос, к которому стоит подойти с высокой долей ответственности. Делая подбор хостинга необходимо заранее учитывать особенности вашего проекта и путь его дальнейшего развития, но это вовсе не значит, что необходимо покупать дорогой вариант с запасом на будущее. Запас конечно необходим, но без лишнего фанатизма. Ведь всегда можно будет докупить мощности, т.е. перейти в более дорогой пакет обслуживания.

На мой взгляд, на начальном этапе для запуска проекта на Django в т.н. production понадобиться самый простой VDS или же виртуальный выделенный сервер. Возникает вопрос – как определить необходимую производительность такого сервера?

Выбираем хостинг для проекта на Django

Ответ на этот вопрос будет зависеть от масштаба реализуемого проекта, но логично, что мы уклонимся от сложных стресс тестов и прочих процедур, которые проводят в крупных проектах. Там это важно, но так как мы пока делаем сайт самостоятельно и его посещаемость и масштабы вряд ли будут чрезмерно большими, а посещаемость не выстрелить сразу до пару сотен тысяч посетителей, то мы пропустим сложности и рассмотрим самый простой вариант с минимальными, на мой взгляд, значениями по ресурсам для запуска. Буду исходить из собственного опыта по одному из моих проектов.

Для запуска небольшого сайта, реализованного на Django/Python я использую сервер VDS с 1 ядром по процессору 2,4 GHz, 2 GB оперативной памяти и 10 Gb SSD диска. На таком сервере у меня работает проект с посещаемостью около 200-300 уников в сутки. При этом стоит понимать, что в зависимости от сложности реализованных алгоритмов в работе сайта, ориентироваться только на количество посетителей не стоит. Возможно возникнет необходимость в увеличении количества ядер и/или ОЗУ. Дополнительное место на диске так же может понадобиться, если планируется загрузка объемного медиа-контента, хотя лучше для этих целей использовать отдельные сервера. Ровно так же и с базой данных. Если проект предусматривает значительные объемы и частые запросы к БД, но БД лучше развернуть на отдельном сервере. Но, думаю, что для старта это нам тоже не понадобиться и мы обойдемся одним сервером, на котором будут работать все и сразу.

Dokku Logo

И так, чтобы развернуть проект на базе Django / Python на сервере я использую Dokku. Dokku — это мини-Heroku и самая компактная реализация PaaS (Platform as a Service — платформа как сервис). Если вы еще не знаете, что такое Heroku, то спросите у Google. Преимущество Heroku и его альтернативы в виде Dokku заключается в простоте процесса выгрузки и запуска проекта в продакшн, т.к. работа происходит через Git. Если вы еще не знает, что такое Git, то подробнее можно посмотреть снова в Гугл, а если коротко, то это система управления версиями. Проще говоря, каждый раз когда вы хотите внести изменения в код вашего проекта, вы создаете некую запись в структуре Git и в ней будут отображены изменения в коде по отношению к предыдущим версиям. Это удобно, т.к. вы всегда можете отследить изменения в коде, вывить причины изменений, вернутся к более ранним версиям и т.п. При разработке ПО это обязательная вещь, но, как показывает практика, его используют не только программисты, но и ученые, педагоги и многие другие для сохранения истории своей работы над тем или иным проектом.

PaaS на основе Git

При выгрузке проекта в продакшн Git используется как источник кода для передачи на сервер и его запуска. В свою очередь Dokku, при условии, что вы настроили проект верно, определяет необходимые компоненты для установки на стороне сервера, создает среду и обеспечивает работу кода и связь между компонентами проекта (такими как БД или файловое хранилище).

И так, думаю, что пока я наговорил слишком много моментов, которые могут показаться отпугивающими для новичков. Поэтому, на данном этапе предлагаю сделать перерыв и усвоить изложенное, а в одной из следующих публикаций продолжим разработку нашего проекта на Django и, само собой, установим Dokku на сервер и сделаем свой первый деплой в продакшн.

Пока все. Удачи!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *