id, title, status, date, related-wiki, principles
id
title
status
date
related-wiki
principles
ADR-001
cimery 기술 스택 — 웹·데스크톱 듀얼 타깃 Rust 아키텍처
accepted
2026-04-14
ADR-001 — cimery 기술 스택 확정
결정
cimery는 Rust 기반의 웹·데스크톱 듀얼 타깃 아키텍처 로 개발한다. 하나의 코드베이스로 **PWA(브라우저)**와 Tauri(데스크톱) 양쪽을 커버한다.
스택 구성
계층
선택
비고
언어
Rust
주 개발 언어
기하 커널 (웹)
OpenCascade.js (WASM)
Emscripten 포트, ~30MB
기하 커널 (데스크톱)
opencascade-rs (C++ FFI)
네이티브 OCCT
커널 추상화
GeomKernel trait
빌드별 백엔드 스왑
렌더
wgpu → WebGPU
웹·데스크톱 공통
데스크톱 포장
Tauri v2
Rust 백엔드 + WebView
웹 포장
PWA
서비스워커·설치·오프라인
UI 프레임워크
미정 (egui / Yew / Leptos 중)
후속 결정
순수 Rust 공유 모듈 (빌드 독립)
기각된 대안
순수 C# 유지: 25년 자산 재활용은 매력적이나 PCE 파라메트릭 변경 엔진 대응(CPU 캐시·메모리 배치 통제)이 GC·박싱으로 제약. 웹 포팅 경로가 자연스럽지 않음.
순수 Rust + truck 커널: B-rep·NURBS·boolean 성숙도가 OCCT 대비 부족. 토폴로지 예외 리스크.
Electron: Tauri 대비 바이너리·메모리 부담 큼. Rust 네이티브 통합 이점 상실.
순수 PWA (Tauri 없음): 데스크톱 파일 시스템 접근·대용량 IFC 처리에 제약. 브라우저 WASM 4GB 한계.
Unity/Unreal 등 게임엔진 기반: CAD 시맨틱과 무관한 게임 루프 비용.
채택 근거
원칙 정합성
사업·사용성
고객 설치 장벽 최소화: URL 공유(웹) + 단일 설치(데스크톱).
미래 협업: Speckle·공통 데이터 환경(CDE)과의 연동 자연스러움.
보안·배포: Tauri v2는 Electron 대비 공격면 작고 업데이트 모델 우수.
제약 조건 (MVP 경계)
MVP 타깃 브라우저: Chromium 기반(Edge, Chrome) + WebGPU 지원 환경.
Safari/Firefox 호환, 전 브라우저 WebGPU: v2 이후.
대용량 IFC 처리(>수백 MB): 데스크톱 전용. 웹은 경량 모델에 한정.
OCCT.js 초기 로드 시간: CDN·캐싱·지연 로딩 설계 필수.
Tauri v2 API 학습: v1 → v2 마이그레이션 없는 신규 개발이므로 비용 상대적으로 낮음.
기존 C# 자산 처리
기존 C# 3D 엔진(sweep/loft/boolean)은 직접 재사용 없음.
알고리즘·도메인 지식은 포팅하며 승계. 에지 케이스·수치 안정성 노하우가 가장 가치 있음.
아키텍처 원칙
기하 커널 접근은 반드시 GeomKernel trait 경유. OCCT 구체 타입 직접 노출 금지.
도메인 코어(LPG·FBM·선형)는 빌드 독립. 브라우저 API·파일 시스템 API 직접 참조 금지.
플랫폼 특화 코드는 최상위 얇은 계층으로 격리 (Tauri commands / PWA service worker).
후속 결정 필요
검토 시점
1차 MVP 프로토타입 완료 시 이 ADR 재검토.
WebGPU 브라우저 지원 현황이 크게 변하면 재검토.
OCCT.js 또는 opencascade-rs 프로젝트의 유지 관리 상태 악화 시 재검토.