Catatan Keputusan Arsitektur: Bahasa pemrograman Rust
Nomor Keputusan: AR-001
Judul Keputusan: Adopsi bahasa pemrograman Rust
Tanggal: 1 Desember 2021
Status: Diterima
Pernyataan Masalah
Seiring kami terus mengembangkan aplikasi perangkat lunak, kami mengamati bahwa semakin sulit memitigasi potensi kerentanan keamanan dan mencegah kesalahan waktu proses. Dengan bahasa pemrograman yang ada, seperti C dan C++, kami terus mengalami masalah seperti buffer overflow, kebocoran memori, dan perilaku tak terdefinisi yang menyebabkan aplikasi mogok. Kami membutuhkan bahasa pemrograman yang memberikan jaminan keamanan memori dan cukup efisien untuk mendukung aplikasi yang kritis terhadap kinerja.
Pertimbangan
Beberapa bahasa pemrograman dirancang untuk mengatasi masalah yang ada. Di antaranya, bahasa pemrograman Rust telah mendapat perhatian besar dari komunitas pengembang karena fitur desainnya yang unik. Pertimbangan mencakup;
Keamanan memori dan keamanan
Kinerja dan efisiensi
Dukungan dan adopsi komunitas
Kurva belajar
Alat dan ekosistem
Kompatibilitas dengan sistem perangkat lunak yang ada.
Batasan
Mengadopsi bahasa pemrograman baru memerlukan pelatihan ulang pengembang, yang membutuhkan waktu dan sumber daya. Mengintegrasikan bahasa ke dalam alur kerja pengembangan yang ada bisa menjadi tantangan. Kami harus memastikan kompatibilitas dengan sistem yang ada dan menghindari perubahan yang merusak demi menjaga kesinambungan.
Implementasi
Tim pengembangan kami akan menjalani pelatihan untuk mempelajari dan membiasakan diri dengan bahasa pemrograman Rust.
Kami akan membuat proyek baru menggunakan Rust secara percobaan untuk mengevaluasi kompatibilitas dan kesesuaiannya untuk tujuan pengembangan kami.
Kami akan secara bertahap memigrasikan sistem yang ada yang ditulis dalam C dan C++ ke Rust.
Kami akan berkolaborasi dengan komunitas Rust untuk menjajaki alat dan pustaka yang tersedia yang dapat meningkatkan alur kerja pengembangan kami.
Kami akan memantau kinerja Rust dan membandingkannya dengan kinerja bahasa pemrograman yang ada secara berkala.
Kami akan mengadopsi pendekatan jangka panjang yang menyeimbangkan biaya pelatihan, integrasi, dan potensi manfaat penggunaan Rust.
Alasan
Kami mengadopsi Rust karena fitur uniknya yang dirancang untuk memberikan jaminan keamanan memori dan keamanan sambil mempertahankan kinerja dan efisiensi. Sistem tipe Rust yang kuat, borrow checker, dan konsep keamanan memori membuatnya sangat cocok untuk mengembangkan aplikasi yang kritis terhadap kinerja dan keselamatan. Selain itu, Rust memiliki komunitas pengembang yang signifikan, sehingga kami dapat mengakses beragam alat, pustaka, dan ekosistem yang mendukung alur kerja pengembangan kami. Meskipun Rust memiliki kurva belajar, kami yakin manfaat mengadopsi Rust lebih besar daripada biayanya dan memberikan peluang yang sangat baik untuk pertumbuhan dan inovasi berkelanjutan.
Konsekuensi
Adopsi Rust akan memerlukan investasi waktu dan sumber daya yang signifikan untuk melatih pengembang dan mengintegrasikan bahasa tersebut ke dalam alur kerja pengembangan yang ada.
Mengadopsi Rust dapat menyebabkan beberapa masalah kompatibilitas dengan sistem yang ada, yang memerlukan refactoring dan modifikasi.
Adopsi Rust dapat meningkatkan jumlah pengembang yang dapat berkontribusi pada proyek kami dengan menarik pengembang Rust yang ingin mengerjakan proyek yang menarik.
Adopsi ini dapat menghasilkan peningkatan kinerja, efisiensi, dan keamanan dibandingkan bahasa yang ada.
Terakhir, mengadopsi Rust membawa potensi manfaat berupa berkurangnya kerentanan keamanan dalam aplikasi kami.