Блог CEO, CIO Виктора Карабедянц Блог CEO, CIO Виктора Карабедянц
  • Обо мне
  • Навыки
  • Образование
  • Опыт
  • Проекты
  • Блог
  • CIO аутсорсинг
  • Контакты

Что такое twelve factor app

09 апреля 201909 апреля 2019 / By Виктор
  • Home
  • Что такое twelve factor app

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

Например, Twelve-Factor App, являющийся целым набором полезных факторов для разработки веб-приложений. С их помощью можно не только расширить имеющиеся возможности, но и улучшить имеющиеся механизмы, а именно:

  • Спроектировать разработку с учетом горизонтального масштабирования;
  • Реализовать непрерывное развертывание проекта;
  • Интегрировать разработку с облачными сервисами, включая хостинги.

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

Единый репозиторий

Весь формируемый код должен оставаться в пределах одной системы. То есть, вы сможете пользоваться одним репозиторием как для тестирования, так и для системы контроля версий.

Если же говорить о разработке нескольких приложений, то вы можете выделить определенную часть кода и занести его в обособленный раздел, выстраивая таким образом древо зависимостей.

В некоторых случаях, у вас появится возможность вовремя заметить слабую связь между частями проекта, из-за чего может потребоваться их разделение на отдельные.

Устойчивые зависимости

Очень важно создавать четкие связи. Это обусловлено наличием большого количества разнообразных библиотек и прочих системных факторов, которые должны учитываться всегда. Twelve-Factor App помогает контролировать этот процесс путем создания отдельного манифеста для подобного рода задач.

Например, все наслышаны о Ruby, который выстраивает собственный манифест зависимостей Gemfile. Для их изоляции используется bundle exec. Таким образом, это позволяет упростить работу и ускорить процессы внедрения новых зависимостей. Еще одним ярким примером подобного опционала является Docker.

Конфигурация как свойство

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

Отсюда напрашивается очевидный вывод: конфигурация будет зависима от окружения, которое активно на данный момент. И это правильно. Если код, не включающий в себя критически важные элементы и персональные данные, может быть опубликован, то параметры конфигурации нет. Это и есть один из принципов Twelve-Factor App.

Набор служб

Согласно Twelve-Factor App вы можете использовать весь доступный спектр локальных и сторонних служб, которые так или иначе связаны с настройками конфигурации. Это позволяет избежать проблем с переносом проекта на другую платформу, так как вам не придется адаптировать код под различные сервисы.

Четкое разделение этапов разработки

Любая разработка делится на этапы:

  1. Этап сборки;
  2. Релиз проекта;
  3. Выполнение отдельных процессов.

Twelve-Factor App помогает четко следовать этим этапам и базировать разработку отталкиваясь от возможностей разработчиков. Таким образом, в планировании будут учтены все факторы, влияющие на процесс. Тем не менее, растягивание сроков выполнения может сказаться на автономности работы вашего приложения.

Приложение и процессы

Twelve-Factor App утверждает, что любое приложения должно правильно выстраивать процессы внутри себя. То есть, оно не должно использовать оперативную память или локальное хранилище в качестве постоянного, а попросту не сохранять свое состояние, что актуально в случаях работы с медиафайлами.

Однако, такие вещи как персональные данные и индивидуальные настройки должны не только записываться, но и храниться в безопасном изолированном месте. Это крайне актуально для обеспечения непрерывных сессий.
Независимость от сервера

Twelve-Factor App напоминает о необходимости проектирования независимого от сервера приложения, которое сможет функционировать самодостаточно. Реализация проста: учитывайте подключения сторонних библиотек, указывая путь к их веб-серверам. Например, для PHP нужен ReactPHP и т.д.

Возможность масштабирования

Масштабируемость проекта очень важна для дальнейших нововведений, а также для поддержания высокой производительности. Вам может понадобится отправлять HTTP-запросы за счет стандартного веб-процесса, тогда как задачи в фоне удобнее реализовывать за счет рабочего процесса. Главное, следить за реальным исполнением задачи, а не его имитацией.

Старт и завершение

Эти два процесса не позволяют сохранять текущее состояние, а потому, важно реализовать их максимально быстрое выполнение, чтобы избежать критических потерь данных, особенно в аварийных ситуациях.

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

Максимально быстрое развертывание

Начало разработки и разворачивание проекта – это те этапы, между которыми нужно максимально сократить затрачиваемое время. Учитывайте следующие факторы:

  • Время: рабочий релиз должен быть запущен спустя несколько часов, а не несколько дней;
  • Люди: предоставьте разработчику возможность следить за процессом развертывания;
  • Инструменты: создавайте максимально идентичные условия для разработки и тестирования.

Логи в stdout

Согласно Twelve-Factor App приложение должно использовать stdout для записи логов и управления файлами, так как оно не должно самостоятельно заниматься данными процессами. Очевидно, что это позволяет следить за работоспособностью проекта более эффективно.

Администрирование

Администрирование должно быть сведено ко всем остальным процессам:

  • Все коды объединяются в репозитории
  • Всегда заносить новые зависимости в манифест
  • Закладывать конфигурации в переменные окружения для максимальной гибкости

DevOps инженер с 10-и летним опытом возьмется за профессиональное курирование разработки ПО. Обращайтесь!

About The Author

Виктор

Leave a Comment

Cancel Reply

*Please complete all fields correctly

В блоге представлены не только мои материалы, я делаю композицию из разных материалов, а так же размещаю переводы интересных тем.

Категории
  • DevOps
  • Без рубрики
  • ИТ поддержка
  • Руководитель ИТ
Популярные статьи
  • 10 причин, по которым компании привлекают своих ИТ-директоров на аутсорсингВторник - 29 июня, 2021
  • Какие нужны знания, чтобы работать DevOps-инженером: основные навыкиЧетверг - 17 июня, 2021
  • Тренд на SASE: что это и зачем нужноСреда - 12 мая, 2021
  • Ключевые вызовы для ИТ-директоров при разработке корпоративного ПО в 2021…Среда - 21 апреля, 2021
  • 5 важных тезисов для CIO по работе с ИИСреда - 14 апреля, 2021
Tags
CIO DevOps service desk Безопасность ИТ директор ИТ менеджер Удаленный ИТ директор контейнеры
Комментарии
  • Использование KPI (ключевой показатель эффективности) для оценки зрелости DevOps и планирование преобразования Понедельник - февраля 06, 2023 12:01 дп
  • Поиск доступности в облаке Воскресенье - февраля 05, 2023 11:54 пп
  • Поиск доступности в облаке Воскресенье - февраля 05, 2023 08:17 пп
  • Поиск доступности в облаке Воскресенье - февраля 05, 2023 06:50 пп
  • Поиск доступности в облаке Воскресенье - февраля 05, 2023 05:44 пп
© 2017 - 2019 Виктор Карабедянц
Posting....