GN⁺: Rwf - Rust 웹 프레임워크
(github.com/levkk)- Rwf는 Rust로 웹 애플리케이션을 구축하기 위한 종합적인 프레임워크
- 고전적인 MVC 패턴(모델-뷰-컨트롤러)을 사용하여 작성되었으며, 빠르고 안전한 웹 앱을 쉽게 구축할 수 있는 모든 것을 기본으로 제공
기능 개요
- HTTP 서버
- PostgreSQL 쿼리를 쉽게 작성할 수 있는 사용자 친화적인 ORM
- 동적 템플릿
- 인증 및 내장 사용자 세션
- 미들웨어
- 백그라운드 작업 및 예약 작업
- 데이터베이스 마이그레이션
- JSON 직렬화를 지원하는 내장 REST 프레임워크
- WebSockets 지원
- 정적 파일 호스팅
- 백엔드 주도의 SPA 구축을 위한 Hotwired Turbo와의 긴밀한 통합
- 환경별 구성
- 로깅 및 메트릭
- CLI
- Django/Flask 앱에서 마이그레이션하기 위한 WSGI 서버
빠른 시작
- Rwf를 스택에 추가하려면 Rust 바이너리 애플리케이션을 생성하고
rwf
와tokio
를 종속성에 추가함:
cargo add rwf
cargo add tokio@1 --features full
- 앱을 구축하는 것은 다음과 같이 간단함:
use rwf::prelude::*;
use rwf::http::Server;
#[derive(Default)]
struct IndexController;
#[async_trait]
impl Controller for IndexController {
async fn handle(&self, request: &Request) -> Result {
Ok(Response::new().html("Hey Rwf!"))
}
}
#[tokio::main]
async fn main() {
Server::new(vec![
route!("/" => IndexController),
])
.launch("0.0.0.0:8000")
.await
.unwrap();
}
상태
- Rwf는 초기 개발 단계에 있으며 프로덕션 준비가 되어 있지 않음. 많은 기능과 문서가 불완전함.
GN⁺의 정리
- Rwf는 Rust로 웹 애플리케이션을 구축하기 위한 강력한 프레임워크로, MVC 패턴을 사용하여 빠르고 안전한 웹 앱을 쉽게 개발할 수 있는 다양한 기능을 제공함.
- 초기 개발 단계에 있어 프로덕션 환경에서는 사용하기 어려울 수 있지만, 다양한 기능과 문서가 지속적으로 업데이트될 예정임.
- Rust를 사용하여 웹 애플리케이션을 개발하고자 하는 개발자에게 유용하며, Django나 Flask와 같은 기존 프레임워크에서 마이그레이션을 고려하는 경우에도 도움이 될 수 있음.
- 유사한 기능을 제공하는 다른 Rust 기반 웹 프레임워크로는 Actix, Rocket 등이 있음.
Hacker News 의견
-
Go 언어의 표준 라이브러리 사용을 통해 복잡한 웹 프레임워크 의존성을 줄이고 보안성을 높이며, 유지보수가 용이함을 강조함
- Rust에서는 여전히 웹 프레임워크가 유용할 수 있다는 의견을 제시함
-
웹 MVC 프레임워크 사용 경험에서 비즈니스 로직을 모델 레이어에 두지 않도록 해야 한다는 교훈을 얻음
- 서비스 레이어를 강력히 권장하며, Interactor 같은 gem을 사용하여 명령 객체로 구현하는 것을 제안함
-
REST 프레임워크가 Swagger 정의를 자동 생성할 수 있어야 한다고 기대함
- 기존 ORM이나 템플릿 엔진을 사용하지 않고 자체 개발한 이유에 대해 궁금해함
-
새로운 프레임워크의 이름 선택이 검색 결과 상위에 오를 수 있는 좋은 방법이라고 평가함
- 새로운 아이디어를 탐구하는 것이 중요하다고 언급함
-
Python에서 Rust로의 마이그레이션에 관심을 가짐
- 대규모에서는 Reverse Proxy로 처리해야 한다고 제안함
-
ORM을 웹 프레임워크의 내장 기능으로 포함하는 것이 처음에는 합리적으로 보일 수 있지만, 시간이 지나면 독립 프로젝트가 되거나 다른 ORM을 사용하고 싶어질 수 있다고 경고함
-
Rails와 Django 같은 강력한 의견을 가진 프레임워크가 더 필요하다고 언급함
-
Rust에서의 주요 공백을 채우는 프레임워크의 출시에 대해 기대감을 표함
-
Django 개발 경험을 통해 MVC의 가치를 깨달았으며, 새로운 프레임워크를 살펴볼 것임을 언급함
-
Rust 백엔드 작업을 위한 다양한 프레임워크를 평가한 결과 Axum이 가장 적합하다고 판단함
- 새로운 프레임워크가 "배터리 포함, 하지만 너무 규정적이지 않음"이라는 기준에 완벽히 부합한다고 평가함