저자는 예측 텍스트 기능을 통해 편집 효율성을 높이는 것을 목표로 하는 데스크톱 텍스트 편집기 "smoodit"을 개발했습니다. 처음에는 Electron과 Ollama를 통해 임베디드된 LLM(대규모 언어 모델)으로 구축되었지만, Electron과 LLM으로 인해 리소스가 과도하게 소모되는 문제가 발생했습니다. 이를 해결하기 위해 Tauri v2로의 마이그레이션이 진행되었으며, Vite를 사용한 React 프론트엔드와 사이드카로 Python FastAPI 백엔드를 활용했습니다. AI 엔진 또한 별도의 Ollama 바이너리 사이드카로 실행되었습니다.
마이그레이션의 핵심은 Tauri의 "사이드카" 기능을 숙달하는 것이었습니다. 여기에는 PyInstaller를 사용하여 Python 백엔드를 패키징하고 `tauri.conf.json`에서 외부 바이너리를 구성하는 작업이 포함되었습니다. Tauri v2는 사이드카 파일 이름에 특정 대상 트리플 접미사를 요구합니다. 프론트엔드는 엄격한 WebView 보안 정책 및 CORS 문제를 우회하기 위해 `@tauri-apps/plugin-http`를 사용하여 로컬 FastAPI 백엔드와 통신했습니다. 사용자 상호 작용 전에 백엔드가 준비되었는지 확인하기 위해 "헬스 체크 폴링" 메커니즘이 구현되었습니다.
문제 해결 과정에는 MacOS의 번들 바이너리에 대한 "Quarantine" 속성을 `xattr -d`를 사용하여 제거하는 작업이 포함되었습니다. PIPE 버퍼 멈춤 현상은 Ollama의 출력을 `subprocess.PIPE`를 사용하는 대신 로그 파일로 리디렉션하여 해결되었습니다. 좀비 프로세스는 `start_new_session=True`를 사용하여 자식 프로세스를 분리하고 소켓 기반 포트 검사를 구현하여 관리되었습니다. 궁극적으로 Tauri로의 마이그레이션을 통해 설치 패키지 크기와 메모리 사용량이 크게 줄어들어 더욱 향상된 성능의 개발자 도구를 얻을 수 있었습니다.
dev.to
Story of 'smoodit' (1) : Electron to Tauri
