강연자는 지난 25년간의 소프트웨어 개발 경험을 바탕으로 현대 개발 환경의 퇴보 사례를 구체적으로 제시하며, Rails의 철학과 새로운 전략을 설명합니다.
현대 개발의 역설과 복잡성
- 퇴보하는 개발 효율: 1999년 5초 배포가 현재 수 시간으로 지연되는 등, 기술 발전에도 불구하고 배포 및 개발 효율성이 오히려 퇴보했습니다. 웹 앱의 본질적 CRUD 작업은 변함없으나, 불필요한 도구와 구성 요소가 폭증하여 시스템이 취약해지고 안정성이 저하되었습니다.
- ‘CRUD 원숭이’ 심리: 개발자들이 ‘컴퓨터 과학적’으로 보이고 싶은 심리적 욕구 때문에 불필요한 복잡성을 추구하며, 이는 ‘복잡성 판매자’의 성장을 부추기는 주된 원인으로 지목됩니다.
Rails의 ‘전체 문제 해결’ 철학
- 단순함과 효율성: Rails는 단순한 CRUD 작업을 자랑스럽게 받아들이고, 웹 개발의 모든 번거로운 문제를 엔드투엔드로 해결하는 ‘메가 프레임워크’로서 개발자가 전체 문제에 집중하도록 돕는 ‘맥시멀리즘’을 추구합니다.
Rails의 ‘더하기(More)’와 ‘빼기(Less)’ 전략
강연자는 이러한 철학을 바탕으로 Rails의 발전 방향을 ‘더하기(More)’와 ‘빼기(Less)’로 설명합니다.
- 더하기 (More) - 확장 및 혁신:
- 개발자 경험: 마크다운 지원 강화, 새로운 Lexi 에디터(Action Text), 장시간 작업 재개 가능한 Action Job Continuations 도입.
- 크로스 플랫폼: Turbo Offline(오프라인 캐싱) 및 Action Push Native(직접 푸시 알림)를 통해 네이티브 앱 및 웹 앱 경험 확장.
- 인프라 혁신: DHH의 Linux 기반 Umachi OS(15분 부트스트랩 목표) 및 Fizzy 프로젝트를 통한 엣지 컴퓨팅(Active Record Teneting, Beamer, Kamal Geo Proxy 활용 마이크로 데이터센터)으로 레이턴시 최소화.
- 빼기 (Less) - 단순화 및 최적화:
- 로컬 개발: PumaDev 제거 및 localhost 사용, Docker는 DB 관리에만 집중,
mi
를 통한 Ruby 버전 관리로 개발 환경 단순화. - 테스트 전략: 느리고 불안정한 시스템 테스트를 대부분 제거하고, 로컬 CI를 강화하여 빠르고 효율적인 테스트 실행 및 PR 검증 체계 구축.
- 로컬 개발: PumaDev 제거 및 localhost 사용, Docker는 DB 관리에만 집중,