Architecture Decision Record

Active theme: Light

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

บันทึกการตัดสินใจด้านสถาปัตยกรรม: ภาษาโปรแกรม Rust

หมายเลขการตัดสินใจ: AR-001

ชื่อการตัดสินใจ: การนำภาษาโปรแกรม Rust มาใช้

วันที่: 1 ธันวาคม 2021

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

คำชี้แจงปัญหา

ในขณะที่เราพัฒนาแอปพลิเคชันซอฟต์แวร์ต่อไป เราสังเกตว่าการลดช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นและป้องกันข้อผิดพลาดขณะทำงานกำลังท้าทายมากขึ้นเรื่อย ๆ ด้วยภาษาโปรแกรมที่มีอยู่ เช่น C และ C++ เรายังคงพบปัญหา เช่น บัฟเฟอร์ล้น หน่วยความจำรั่ว และพฤติกรรมที่ไม่ได้กำหนดซึ่งนำไปสู่แอปพลิเคชันขัดข้อง เราต้องการภาษาโปรแกรมที่ให้การรับประกันความปลอดภัยของหน่วยความจำและมีประสิทธิภาพพอที่จะรองรับแอปพลิเคชันที่ประสิทธิภาพสำคัญ

ข้อพิจารณา

มีภาษาโปรแกรมหลายภาษาที่ออกแบบมาเพื่อแก้ปัญหาที่มีอยู่ ในบรรดาภาษาเหล่านั้น ภาษาโปรแกรม Rust ได้รับความสนใจอย่างมากจากชุมชนนักพัฒนาเพราะลักษณะการออกแบบที่เป็นเอกลักษณ์ ข้อพิจารณารวมถึง;

  1. ความปลอดภัยของหน่วยความจำและความปลอดภัย

  2. ประสิทธิภาพและความมีประสิทธิภาพ

  3. การสนับสนุนจากชุมชนและการนำไปใช้

  4. เส้นโค้งการเรียนรู้

  5. เครื่องมือและระบบนิเวศ

  6. ความเข้ากันได้กับระบบซอฟต์แวร์ที่มีอยู่

ข้อจำกัด

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

การนำไปใช้

  1. ทีมพัฒนาของเราจะเข้ารับการฝึกอบรมเพื่อเรียนรู้และทำความคุ้นเคยกับภาษาโปรแกรม Rust

  2. เราจะสร้างโครงการใหม่โดยใช้ Rust แบบทดลองเพื่อประเมินความเข้ากันได้และความเหมาะสมกับวัตถุประสงค์การพัฒนาของเรา

  3. เราจะย้ายระบบที่มีอยู่ที่เขียนด้วย C และ C++ ไปยัง Rust ทีละน้อย

  4. เราจะทำงานร่วมกับชุมชน Rust เพื่อสำรวจเครื่องมือและไลบรารีที่มีอยู่ซึ่งช่วยปรับปรุงเวิร์กโฟลว์การพัฒนาของเรา

  5. เราจะติดตามประสิทธิภาพของ Rust และเปรียบเทียบกับประสิทธิภาพของภาษาโปรแกรมที่มีอยู่เป็นประจำ

  6. เราจะใช้แนวทางระยะยาวที่สมดุลระหว่างต้นทุนของการฝึกอบรม การรวมระบบ และประโยชน์ที่อาจได้จากการใช้ Rust

เหตุผล

เรานำ Rust มาใช้เพราะฟีเจอร์ที่เป็นเอกลักษณ์ซึ่งออกแบบมาเพื่อให้การรับประกันความปลอดภัยของหน่วยความจำและความปลอดภัย ในขณะที่รักษาประสิทธิภาพและความมีประสิทธิภาพ ระบบชนิดข้อมูลที่แข็งแกร่ง ตัวตรวจสอบการยืม (borrow checker) และแนวคิดความปลอดภัยของหน่วยความจำของ Rust ทำให้เหมาะอย่างยิ่งสำหรับการพัฒนาแอปพลิเคชันที่ประสิทธิภาพสำคัญและความปลอดภัยสำคัญ นอกจากนี้ Rust มีชุมชนนักพัฒนาที่สำคัญ ทำให้เราเข้าถึงเครื่องมือ ไลบรารี และระบบนิเวศหลากหลายที่สนับสนุนเวิร์กโฟลว์การพัฒนาของเรา แม้ Rust จะมาพร้อมเส้นโค้งการเรียนรู้ เราเชื่อว่าประโยชน์ของการนำ Rust มาใช้มีมากกว่าต้นทุนและให้โอกาสที่ยอดเยี่ยมสำหรับการเติบโตและนวัตกรรมอย่างต่อเนื่อง

ผลที่ตามมา

  1. การนำ Rust มาใช้ต้องลงทุนเวลาและทรัพยากรอย่างมากเพื่อฝึกอบรมนักพัฒนาและรวมภาษาเข้ากับเวิร์กโฟลว์การพัฒนาที่มีอยู่

  2. การนำ Rust มาใช้อาจก่อให้เกิดปัญหาความเข้ากันได้กับระบบที่มีอยู่ในระดับหนึ่ง ต้องปรับโครงสร้างโค้ดและแก้ไข

  3. การนำ Rust มาใช้อาจเพิ่มจำนวนนักพัฒนาที่ร่วมโครงการของเราได้โดยดึงดูดนักพัฒนา Rust ที่ต้องการทำงานในโครงการที่น่าตื่นเต้น

  4. การนำมาใช้อาจนำไปสู่ประสิทธิภาพ ความมีประสิทธิภาพ และความปลอดภัยที่ดีขึ้นเมื่อเทียบกับภาษาที่มีอยู่

  5. สุดท้าย การนำ Rust มาใช้มีประโยชน์ที่เป็นไปได้ในการลดช่องโหว่ด้านความปลอดภัยในแอปพลิเคชันของเรา

การระบุที่มา: หน้านี้สร้างโดย ChatGPT แล้วแก้ไขเพื่อความชัดเจนและรูปแบบ