Rust logoRust Korea
전체 메뉴
<- 블로그
#scafra#rust#tokio#axum#serde

Scafra 웹 애플리케이션 프레임워크

2026-10-20

약 7분 읽기

원문 보기

스카프라

Scafra는 Rust 기반의 오픈 소스 웹 애플리케이션 프레임워크로, 모든 기능이 포함되어 있습니다. Scafra는 Rust 애플리케이션에 구성, 설정, 시작, 라우팅, 로깅, 보안 및 운영 엔드포인트에 대한 명확한 구조를 제공하는 동시에, 기본 Rust 생태계를 가시적이고 접근 가능하게 유지합니다. Scafra는 Rust의 컴파일 시간 안전성, 성능 및 제어 기능을 포기하지 않으면서 대규모 애플리케이션 프레임워크에서 흔히 볼 수 있는 생산적인 기본 기능을 원하는 팀을 위해 설계되었습니다. Axum, Tokio, Tower, Serde와 같은 익숙한 기술을 기반으로 구축되었으며, tracing이러한 기술을 독자적인 런타임 뒤에 숨기지 않습니다.

스카프라란 무엇인가요?

Scafra는 Rust 웹 서비스를 위한 애플리케이션 인프라를 제공합니다. Scafra의 파사드 크레이트와 프로시저럴 매크로를 통해 개발자는 일관된 애플리케이션 모델 내에서 타입이 지정된 서비스, 컨트롤러, 라우트, 설정, 라이프사이클 훅, 예약된 작업을 정의할 수 있습니다. CLI를 사용하면 바로 실행 가능한 프로젝트를 생성할 수 있으므로, 새로운 애플리케이션은 빈 디렉토리에서 시작하는 대신 유용한 규칙을 기반으로 시작할 수 있습니다. 현재 MVP는 하나의 완전한 경로와 최초의 형태 인식 프로젝트 생성기에 초점을 맞추고 있습니다.

typed components -> generated routes -> Axum router -> Tokio server

현재 스타터 생성기는 웹 애플리케이션, JSON API, 서비스 및 모듈형 모놀리식 애플리케이션을 지원합니다. 모든 스타터는 동일한 Scafra 프로그래밍 모델을 사용하며, 선택한 형태에 따라 샘플 코드와 레이아웃이 변경될 뿐 런타임 아키텍처는 변경되지 않습니다.

스카프라를 사용하는 이유는 무엇일까요?

  • 컴파일 타임 안전성. 서비스, 종속성, 경로 및 구성은 일반적인 Rust 타입과 컴파일러 검사를 거친 코드로 표현됩니다. Scafra는 런타임 리플렉션, 문자열 키 조회 또는 전역 서비스 로케이터에 의존하지 않습니다.
  • 빠른 프로젝트 시작. scafra new Cargo 매니페스트, 기본 설정, 소스 코드 레이아웃 및 대표 예제를 포함하는 작동 가능한 애플리케이션을 생성합니다.
  • 배터리가 포함되어 있습니다. 이 프레임워크는 라우팅, 구성 프로필, 구조화된 로깅, 정상적인 종료, 상태 및 준비 상태 엔드포인트, 메트릭, 보안 옵션 및 예약된 작업에 대한 규칙을 제공합니다.
  • 익숙한 Rust 기반. Scafra는 Axum, Tokio, Tower, Serde 등을 확장하므로 tracing개발자는 기존 지식을 활용하고 하위 수준 제어가 필요할 때 직접적인 종속성을 추가할 수 있습니다.
  • 명확한 애플리케이션 구조를 제공합니다. 생성된 애플리케이션은 컨트롤러, 서비스, 리포지토리, 설정, 모델 및 오류를 분리합니다. 이를 통해 애플리케이션 규모가 커짐에 따라 코드베이스를 더 쉽게 탐색할 수 있습니다.
  • 기본적으로 작동 가능하며, 설계 단계부터 보안을 강화했습니다. 기본 리스너는 로컬이며, 요청 본문은 제한적이고 로그에 기록되지 않습니다. 또한 액추에이터 엔드포인트 및 인증과 같은 운영 기능은 선택적으로 구성 가능합니다.
  • 관례에서 제어로의 점진적인 전환 경로입니다. 팀은 생성된 애플리케이션 모델을 사용하거나, 라우터 및 구성 요소를 사용자 지정하거나, 보다 특화된 서버 경계가 필요한 경우 표준 실행기를 애플리케이션 소유의 Axum/Tokio 진입점으로 교체할 수 있습니다.

Scafra는 현재 MVP(최소 기능 제품)입니다. 구현된 애플리케이션 형태는 웹 애플리케이션, JSON API, 서비스 및 모듈형 모놀리식 아키텍처입니다.

Rust 개발자들이 Scafra를 선택하는 이유

Scafra는 Rust 위에 얹힌 외부 런타임처럼 느껴지는 것이 아니라, Rust 자체의 느낌을 주도록 설계되었습니다. 이 프레임워크는 명시적 타입 지정, 일반적인 Cargo 프로젝트, 컴파일러 오류, 그리고 표준 Rust 웹 생태계의 라이브러리 사용을 권장합니다.

  • 숨겨진 런타임 마법은 없습니다. 컴포넌트 검색 및 경로 등록은 빌드 시점에 생성됩니다. 프로덕션 환경에서 디버깅해야 할 런타임 파일 시스템 스캔, 리플렉션 레이어 또는 문자열 기반 종속성 컨테이너가 없습니다.
  • 생성된 코드는 검토 가능합니다. Scafra의 CLI는 일반적인 Rust 소스 파일과 일반적인 Cargo 프로젝트를 생성합니다. 문제가 발생하면 개발자는 생성된 프로젝트를 읽고 컴파일러 진단 정보를 확인하여 코드에 대한 소유권을 확보할 수 있습니다.
  • 이미 익숙한 생태계를 활용하세요. Scafra는 Axum, Tower, Serde, Tokio를 tracing애플리케이션 경계에서 사용할 수 있도록 지원합니다. 기존 미들웨어, 추출기, 직렬화 도구, 테스트 도구 및 라이브러리도 계속 유용하게 사용할 수 있습니다.
  • 제어권을 포기하지 않고 추상화를 구현합니다. 표준 실행기는 합리적인 애플리케이션 시작 및 종료 기능을 제공하며, build_router()하위 수준의 재내보내기를 통해 HTTP 경계를 사용자 정의할 수 있습니다.
  • 점진적으로 도입하세요. 하나의 서비스 또는 생성된 애플리케이션부터 시작하고, 명확한 부분은 직접 Rust 코드를 유지하며, 반복을 줄이는 경우에만 Scafra 규칙을 도입하세요.
  • 성능에 민감한 서비스를 위해 설계된 Scafra는 별도의 실행 모델을 도입하는 대신 비동기 Rust 및 Axum을 기반으로 합니다. 이 프레임워크의 목표는 핵심 실행 경로를 동적 객체 그래프로 변환하지 않고 애플리케이션 코드를 체계화하는 것입니다.

스카프라에 기부해야 하는 이유는 무엇일까요?

Scafra는 Rust 웹 개발 경험 자체를 개선하는 곳이기도 합니다. 기여자들은 하나의 큰 런타임 대신 특정 기능에 집중된 크레이트를 개발할 수 있습니다. 매크로, 설정, 생명주기 관리, 라우팅, 보안, 스케줄링, CLI 또는 프로젝트 생성기 등은 명확한 경계 내에서 독립적으로 발전할 수 있습니다. 이 프로젝트는 다음과 같은 목표를 가진 Rust 개발자에게 적합합니다:

  • Rust 애플리케이션에 대한 실용적인 규칙을 정립합니다.
  • 컴파일 타임 API, 진단 기능 및 생성된 코드의 사용 편의성을 개선합니다.
  • Axum과 더 넓은 비동기 Rust 생태계를 위한 재사용 가능한 도구를 구축합니다.
  • 예제, 테스트, 문서 또는 시작 템플릿을 제공하고
  • Scafra에 어떤 프레임워크 기능이 포함되어야 하고 어떤 기능은 기존 생태계 크레이트에 남아야 하는지 결정하는 데 도움을 주세요.

현재 MVP는 의도적으로 이해하기 쉬운 범위로 구성되어 있습니다. 새로운 기여자는 대규모 런타임을 먼저 학습할 필요 없이 워크스페이스 검사를 실행하고, 특정 크레이트를 검사하고, 테스트 또는 예제를 추가하고, 구체적인 개선 사항에 대해 논의할 수 있습니다. 설계 관련 변경 사항을 제출하기 전에 문서 색인 과 아키텍처 가이드를 참조하십시오.