아키텍처 의사결정 기록: Rust 프로그래밍 언어
결정 번호: AR-001
결정 제목: Rust 프로그래밍 언어 도입
날짜: 2021년 12월 1일
상태: 수락됨
문제 기술
소프트웨어 애플리케이션을 계속 개발하면서, 잠재적인 보안 취약점을 완화하고 런타임 오류를 방지하기가 점점 더 어렵다는 것을 관찰했습니다. C와 C++ 같은 기존 프로그래밍 언어에서는 버퍼 오버플로, 메모리 누수, 애플리케이션 충돌로 이어지는 정의되지 않은 동작 같은 문제를 계속 겪고 있습니다. 우리는 메모리 안전성 보장을 제공하고 성능이 중요한 애플리케이션을 지원할 만큼 효율적인 프로그래밍 언어가 필요합니다.
고려 사항
기존 문제를 해결하도록 설계된 여러 프로그래밍 언어가 있습니다. 그중 Rust 프로그래밍 언어는 독특한 설계 특징 때문에 개발자 커뮤니티에서 상당한 주목을 받았습니다. 고려 사항은 다음과 같습니다;
메모리 안전성과 보안
성능과 효율성
커뮤니티 지원과 채택
학습 곡선
도구와 생태계
기존 소프트웨어 시스템과의 호환성.
제약
새로운 프로그래밍 언어를 도입하려면 개발자를 재교육해야 하며 이는 시간과 자원이 듭니다. 언어를 기존 개발 워크플로에 통합하는 것도 어려울 수 있습니다. 연속성을 유지하기 위해 기존 시스템과의 호환성을 보장하고 호환성을 깨는 변경을 피해야 합니다.
구현
개발 팀은 Rust 프로그래밍 언어를 배우고 익히기 위한 교육을 받습니다.
개발 목적에 대한 호환성과 적합성을 평가하기 위해 시험적으로 Rust를 사용한 새 프로젝트를 만듭니다.
C와 C++로 작성된 기존 시스템을 점진적으로 Rust로 마이그레이션합니다.
개발 워크플로를 개선할 수 있는 이용 가능한 도구와 라이브러리를 탐색하기 위해 Rust 커뮤니티와 협력합니다.
Rust의 성능을 모니터링하고 기존 프로그래밍 언어의 성능과 정기적으로 비교합니다.
교육, 통합 비용과 Rust 사용의 잠재적 이점의 균형을 맞추는 장기적 접근 방식을 채택합니다.
근거
우리는 성능과 효율성을 유지하면서 메모리 안전성과 보안 보장을 제공하도록 설계된 독특한 기능 때문에 Rust를 도입했습니다. Rust의 견고한 타입 시스템, 빌림 검사기(borrow checker), 메모리 안전성 개념은 성능이 중요하고 안전이 중요한 애플리케이션을 개발하는 데 매우 적합합니다. 더욱이 Rust에는 상당한 개발자 커뮤니티가 있어 우리 개발 워크플로를 지원하는 광범위한 도구, 라이브러리, 생태계에 접근할 수 있습니다. Rust에는 학습 곡선이 따르지만, 우리는 Rust 도입의 이점이 비용을 능가하며 지속적인 성장과 혁신을 위한 훌륭한 기회를 제공한다고 믿습니다.
결과
Rust 도입에는 개발자를 교육하고 언어를 기존 개발 워크플로에 통합하는 데 상당한 시간과 자원 투자가 필요합니다.
Rust를 도입하면 기존 시스템과 어느 정도 호환성 문제가 생길 수 있으며 리팩터링과 수정이 필요합니다.
Rust 도입은 흥미로운 프로젝트에서 일하고 싶어 하는 Rust 개발자를 끌어들여 우리 프로젝트에 기여할 수 있는 개발자 수를 늘릴 수 있습니다.
도입은 기존 언어에 비해 성능, 효율성, 안전성 개선으로 이어질 수 있습니다.
마지막으로 Rust 도입에는 애플리케이션의 보안 취약점을 줄일 수 있다는 잠재적 이점이 따릅니다.