Architecture Decision Record

Active theme: Light

← Các ví dụ về bản ghi quyết định

Bản ghi quyết định kiến trúc cho Framework Python Django

Ngày quyết định: 2021-07-15

Trạng thái: Đã chấp nhận

Bối cảnh

Tổ chức của chúng tôi đang lên kế hoạch phát triển một ứng dụng web quản lý dữ liệu khách hàng. Chúng tôi đã chọn Python làm ngôn ngữ lập trình và đang cân nhắc Django làm framework web để phát triển ứng dụng.

Quyết định

Chúng tôi đã quyết định dùng framework web Django để phát triển ứng dụng web. Django cung cấp một bộ công cụ và tính năng vững chắc để xây dựng các ứng dụng web nhanh chóng và hiệu quả.

Các yếu tố

Một số yếu tố ảnh hưởng đến quyết định của chúng tôi bao gồm:

  1. Ánh xạ đối tượng-quan hệ (ORM): Django có ORM tích hợp cho phép chúng tôi tương tác với cơ sở dữ liệu mà không cần viết truy vấn SQL. Điều này giúp phát triển ứng dụng dễ hơn và bảo trì nó về lâu dài dễ hơn.

  2. Framework MVC: Django tuân theo kiến trúc Model-View-Controller (MVC), giúp tách lớp logic nghiệp vụ và lớp trình bày của ứng dụng dễ dàng hơn.

  3. Khả năng mở rộng: Django được biết đến với khả năng mở rộng, khiến nó là lựa chọn xuất sắc để phát triển các ứng dụng quy mô lớn.

  4. Bảo mật: Django có các tính năng bảo mật tích hợp, như bảo vệ chống lại các tấn công web phổ biến như cross-site scripting (XSS) và SQL injection.

  5. Hỗ trợ cộng đồng: Django có một cộng đồng lớn và năng động cung cấp hỗ trợ và đóng góp cho sự phát triển của framework.

Các phương án thay thế đã cân nhắc

Chúng tôi đã cân nhắc các framework web khác như Flask và Pyramid. Tuy nhiên, chúng tôi thấy Django là một framework trưởng thành và vững chắc hơn với bộ tính năng mạnh.

Chúng tôi cũng đã thảo luận việc phát triển ứng dụng mà không dùng framework web và dùng các thư viện như SQLAlchemy và Flask-RESTful. Tuy nhiên, chúng tôi thấy Django cung cấp chức năng rộng hơn, khiến nó là lựa chọn tốt hơn cho một ứng dụng web hoàn chỉnh.

Hệ quả

Việc áp dụng Django sẽ dẫn đến các hệ quả sau:

  1. Dễ phát triển và bảo trì ứng dụng hơn nhờ các công cụ và tính năng tích hợp của Django.

  2. Tách biệt logic nghiệp vụ và lớp trình bày, dẫn đến mã có tổ chức hơn và dễ bảo trì hơn.

  3. Khả năng mở rộng và sự vững chắc của ứng dụng.

  4. Các tính năng bảo mật tích hợp giúp bảo vệ ứng dụng chống lại các tấn công web phổ biến.

  5. Tiếp cận một cộng đồng lớn và năng động để được hỗ trợ.

Chúng tôi hiểu rằng Django có đường cong học tập dốc hơn các framework khác, nhưng chúng tôi thấy nó đáng để đầu tư cho các lợi ích dài hạn mà nó mang lại.

Kết luận

Dựa trên các yếu tố đã cân nhắc, chúng tôi đã quyết định dùng framework web Django để phát triển ứng dụng web. Chúng tôi tin rằng các tính năng, sự hỗ trợ của cộng đồng và khả năng mở rộng của Django khiến nó là lựa chọn tốt nhất để xây dựng một ứng dụng web hoàn chỉnh. Chúng tôi sẽ đào tạo các nhà phát triển của mình dùng Django để đảm bảo framework được dùng hiệu quả và hiệu suất.