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