피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Zero FFI 기반 Pure Rust 구현으로 빌드 시간 4초대 달성 및 WASM 확장성 확보
5 Features That Make chematic Stand Out as a Pure-Rust Cheminformatics Library
AI 요약
Context
기존 RDKit, OpenBabel 등 주요 Cheminformatics 라이브러리는 C/C++ 기반의 Core 로직에 의존하여 FFI 설정 및 시스템 의존성 관리에 막대한 비용 소요. CMake 설정 오류와 라이브러리 충돌로 인한 CI/CD 파이프라인의 불안정성이 주요 병목 지점으로 작용.
Technical Solution
- C/C++ 의존성을 완전히 제거한 Pure Rust 구현을 통한 단일 툴체인 기반의 Cross-compilation 환경 구축
- WebAssembly(WASM)를 First-class Target으로 설계하여 서버 없이 브라우저 내에서 137개의 JS 함수를 직접 실행하는 Client-side 아키텍처 채택
- 10개의 Optional Feature Flags를 도입하여 사용하지 않는 모듈(3D, Fingerprints 등)을 제외함으로써 WASM 번들 크기와 컴파일 시간 최적화
- Distance Geometry 및 UFF, DREIDING, MMFF94 Force Field를 Rust로 직접 구현하여 3D 좌표 생성부터 에너지 최소화까지의 파이프라인 내재화
- ECFP, FCFP를 포함한 6종의 Fingerprint 알고리즘을 Bit Vector 기반으로 구현하여 대규모 라이브러리 대상의 Tanimoto 유사도 검색 효율화
- SVG 기반의 2D 렌더링 엔진을 직접 구축하여 외부 렌더링 서버 없이 SMARTS 기반의 Substructure highlighting 기능 구현
실천 포인트
1. 레거시 C/C++ 라이브러리의 FFI 오버헤드가 클 경우 Pure Rust/Go 등 최신 언어로의 Core 재구현 검토
2. 클라이언트 사이드 연산을 극대화하여 서버 비용을 절감하고 응답 속도를 높이는 WASM 도입 고려
3. 대규모 라이브러리 설계 시 Feature Flags를 활용하여 최종 바이너리 크기를 최적화하는 모듈화 전략 적용