Rust는 Axum과 같은 백엔드 프레임워크로 강점을 보였으나, 풀스택 개발에는 여러 라이브러리 연결이 필요했던 기존 Rust 웹 개발의 한계를 지적함
Topcoat는 Carl Lerche와 Julien Scholz가 개발한 새로운 프레임워크로, 서버 렌더링 기반의 풀스택 반응형 웹 애플리케이션을 Rust로만 구축하는 것을 목표로 함
WebAssembly 대신 서버에서 UI를 렌더링하고 작은 반응형 지침(Reactive Instructions)으로 클라이언트 측 반응성을 구현하여 HTMX/Hotwire와 유사한 접근 방식을 취함
Rails, Laravel, Next.js와 같은 통합된 개발 경험을 Rust 생태계에 제공하며, 특히 관리자 패널, 내부 도구, 블로그 등에 적합함을 시사함
Topcoat는 서버 측 렌더링(Server-Side Rendering)을 기본으로 하며, 클라이언트 측 반응성은 WebAssembly 대신 작은 반응형 지침(Reactive Instructions)을 통해 구현하는 독특한 접근 방식을 채택했습니다.
서버 컴포넌트: 비동기 처리, 데이터베이스 접근, 애플리케이션 상태 로딩, 사용자 권한 확인 등을 서버에서 직접 수행하여 초기 로딩 성능을 최적화합니다.
UI 업데이트: 서버에서 변경된 UI 부분만 선택적으로 렌더링하여 교체하는 방식으로, HTMX나 Hotwire의 작동 방식과 유사합니다.
이는 전통적인 React 스타일의 SPA(Single Page Application)와는 다른 경로이며, 를 선호하는 개발자에게 매력적일 수 있습니다.
Topcoat는 Axum과 같은 기존 Rust 웹 프레임워크를 대체하기보다는 상호 보완적인 관계를 지향합니다.
Axum: API 서버 구축이나 저수준 HTTP 엔드포인트(Low-level HTTP Endpoints) 처리에 여전히 강력한 선택지입니다.
Topcoat: 라우팅, 컴포넌트 렌더링, 에셋 관리, 반응형 업데이트 등 애플리케이션 개발에 필요한 상위 수준의 추상화(Higher-level Abstraction)를 제공하여 개발 생산성을 높입니다.
따라서, API와 풀스택 애플리케이션을 함께 개발해야 하는 경우, 두 프레임워크를 함께 활용하는 하이브리드 아키텍처(Hybrid Architecture)도 충분히 고려해볼 수 있습니다.
Rust는 이미 훌륭한 라이브러리가 많지만, Rails, Laravel, Next.js와 같이 의견이 명확하고 통합된 개발 경험(Opinionated, Integrated Experience)이 부족하다는 지적이 있었습니다.
Topcoat의 목표: 이러한 간극을 메우기 위해 서버 렌더링 컴포넌트, 에셋 파이프라인, Tailwind 기반 UI 컴포넌트, 폰트 및 아이콘 통합, 요청 수준 메모이제이션(Request-level Memoization), 인증 기능 등을 내장하고 있습니다.
향후 계획: Toasty ORM과의 통합도 예정되어 있어, 데이터베이스 연동까지 포함한 더욱 완전한 풀스택 경험을 제공할 것으로 기대됩니다.
이는 Rust를 사용하여 보일러플레이트 코드(Boilerplate Code)를 줄이고 애플리케이션 개발에 집중할 수 있게 하는 중요한 진전입니다.
Topcoat의 반응성 시스템은 아직 초기 단계이며, 개발팀은 현재의 한계점에 대해 솔직하게 공개하고 있습니다.
장점: WebAssembly 없이도 서버 렌더링과 클라이언트 반응성을 결합하여 비교적 가벼운 클라이언트 측 코드를 유지할 수 있습니다.
고려사항: 매우 높은 수준의 클라이언트 측 상호작용(Highly Interactive Browser Applications)이 필요한 애플리케이션의 경우, Leptos나 Dioxus와 같은 WebAssembly 기반 프레임워크가 더 적합할 수 있습니다.
하지만 Topcoat는 Rust 생태계에서 서버 렌더링 중심의 풀스택 개발을 훨씬 쉽게 만들고 있다는 점에서 중요한 의미를 갖습니다.