카카오 추천팀에서는 기존의 머신러닝 플랫폼을 대체할 새로운 플랫폼 개발을 진행.
팀 내 주력 언어인 파이썬으로 애플리케이션의 성능과 안전성을 모두 챙기기에는 조금 힘든 부분이 있음.
사용자 지표 애플리케이션에 러스트를 도입하여, 러스트로 애플리케이션을 구현하는 것이 적절한지 검증하는 절차를 진행.
- 러스트가 파이썬보다 작업을 1.9배 정도 빠르게 처리
- 메모리 사용량은 파이썬이 러스트 보다 4.5배 정도 더 사용
- 파이썬의 CPU 사용량은 러스트보다 최대 3배, 평균 2배 정도 높음
- 파이썬의 asyncio와 러스트의 tokio가 각 언어의 애플리케이션에 적용되어, 비동기 처리가 동일하게 구현된 단일 스레드 환경에서도, 러스트의 메시지 처리 속도가 파이썬 보다 10배 정도 빨랐음.
러스트의 큰 단점 중 하나는 학습 비용이 많이 들었음.
파이썬으로 개발할 때도 타입 어노테이션을 강제. 사용자 지표 애플리케이션을 두 가지 버전으로 구현하면서, 파이썬과 러스트 간의 개발 시간 차이를 크게 체감하지는 못함.
생산성 측면에서 체감되는 가장 큰 차이점은 컴파일 시간. (패키지 다운로드 도커 시간 포함)
- 러스트는 대략 340초 수준
- 파이썬의 경우 대략 100초 수준
파이썬을 쓸 때 타입 정보가 없는 라이브러리에서 만들어진 데이터는 타입 검사가 무시되는 Any 타입을 가짐. 전체 프로젝트의 타입 검사 정확도를 낮춤.
파이썬은 예외를 쓰고 러스트는 Result라는 enum 타입을 쓰는 등의 차이점도 있었음.
개발도구
러스트의 경우 cargo가 기본적으로 제공하는 기능이 많음.
파이썬 개발 도구가 고도화, 설치만 하면 비교적 쉬웠음.