Развертывание веб-приложений имеет много соображений. Большинство веб-приложений должны обрабатывать конфиденциальные данные. Для обработки увеличенного трафика приложение должно быть масштабируемым. Если в приложении происходит авария, никакие данные не должны потеряны. Это всего лишь несколько вещей, которые необходимо учитывать. Двенадцать факторных приложений рассматривают много из этих вопросов, и я покажу, как сделать веб-приложение Django вести себя как приложение для двенадцати факторов.
Двенадцать факторных приложений Методология – это шаблон, популяризированный по Heroku С целью обрабатывать многие из самых больших соображений в развертывании веб-приложений. Двенадцать факторных приложений работают по-разному из более традиционного веб-приложения. В традиционной среде состояние системы часто запекается в развернутое программное обеспечение. Это состояние может включать в себя информацию, как:
- Соединения с базой данных
- маршруты на другие услуги, такие как memcached
- токены для подключения с внешними службами, такими как полоса
Включая этот вид данных в веб-приложении снижает его гибкость и потенциально небезопасно, поскольку он по существу сохраняет секреты в приложении.
Напротив, приложение для двенадцати факторов – без гражданства Отказ Все состояние и конфигурация, которые могут измениться динамически, вводится через переменные среды. Нажав настройки среды в переменные среды, приложение Twelve-Factor может быть развернуто до различных сред, просто путем изменения настроек. Хотите развернуть ваше приложение в промежуточную среду и производственную среду? Измените переменные среды, и ваше приложение теперь настроено для новой настройки!
Разделение состояния из функции разблокирует ряд новых возможностей.
- С большой легкостью команда может масштабировать их приложение горизонтально, увеличивая количество серверов приложений для обработки дополнительной нагрузки.
- Приложения могут быстро мигрировать в новую среду. Поскольку приложения являются без гражданства, их можно отбросить в старой среде и снова подготовиться в новой среде без потери данных.
Есть и другие преимущества, документированные на веб-сайте Twelve-Factor App, и я настоятельно рекомендую, чтобы вы прочитали его, чтобы увидеть некоторые другие идеи для этих видов приложений.
12-фактор и Джанго
Я работал над несколькими приложениями Django в моей карьере. У этих приложений в основном не были двенадцать факторных приложений, но Мой последний проект, Дирижер колледжа использует двенадцать факторных приложений. Приложение Django требует очень мало дополнительной работы, чтобы сделать его в дванадцати факторных приложении. Самые большие изменения приходят к Джангу settings.py
файл.
Python обнаруживает переменные среды через Os.environ
толковый словарь. Использование приложения для двенадцати фактора Django означает проводку переменных среды к настройкам Django.
Например, Secret_key
Настройка не должна проверяться в контроль источника. Secret_key
можно установить как:
import os SECRET_KEY = os.environ['SECRET_KEY']
Это скучный код На самом лучшем Отказ Прохладная часть об этом коде – это то, как она объявляет о своем намерении. Не предоставив значение по умолчанию, приложение не будет начать, если Secret_key
Переменная среды определена. Это странно хорошее качество. Поскольку вариабельная необходима, она заставляет полную среду развертывания. Когда вся динамическая конфигурация установлена таким образом, вы можете иметь высокую уверенность, что у вас есть вся необходимая конфигурация.
Двенадцать факторных приложений не без понижения. Потому что все должно быть объявлено в средах переменных, Стандарт ./manage.py. Runserver
не будет работать немедленно. На самом деле, ./manage.py
Команда не будет функционировать без какой-либо конфигурации. Чтобы исправить это, я использую Honcho , порт Python Форман Отказ Honcho предоставляет инструменты для работы на двенадцати факторных приложений. С Honcho пользователи определяют Procfile
Чтобы определить, какие команды выполняются, чтобы запустить среду. Вот пример:
web: python manage.py runserver
Когда этот файл определен, вы можете запустить Honcho начать
Чтобы запустить команды. Несмотря на то, что это кажется, скорее всего, сломается, как и раньше, HONCHO делает дополнительный шаг в поисках переменных среды, установленные в .env
файл. .env
Файл использует формат, такой как:
SECRET_KEY='itsasecrettoeverybody'
Для любой переменной, установленной в файле, эта переменная загружается как переменная среды.
Honcho также включает в себя Беги
Команда для одноквартирных команд. Эта команда делает ту же загрузку .env.env.
Как Начать
команда.
$ honcho run python manage.py migrate
Несмотря на то, что приложения для двенадцати факторов требуют дополнительной работы, я считаю, что преимущества, которые их используют, очень ценны. С ОС
Модуль и дополнительный инструмент, вы можете быстро произвести работу Twelve-Factor Django для вашей среды. Если вы сделаете, я надеюсь, что вы видите те же преимущества, которые я видел.
Эта статья впервые появилась на mattlayman.com Отказ
Оригинал: “https://dev.to/mblayman/12-factor-django-apps-37nl”