The Twelve-Factor App

Giới thiệu

Ngày nay, phần mềm thường được chuyển giao như là một dịch vụ: còn được gọi là các ứng dụng web, hay phần mềm-như-một-dịch vụ (software-as-a-service). Ứng dụng 12-hệ số là một phương pháp để xây dựng các ứng dụng phần mềm-như-một-dịch vụ với các tiêu chí sau:

Phương pháp 12-hệ số có thể được áp dụng cho các ứng dụng viết bằng bất kì ngôn ngữ lập trình nào, và sử dụng bất kì kết hợp giữa các dịch vụ backend (cơ sở dữ liệu, queue, memory cache, vv.).

Gốc gác

Tất cả tác giả của tài liệu này đã trực tiếp tham gia vào quá trình phát triển và triển khai của hàng trăm ứng dụng, và gián tiếp theo dõi các quá trình phát triển, vận hành, và mở rộng của hàng nghìn ứng dụng thông qua công việc của chúng tôi trên hệ thống Heroku.

Tài liệu này là cô đọng của tất cả kinh nghiệm và quan sát của chúng tôi trên một số lượng lớn các ứng dụng-như-một-dịch vụ ở ngoài. Đây là kết hợp của kiến thức thực hành chuẩn mực trong việc phát triển ứng dụng, với trọng tâm vào cơ cấu phát triển cơ bản của ứng dụng trong một khoảng thời gian, cơ cấu động của sự hợp tác giữa các lập trình viên đang làm việc trên cùng một mã gốc, và tránh rò rỉ chi phí phát triển phần mềm.

Động lực của chúng tôi là tăng cường nhận thức về các vấn đề hệ thống mà chúng tôi biết với các qui trình phát triển ứng dụng hiện tại, để chia sẻ một kho kiến thức thảo luận về các vấn đề này, và để cung cấp một chuỗi các giải pháp mở chác vấn đề trên và cũng đi kèm với các thuật ngữ chuyên môn. Định dạng này lấy ý tưởng từ cuốn sách Patterns of Enterprise Application ArchitectureRefactoring của ông Martin Fowler.

Ai nên đọc tài liệu này?

Bất kì lập trình viên đang xây dựng các ứng dụng-như-một-dịch vụ. Các kỹ sư hệ thống đảm nhiệm triển khai hoặc quản lý các ứng dụng.

12 hệ số

I. Mã gốc

Một mã gốc được theo dõi với hệ thống quản lý phiên bản, và nhiều lần triển khai

II. Các phụ thuộc

Khai báo rõ ràng và phân tách các phụ thuộc

III. Cấu hình

Lưu trữ cấu hình trong môi trường

IV. Dịch vụ hỗ trợ

Dịch vụ hỗ trợ như là tài nguyên bổ xung

V. Xây dựng, phát hành, vận hành

Tách biệt hoàn toàn giữa bước xây dựng và vận hành

VI. Tiến trình

Vận hành ứng dụng như là một hoặc nhiều tiến trình phi trạng thái

VII. Mở cổng mạng

Cung cấp các dịch vụ thông qua công mạng

VIII. Đồng bộ

Mở rộng theo chiều ngang thông qua mô hình tiến trình

IX. Tính khả dụng

Tối ưu hoá với khởi động nhanh và dừng phần mềm ổn định

X. Sự tương đồng giữa quá trình phát triển và vận hành thực tế

Đảm bảo sự tương đồng giữa môi trường phát triển, kiểm thử và thực tế

XI. Nhật ký

Nhật ký là các luồng sự kiện

XII. Tiến trình quản trị

Thực thi nhiệm vụ quản trị như là một tiến trình