12 Điều răn không phải của Chúa, mà là từ những Software Architect truyền lại những kinh nghiệm xây dựng ứng dụng.

1-Codebase

Quản lý code (Git, Git Flow)

2-Depencies

Quản lý thư viện mà ứng dụng phụ thuộc bằng khai báo ra file cụ thể (kiểu như package.json trong Node.js)

3- Config

Lưu cấu hình (hãy dùng centralized, high-availability configuration store - coreos-etcd)

4-Backing Services

Coi dịch vụ CSDL, Message Queue phía sau là tài nguyên có thêm / bớt dễ dàng. Ứng dụng tuyệt đối không nên gắn chặt sống còn vào một tài nguyên cụ thể nào vì điều này khiến hệ thống khó mở rộng.

5- Build, Release, Run

Tách bạch 3 thời kỳ: Build - Release - Run. Việc này tốt cho việc bảo mật.

6- Processes

Vận hành ứng dụng bằng nhiều tiến trình không lưu giữ trạng thái (stateless process). Stateless process sẽ giúp hệ thống mở rộng tốt hơn, dễ hơn, ít lỗi hơn so với state process.

7- Port binding

Cung cấp dịch vụ qua các port khác nhau - sử dụng port binding. Đây là mô hình API Gateway trong

8- Concurrency

Mở rộng bằng thêm nhiều dịch vụ độc lập chứ không bằng cách tăng sức mạnh phần cứng

9- Disposability

Khởi động nhanh - thu hồi sạch sẽ tốt hơn khởi động chậm, khi thoát không giải phóng hết bộ nhớ.

10-Dev/ prod parity

Đồng bộ giữa thời kỳ phát triển và triển khai như vậy dễ gỡ rối và chuyển từ phát triển sang triển khai mới nhanh, liên tục được

11- Logs

Coi log là một chuỗi sự kiện thời sự để xử lý thời gian thực.

12- Admin processes

Quản trị hệ thống nên là một tiến trình độc lập, có thể gắn - hoặc tách ra khỏi ứng dụng đang chạy.

https://12factor.net

Sorfware Architect mang lại giá trị các ứng dụng, tham gia tìm hiểu các khóa học tại Techmaster  xây dựng factors app.