Вступ
У наш час програмне забезпечення зазвичай поставляється у вигляді сервісів, що називаються веб-застосунки (web-apps) або software-as-a-service (SaaS). Застосунок дванадцяти факторів — це методологія для створення SaaS-застосунків, які:
- Використовують декларативний формат для автоматизації встановлення та налаштування, що зводить до мінімуму витрати часу і коштів для нових розробників, що приєднуються до проекту;
- Мають угоду з операційною системою, пропонуючи максимальну переносимість між середовищами виконання;
- Придатні для розгортання на сучасних хмарних платформах, що усуває необхідність у серверах та їх системному адмініструванні;
- Мінімізують різницю між середовищем розробки і production середовищем, що дозволяє безперервне розгортання (continuous deployment) для забезпечення максимальної спритності розробки (agility);
- Можуть масштабуватися без значних змін в інструментах, архітектурі і практиці розробки.
Методологію дванадцяти факторів можна використати для застосунків, що написані будь-якою мовою програмування та використовують будь-яку комбінацію із сторонніх служб (бази даних, черги, кеш-пам’ять тощо).
Передумови
Люди, що працювали над цим документом, брали безпосередню участь в розробці і розгортанні сотень застосунків, і мимоволі стали свідками розвитку, експлуатації та масштабування сотень тисяч застосунків під час нашої роботи над платформою Heroku.
В цьому документі узагальнюється весь наш досвід використання і спостереження за найрізноманітнішими SaaS-застосунками “в дикій природі”. Документ об’єднує ідеальні практики розробки застосунків, особлива увага приділяється динаміці органічного росту застосунку з плином часу, взаємодії між розробниками, які працюють над кодом застосунку, та уникненню витрат при ерозії програмного забезпечення.
Наша мета полягає в тому, щоб підвищити обізнаність про деякі системні проблеми, які ми бачили в практиці розробки сучасних застосунків, а також в тому, щоб сформулювати спільні загальні поняття для обговорення цих проблем, і запропонувати набір загальних концептуальних рішень цих проблем з супутньою термінологією. Формат навіяний книгами Мартіна Фаулера (Martin Fowler) Patterns of Enterprise Application Architecture та Refactoring.
Кому слід читати цей документ?
Розробникам, які створюють SaaS-застосунки. Ops-інженерам, які виконують розгортання і керування такими застосунками.