Architecture Decision Record

Active theme: Light

← ตัวอย่างบันทึกการตัดสินใจ

บันทึกการตัดสินใจด้านสถาปัตยกรรมสำหรับเฟรมเวิร์ก Python Django

วันที่ตัดสินใจ: 2021-07-15

สถานะ: ยอมรับ

บริบท

องค์กรของเราวางแผนพัฒนาเว็บแอปพลิเคชันที่จัดการข้อมูลลูกค้า เราเลือก Python เป็นภาษาโปรแกรมและกำลังพิจารณา Django เป็นเฟรมเวิร์กเว็บสำหรับการพัฒนาแอปพลิเคชัน

การตัดสินใจ

เราตัดสินใจใช้เฟรมเวิร์กเว็บ Django สำหรับการพัฒนาเว็บแอปพลิเคชัน Django ให้ชุดเครื่องมือและฟีเจอร์ที่แข็งแกร่งสำหรับการสร้างเว็บแอปพลิเคชันอย่างรวดเร็วและมีประสิทธิภาพ

ปัจจัย

ปัจจัยบางอย่างที่มีอิทธิพลต่อการตัดสินใจของเรารวมถึง:

  1. การแมปวัตถุกับเชิงสัมพันธ์ (ORM): Django มี ORM ในตัวที่ให้เราโต้ตอบกับฐานข้อมูลได้โดยไม่ต้องเขียนคำสั่ง SQL ทำให้พัฒนาแอปพลิเคชันและบำรุงรักษาในระยะยาวได้ง่ายขึ้น

  2. เฟรมเวิร์ก MVC: Django ใช้สถาปัตยกรรม Model-View-Controller (MVC) ทำให้แยกตรรกะทางธุรกิจและชั้นการนำเสนอของแอปพลิเคชันได้ง่ายขึ้น

  3. ความสามารถในการปรับขนาด: Django เป็นที่รู้จักในเรื่องความสามารถในการปรับขนาด ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการพัฒนาแอปพลิเคชันขนาดใหญ่

  4. ความปลอดภัย: Django มีฟีเจอร์ความปลอดภัยในตัว เช่น การป้องกันการโจมตีเว็บทั่วไป เช่น cross-site scripting (XSS) และ SQL injection

  5. การสนับสนุนจากชุมชน: Django มีชุมชนที่ใหญ่และคึกคักที่ให้การสนับสนุนและมีส่วนร่วมในการพัฒนาเฟรมเวิร์ก

ทางเลือกที่พิจารณา

เราพิจารณาเฟรมเวิร์กเว็บอื่น เช่น Flask และ Pyramid อย่างไรก็ตาม เราพบว่า Django เป็นเฟรมเวิร์กที่สมบูรณ์และมั่นคงกว่าพร้อมชุดฟีเจอร์ที่แข็งแกร่ง

เรายังหารือเรื่องการพัฒนาแอปพลิเคชันโดยไม่ใช้เฟรมเวิร์กเว็บและใช้ไลบรารีเช่น SQLAlchemy และ Flask-RESTful อย่างไรก็ตาม เราพบว่า Django เสนอฟังก์ชันที่กว้างกว่า ทำให้เป็นตัวเลือกที่ดีกว่าสำหรับเว็บแอปพลิเคชันที่สมบูรณ์

ผลที่ตามมา

การนำ Django มาใช้จะนำไปสู่ผลที่ตามมาดังนี้:

  1. พัฒนาและบำรุงรักษาแอปพลิเคชันได้ง่ายขึ้นเนื่องจากเครื่องมือและฟีเจอร์ในตัวของ Django

  2. การแยกตรรกะทางธุรกิจและชั้นการนำเสนอ นำไปสู่โค้ดที่เป็นระเบียบและบำรุงรักษาง่ายกว่า

  3. ความสามารถในการปรับขนาดและความแข็งแกร่งของแอปพลิเคชัน

  4. ฟีเจอร์ความปลอดภัยในตัวที่ช่วยปกป้องแอปพลิเคชันจากการโจมตีเว็บทั่วไป

  5. การเข้าถึงชุมชนที่ใหญ่และคึกคักเพื่อขอการสนับสนุน

เราเข้าใจว่า Django มีเส้นโค้งการเรียนรู้ที่ชันกว่าเฟรมเวิร์กอื่น แต่เราเห็นว่าคุ้มค่ากับการลงทุนเพื่อประโยชน์ระยะยาวที่ให้

บทสรุป

จากปัจจัยที่พิจารณา เราตัดสินใจใช้เฟรมเวิร์กเว็บ Django สำหรับการพัฒนาเว็บแอปพลิเคชัน เราเชื่อว่าฟีเจอร์ การสนับสนุนจากชุมชน และความสามารถในการปรับขนาดของ Django ทำให้เป็นตัวเลือกที่ดีที่สุดสำหรับการสร้างเว็บแอปพลิเคชันที่สมบูรณ์ เราจะฝึกอบรมนักพัฒนาของเราให้ใช้ Django เพื่อให้แน่ใจว่าใช้เฟรมเวิร์กอย่างมีประสิทธิภาพและมีประสิทธิผล