Architecture Decision Record

Active theme: Light

← Contoh catatan keputusan

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;

  1. Keamanan memori dan keamanan

  2. Kinerja dan efisiensi

  3. Dukungan dan adopsi komunitas

  4. Kurva belajar

  5. Alat dan ekosistem

  6. 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

  1. Tim pengembangan kami akan menjalani pelatihan untuk mempelajari dan membiasakan diri dengan bahasa pemrograman Rust.

  2. Kami akan membuat proyek baru menggunakan Rust secara percobaan untuk mengevaluasi kompatibilitas dan kesesuaiannya untuk tujuan pengembangan kami.

  3. Kami akan secara bertahap memigrasikan sistem yang ada yang ditulis dalam C dan C++ ke Rust.

  4. Kami akan berkolaborasi dengan komunitas Rust untuk menjajaki alat dan pustaka yang tersedia yang dapat meningkatkan alur kerja pengembangan kami.

  5. Kami akan memantau kinerja Rust dan membandingkannya dengan kinerja bahasa pemrograman yang ada secara berkala.

  6. 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

  1. 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.

  2. Mengadopsi Rust dapat menyebabkan beberapa masalah kompatibilitas dengan sistem yang ada, yang memerlukan refactoring dan modifikasi.

  3. Adopsi Rust dapat meningkatkan jumlah pengembang yang dapat berkontribusi pada proyek kami dengan menarik pengembang Rust yang ingin mengerjakan proyek yang menarik.

  4. Adopsi ini dapat menghasilkan peningkatan kinerja, efisiensi, dan keamanan dibandingkan bahasa yang ada.

  5. Terakhir, mengadopsi Rust membawa potensi manfaat berupa berkurangnya kerentanan keamanan dalam aplikasi kami.

Kredit: halaman ini dihasilkan oleh ChatGPT, lalu disunting agar jelas dan rapi formatnya.