Головна
Вступ¶
У наш час програмне забезпечення зазвичай поставляється у вигляді сервісів, що називаються веб-застосунки або програмне-забезпечення-як-послуга. 12-факторний застосунок — це методологія для створення SaaS-застосунків, які:
- Використовують декларативний формат для автоматизації встановлення та налаштування, що зводить до мінімуму витрати часу і коштів для нових розробників, що приєднуються до проєкту;
- Мають чітке узгодження з операційною системою, пропонуючи максимальну переносимість між середовищами виконання;
- Придатні для розгортання на сучасних хмарних платформах, що усуває необхідність у власних серверах та їх системному адмініструванні;
- Мінімізують розбіжності між середовищем розробки і середовищем експлуатації, що дозволяє здійснювати безперервне розгортання для забезпечення максимальної спритності розробки;
- Можуть масштабуватися без значних змін щодо інструментів, архітектури та підходу до розробки.
Методологія дванадцяти факторів може бути застосована до застосунків, написаних будь-якою мовою програмування, і які використовують будь-яку комбінацію додаткових служб (бази даних, черги, кеш-памʼять тощо).
Передумови¶
Люди, що працювали над цим документом, брали безпосередню участь в розробці і розгортанні сотень застосунків, і мимоволі стали свідками розвитку, експлуатації та масштабування сотень тисяч застосунків під час нашої роботи над платформою Heroku.
В цьому документі узагальнюється весь наш досвід використання і спостереження за найрізноманітнішими SaaS-застосунками "в дикій природі". Документ обʼєднує ідеальні практики розробки застосунків, особлива увага приділяється динаміці органічного розвитку застосунку з плином часу, взаємодії між розробниками, які працюють над кодом застосунку, та запобіганню ерозії програмного забезпечення.
Наша мета полягає в тому, щоб підвищити обізнаність про деякі системні проблеми, які ми бачили в практиці розробки сучасних застосунків, а також в тому, щоб сформулювати спільні загальні поняття для обговорення цих проблем, і запропонувати набір загальних концептуальних рішень цих проблем з супутньою термінологією. Формат навіяний книгами Мартіна Фаулера (Martin Fowler) Patterns of Enterprise Application Architecture та Refactoring.
Хто повинен прочитати цей документ?¶
Будь-хто з розробників, які створюють застосунки, які працюють як послуги. Ops-інженери, які розгортають або керують такими застосунками.
Дванадцять факторів¶
I. Кодова база¶
Одна кодова база, що відстежується в системі контролю версій та має багато розгортань
II. Залежності¶
Явно оголошуйте та ізолюйте залежності
III. Конфігурація¶
Зберігайте конфігурацію як частину оточення
IV. Сторонні служби¶
Вважайте сторонні служби (backing services) підʼєднуваними ресурсами
V. Збірка, реліз, виконання¶
Чітко відокремлюйте етапи збірки та виконання
VI. Процеси¶
Запускайте застосунок як один або декілька процесів без збереження внутрішнього стану (stateless)
VII. Привʼязка портів¶
Експортуйте сервіси за допомогою привʼязки портів (port binding)
VIII. Паралелізм¶
Масштабуйте застосунок за допомогою процесів
IX. Одноразовість¶
Максимізуйте надійність за допомогою швидкого запуску та коректного вимкнення
X. Паритет між розробкою та експлуатацією¶
Прагніть максимальної ідентичності development, staging та production середовищ
XI. Журналювання¶
Вважайте журналювання (logs) потоками подій
XII. Задачі адміністрування¶
Виконуйте задачі адміністрування/керування за допомогою разових процесів