# Rwf - Rust 웹 프레임워크

> Clean Markdown view of GeekNews topic #17380. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17380](https://news.hada.io/topic?id=17380)
- GeekNews Markdown: [https://news.hada.io/topic/17380.md](https://news.hada.io/topic/17380.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-10-23T09:48:08+09:00
- Updated: 2024-10-23T09:48:08+09:00
- Original source: [github.com/levkk](https://github.com/levkk/rwf)
- Points: 3
- Comments: 1

## Topic Body

- Rwf는 Rust로 웹 애플리케이션을 구축하기 위한 종합적인 프레임워크  
- 고전적인 MVC 패턴(모델-뷰-컨트롤러)을 사용하여 작성되었으며, 빠르고 안전한 웹 앱을 쉽게 구축할 수 있는 모든 것을 기본으로 제공  
#### 기능 개요  
  
-  HTTP 서버  
-  PostgreSQL 쿼리를 쉽게 작성할 수 있는 사용자 친화적인 ORM  
-  동적 템플릿  
-  인증 및 내장 사용자 세션  
-  미들웨어  
-  백그라운드 작업 및 예약 작업  
-  데이터베이스 마이그레이션  
-  JSON 직렬화를 지원하는 내장 REST 프레임워크  
-  WebSockets 지원  
-  정적 파일 호스팅  
-  백엔드 주도의 SPA 구축을 위한 Hotwired Turbo와의 긴밀한 통합  
-  환경별 구성  
-  로깅 및 메트릭  
-  CLI  
-  Django/Flask 앱에서 마이그레이션하기 위한 WSGI 서버  
  
#### 빠른 시작  
  
- Rwf를 스택에 추가하려면 Rust 바이너리 애플리케이션을 생성하고 `rwf`와 `tokio`를 종속성에 추가함:  
  
```rust  
cargo add rwf  
cargo add tokio@1 --features full  
```  
  
- 앱을 구축하는 것은 다음과 같이 간단함:  
  
```rust  
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 등이 있음.

## Comments



### Comment 30302

- Author: neo
- Created: 2024-10-23T09:48:08+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41914544) 
- Go 언어의 표준 라이브러리 사용을 통해 복잡한 웹 프레임워크 의존성을 줄이고 보안성을 높이며, 유지보수가 용이함을 강조함
  - Rust에서는 여전히 웹 프레임워크가 유용할 수 있다는 의견을 제시함

- 웹 MVC 프레임워크 사용 경험에서 비즈니스 로직을 모델 레이어에 두지 않도록 해야 한다는 교훈을 얻음
  - 서비스 레이어를 강력히 권장하며, Interactor 같은 gem을 사용하여 명령 객체로 구현하는 것을 제안함

- REST 프레임워크가 Swagger 정의를 자동 생성할 수 있어야 한다고 기대함
  - 기존 ORM이나 템플릿 엔진을 사용하지 않고 자체 개발한 이유에 대해 궁금해함

- 새로운 프레임워크의 이름 선택이 검색 결과 상위에 오를 수 있는 좋은 방법이라고 평가함
  - 새로운 아이디어를 탐구하는 것이 중요하다고 언급함

- Python에서 Rust로의 마이그레이션에 관심을 가짐
  - 대규모에서는 Reverse Proxy로 처리해야 한다고 제안함

- ORM을 웹 프레임워크의 내장 기능으로 포함하는 것이 처음에는 합리적으로 보일 수 있지만, 시간이 지나면 독립 프로젝트가 되거나 다른 ORM을 사용하고 싶어질 수 있다고 경고함

- Rails와 Django 같은 강력한 의견을 가진 프레임워크가 더 필요하다고 언급함

- Rust에서의 주요 공백을 채우는 프레임워크의 출시에 대해 기대감을 표함

- Django 개발 경험을 통해 MVC의 가치를 깨달았으며, 새로운 프레임워크를 살펴볼 것임을 언급함

- Rust 백엔드 작업을 위한 다양한 프레임워크를 평가한 결과 Axum이 가장 적합하다고 판단함
  - 새로운 프레임워크가 "배터리 포함, 하지만 너무 규정적이지 않음"이라는 기준에 완벽히 부합한다고 평가함
