Django и кластеры
Во времена, когда придумывали Django, про контейниразацию никто не думал — люди просто делали админку для сайта газеты. Несмотря на узкую направленность, архитекторы заложили достаточный запас, чтобы Django спокойно жила в современном облачном мире.
Во-первых, они сделали модульную абстракцию от системы хранения — просто подключаем любой модуль из django-storages вместо FileSystemStorage и перестаём думать о хранении файлов.
Во-вторых, Django запускается через общепринятый протокол WSGI, что позволяет как угодно настраивать мультипоточность при помощи того же UWSGI. Я рекомендую классический master mode с двумя воркерами на контейнер, и ограничение по количеству запросов на каждый, чтобы не есть память.
В-третьих, почти вся функциональность, нужная для современного девопса, в Django сделана через удобные внешние зависимости.
— Мониторинг статистики через Datadog. Просто заводим его на каждой машине в кластере и получаем в дополнение ещё и мониторинг серверов.
— Сбор статистики через statsd. Можно использовать dogstatsd из того же Датадога, либо взять оригинальный, если хотите держать значения метрик у себя.
— Мониторинг ошибок — просто ставим sentry.
— Логирование — что угодно, мы в ГдеМатериале используем Papertrail, но можно тот же datadog
— Мониторинг здоровья контейнеров — django-healtchecks.
P.S. Кстати, Django работает и с модным serverless, так что если вы модный хипстер — обязательно посмотрите Zappa.
Во времена, когда придумывали Django, про контейниразацию никто не думал — люди просто делали админку для сайта газеты. Несмотря на узкую направленность, архитекторы заложили достаточный запас, чтобы Django спокойно жила в современном облачном мире.
Во-первых, они сделали модульную абстракцию от системы хранения — просто подключаем любой модуль из django-storages вместо FileSystemStorage и перестаём думать о хранении файлов.
Во-вторых, Django запускается через общепринятый протокол WSGI, что позволяет как угодно настраивать мультипоточность при помощи того же UWSGI. Я рекомендую классический master mode с двумя воркерами на контейнер, и ограничение по количеству запросов на каждый, чтобы не есть память.
В-третьих, почти вся функциональность, нужная для современного девопса, в Django сделана через удобные внешние зависимости.
— Мониторинг статистики через Datadog. Просто заводим его на каждой машине в кластере и получаем в дополнение ещё и мониторинг серверов.
— Сбор статистики через statsd. Можно использовать dogstatsd из того же Датадога, либо взять оригинальный, если хотите держать значения метрик у себя.
— Мониторинг ошибок — просто ставим sentry.
— Логирование — что угодно, мы в ГдеМатериале используем Papertrail, но можно тот же datadog
— Мониторинг здоровья контейнеров — django-healtchecks.
P.S. Кстати, Django работает и с модным serverless, так что если вы модный хипстер — обязательно посмотрите Zappa.