-
Кодовая база: храните свою кодовую базу в системе контроля версий, например Git. Убедитесь, что он хорошо организован и легко доступен команде разработчиков.
-
Зависимости. Четко определите зависимости, от которых зависит ваше приложение, например библиотеки, платформы и внешние службы. Используйте менеджеры пакетов, такие как npm или pip, для эффективного управления ими.
-
Конфигурация: сохраните конфигурацию вашего приложения в переменных среды или внешних файлах конфигурации. Избегайте жесткого кодирования значений конфигурации в своем коде, поскольку это может привести к проблемам с обслуживанием.
Пример (Node.js):
const port = process.env.PORT || 3000;
const dbUrl = process.env.DB_URL;
// ...
- Резервные службы: рассматривайте резервные службы (базы данных, очереди сообщений и т. д.) как прикрепленные ресурсы. Подключайтесь к ним через четко определенные интерфейсы и избегайте привязки к поставщику.
Пример (Python – PostgreSQL):
import psycopg2
conn = psycopg2.connect(
dbname=os.environ.get('DB_NAME'),
user=os.environ.get('DB_USER'),
password=os.environ.get('DB_PASSWORD'),
host=os.environ.get('DB_HOST'),
port=os.environ.get('DB_PORT')
)
-
Сборка, выпуск, запуск. Четко разделите этапы сборки, выпуска и запуска вашего приложения. Упростите процесс создания артефактов, их выпуска и запуска в различных средах.
-
Процессы. Запускайте приложение как один или несколько процессов без отслеживания состояния. Избегайте локального хранения состояния приложения, что обеспечивает легкое масштабирование и отказоустойчивость.
Пример (Java – Spring Boot):
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
-
Параллелизм: горизонтально масштабируйте приложение, добавляя больше экземпляров процессов. Разработайте свое приложение так, чтобы оно могло обрабатывать несколько запросов одновременно.
-
Одноразовость: упростите запуск и завершение работы вашего приложения. Используйте процессы быстрого запуска и плавного завершения работы, чтобы минимизировать время простоя и повысить устойчивость.
-
Паритет Dev-Prod: Сохраняйте как можно более схожие среды разработки, промежуточной и производственной среды. Минимизируйте различия, чтобы уменьшить количество проблем, связанных с развертыванием, и обеспечить плавный переход.
-
Журналы. Рассматривайте журналы как потоки событий и делайте их легкодоступными. Используйте централизованные службы ведения журналов или агрегаторы журналов для сбора и анализа журналов из разных экземпляров.
-
Процессы администрирования: предоставляйте административные задачи как разовые процессы для управления вашим приложением. Эти задачи могут включать миграцию базы данных, очистку кэша или другие действия по обслуживанию.
-
Паритет разработки и производства. Обеспечьте согласованность между средами разработки и производства. Используйте технологии контейнеризации, такие как Docker, для создания воспроизводимых сред разработки и производства.
Следуя принципам приложения «Двенадцать факторов», вы можете создавать современные облачные приложения, которые являются масштабируемыми, удобными в обслуживании и отказоустойчивыми. Помните, речь идет не только о написании кода; речь идет о внедрении лучших практик и использовании возможностей облака.
Итак, начните сегодня и создайте свое следующее веб-приложение, используя методологию приложения «Двенадцать факторов»!