Brut: 새로운 Ruby 웹 프레임워크

Brut: A New Web Framework for Ruby

작성자
발행일
2025년 07월 08일

핵심 요약

  • 1 Brut은 컨트롤러, 동사, 리소스 개념 없이 페이지, 폼, 단일 액션 핸들러를 중심으로 설계된 Ruby 웹 프레임워크입니다.
  • 2 낮은 추상화와 간결함을 지향하며, 내장된 계측 기능과 효율적인 데이터 접근 계층을 통해 신속한 앱 개발을 지원합니다.
  • 3 현대 웹 플랫폼의 장점을 활용하고 좋은 개발 관행을 기본으로 제공하여, 기존 프레임워크의 복잡성에서 벗어나 개발의 즐거움을 추구합니다.

도입

Brut은 Ruby 생태계에 새롭게 등장한 웹 프레임워크로, 기존의 Ruby on Rails와 같은 프레임워크와는 다른 접근 방식을 제시합니다. 이 프레임워크는 단순함과 낮은 추상화, 그리고 최소한의 의례(ceremony)를 핵심 가치로 삼아, 개발자들이 웹 애플리케이션을 더욱 즐겁고 효율적으로 구축할 수 있도록 돕는 것을 목표로 합니다. 컨트롤러, 동사(verbs), 리소스와 같은 개념 없이 페이지, 폼, 그리고 단일 액션 핸들러를 중심으로 개발이 이루어지며, 서버에서 HTML을 직접 생성하는 방식을 채택하고 있습니다.

Brut 프레임워크는 개발의 복잡성을 줄이고 생산성을 높이는 데 중점을 둡니다. 주요 특징으로는 내장된 OpenTelemetry 기반의 계측 기능과 Sequel 기반의 강력한 데이터 접근 계층을 들 수 있습니다. 또한, OptionParser를 활용한 커맨드라인 앱을 통해 개발 자동화를 지원하여, 사용자가 Ruby를 설치할 필요 없이 Docker를 통해 몇 분 만에 앱을 구축하고 실행할 수 있도록 합니다. 이는 개발 환경 설정에 드는 시간을 대폭 줄여줍니다.

Brut의 핵심 설계는 클래스를 인스턴스화하고 그 위에 메서드를 호출하는 객체 지향적 방식에 기반합니다. 이는 과도한 include 호출을 지양하고, 세션, 플래시 메시지, 폼 파라미터 등 모든 데이터가 명확하게 정의된 클래스 및 데이터 타입으로 관리되도록 합니다. 동적으로 정의되는 메서드나 method_missing의 의존성을 최소화하여 코드의 가독성과 예측 가능성을 높였습니다.

현대 웹 플랫폼의 장점을 적극적으로 활용하는 Brut은 클라이언트 측과 서버 측 폼 유효성 검사를 통합하여 일관된 사용자 경험을 제공합니다. 또한, 자체 개발된 BrutJS 라이브러리는 웹 컴포넌트(autonomous custom elements)를 통해 HTML을 점진적으로 개선하며, esbuild를 사용하여 CSS를 즉시 패키징, 축소, 해싱 처리하여 PostCSS나 SASS와 같은 추가 도구 없이도 효율적인 스타일 관리가 가능합니다.

Brut은 좋은 개발 관행을 기본 설정으로 제공합니다. 예를 들어, 합리적인 콘텐츠 보안 정책을 기본으로 적용하며, 데이터베이스 컬럼은 기본적으로 NULL을 허용하지 않고, 외래 키는 항상 존재하며 인덱싱되고 NULL을 허용하지 않도록 설정됩니다. 또한, Brut의 Clock을 통해 제공되는 시간은 항상 시간대를 인식하며, 지역화 기능도 쉽게 구현할 수 있도록 지원합니다.

프레임워크는 RSpec, Faker, FactoryBot과 같은 검증된 Ruby gem들을 적극적으로 활용하여 테스트 작성 및 개발 데이터 설정을 용이하게 합니다. HTML 생성에는 Phlex를 사용하며, HAML은 지원하지 않습니다. 특히 주목할 점은 YAML 기반 설정을 최소화했다는 것입니다. 국제화(I18n)는 Ruby Hash를, 동적 설정은 환경 변수를 사용하며, docker-compose.dx.yml 파일을 제외하고는 YAML 사용을 극도로 제한합니다.

Brut은 불필요한 추상화를 만들지 않으려는 철학을 가지고 있습니다. 예를 들어, 웹 페이지는 명확하게 WidgetsPage와 같이 명명되고 /widgets와 같은 직관적인 URL에 매핑됩니다. 데이터베이스 접근 로직과 도메인 로직을 명확히 분리하여 DB::Widget이 데이터만 처리하고, 비즈니스 로직은 별도의 클래스나 서비스에서 관리하도록 권장합니다. 기존 프레임워크에서 흔히 발생하는 컨트롤러 관련 논쟁이나 복잡한 라우팅 규칙 없이, 개발자는 오직 필요한 기능 구현에 집중할 수 있습니다. 이는 Rails 앱의 상투적인 코드, 끝없는 유연성, 지속적인 아키텍처 결정, 그리고 불필요한 논쟁에 지친 개발자들에게 새로운 대안을 제시하며, Ruby와 HTML, 그리고 브라우저의 강력한 기능을 활용하여 웹 앱 개발의 즐거움을 되찾는 데 초점을 맞추고 있습니다.

결론

Brut은 Ruby 개발자들이 웹 애플리케이션을 구축하는 과정에서 겪는 피로감을 해소하고, 더욱 직관적이고 즐거운 개발 경험을 제공하기 위해 탄생한 프레임워크입니다. 단순성, 낮은 추상화, 그리고 현대 웹 플랫폼의 장점을 결합하여 효율적인 개발 환경을 제공하며, 불필요한 복잡성을 제거함으로써 개발자가 핵심 비즈니스 로직에 집중할 수 있도록 돕습니다. Brut 1.0 버전의 지속적인 개발을 통해, 이 프레임워크가 Ruby 웹 개발의 새로운 지평을 열고 많은 개발자들에게 즐거움을 선사할 것으로 기대됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!