Brut - Ruby를 위한 새로운 웹 프레임워크

20 hours ago 1

  • Ruby 생태계를 위한 “낮은 추상화, 낮은 의식주의(low-ceremony)” 기반의 심플하고 강력한 웹 프레임워크로, 컨트롤러, REST 리소스 개념 없이 페이지·폼·단일 액션 중심 구조를 제공
  • 서버 렌더링 HTML, 직접 JS/CSS 작성, OpenTelemetry 연동, Sequel·OptionParser 등 현대 Ruby 도구 내장, 설치와 개발이 수분 내로 가능
  • 클래스 기반 구조, 실제 타입 기반 세션·폼·파라미터 관리, 동적 메소드·해쉬 사용 최소화로 명확한 코드·자동 문서화를 지향
  • 최신 웹 플랫폼 활용: 서버·클라이언트 검증 통합, BrutJS(Web Components), esbuild로 CSS 번들·해시, 보안 정책과 DB 설계 기본기 강화
  • YAML 최소화, Ruby/Hash 기반 설정과 명확한 네이밍·역할 분리, 불필요한 추상화나 패턴 강요 없이 Ruby와 브라우저 기술을 즐겁게 활용하는 것이 목표

Brut 프레임워크 주요 특징

완전히 새로운 구조 – 컨트롤러 없이 페이지 중심

  • 컨트롤러, REST 리소스, 라우트 액션 대신 클래스 기반 페이지, 폼, 단일 액션 핸들러로 구성
  • HTML은 서버에서 직접 생성, JS/CSS는 원하는 대로 작성 가능
  • 예시: 시간 표시 페이지는 TimePage < AppPage로 바로 정의

현대적인 웹 플랫폼 적극 활용

  • 서버·클라이언트 검증 통합된 폼 UX
  • BrutJS(웹 컴포넌트 라이브러리)로 HTML 점진적 확장 지원
  • esbuild로 CSS 번들·해시 적용, PostCSS나 SASS 없이 간결하게 처리

개발 생산성·기본기 내장

  • OpenTelemetry 기반 인스트루먼트, Sequel 기반 데이터 액세스, OptionParser 기반 명령행 자동화
  • 기본 보안정책, DB 컬럼/외래키 기본값/인덱스, 항상 timezone-aware한 시간, 간편한 로케일(Localization)
  • RSpec 테스트, Faker/FactoryBot으로 데이터 생성, Phlex로 HTML 생성

YAML 배제, 명확한 설정 구조

  • I18n은 Ruby Hash 기반, 동적 설정은 dotenv로 관리 (YAML 거의 사용하지 않음)
  • docker-compose만 예외적으로 YAML 사용

불필요한 추상화나 패턴 강요 없음

  • 네이밍·구조 명확(예: WidgetsPage는 /widgets로 접근)
  • 데이터 계층(DB::Widget)과 도메인 계층(Widget) 완전히 분리 가능
  • 컨트롤러 개념 없음, 원하는 방식대로 비즈니스 로직 구현 가능
  • 복잡한 함수형 패턴, 모나드, Proc 등 강요 X

개발 경험·유연성

  • RSpec 등 현대 Ruby 생태계 도구 기본 내장
  • Phlex(HTML), Faker/FactoryBot, Sequel, OpenTelemetry 등 주요 라이브러리 적극 활용
  • 반복적 보일러플레이트/설정/의사결정에서 벗어나, Ruby와 브라우저 기술의 “재미”에 집중

왜 Brut인가?

  • Rails 등 기존 프레임워크의 반복적 셋업, 끊임없는 설계·구조 논쟁, 불필요한 유연성 대신 코드 자체의 즐거움을 추구
  • 빠르게 구축, 개발과 배포를 즐길 수 있는 Ruby 기반 웹앱 프레임워크로서 생산성과 명확함에 집중

시작 및 향후 로드맵

  • Brut 공식 Docker 이미지, 명령어 기반 빠른 앱 생성·실행 지원
  • ADRs.cloud 등 실전 예시 앱 제공
  • 1.0 버전 및 공식 로드맵 지속 업데이트 예정

Read Entire Article