Рубрики
Без рубрики

12-факторные приложения Django

Развертывание веб-приложений имеет много соображений. Большинство веб-приложений должны обрабатывать чувствительную … Теги с Джанго, Python.

Развертывание веб-приложений имеет много соображений. Большинство веб-приложений должны обрабатывать конфиденциальные данные. Для обработки увеличенного трафика приложение должно быть масштабируемым. Если в приложении происходит авария, никакие данные не должны потеряны. Это всего лишь несколько вещей, которые необходимо учитывать. Двенадцать факторных приложений рассматривают много из этих вопросов, и я покажу, как сделать веб-приложение 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”