Ruby on Rails

 

1. 개요
2. 특징
2.1. 장점
2.2. 단점
3. 여담
4. Rails로 만들어진 한국 내 서비스 현황
5. 관련 문서


1. 개요


[image]
Ruby on Rails는 Ruby를 사용하는 웹 프레임워크로 덴마크의 David Heinemeier Hansson이 오픈 소스로 만들었다. 줄여서 Rails나 RoR이라고도 부른다. 풀 스택 웹 프레임워크이고, non full-stack 웹 프레임워크로는 Sinatra 등이 있다.
루비온 레일즈의 이후 등장한 거의 모든 풀스택 웹 프레임워크는 Rails의 디자인에 영향을 받았다고 해도 과언이 아닐 정도이다​. PythonDjangoPHPLaravel이 그 영향을 받아 설계되었다. MVC 모델 패턴을 채택하고 있으며, 사용하는 언어가 Ruby인지라 고급지고 간결한 코드를 작성할 수 있다. 특히 애자일 프로세스에 초점을 맞추는 스타트업 기업들이 많이 채택하였다.
다만 2016년 부터 Node.js라는 신흥 강호가 갑툭튀해 점유율이 바짝 쫓기는 상황이다. 2020년 이후로는 전세계적으로 Node.js를 더 많이 쓴다.

2. 특징



2.1. 장점


  • 언어의 특성이 애자일에 초점이 맞춰져 있기 때문에 생산성이 높다.
  • 확장성과 이식성이 높다.[1]
  • 데이터베이스 작업할 때 엑티브레코드 패턴을 적용한 ORM을 도입하여 편리하다.
  • 세부적인 설정이 적은편이다.

2.2. 단점


  • 개발자가 부족하다. 물론 이것은 국내의 얘기.
  • 파이썬의 장고만큼 속도가 느리다.
  • 암시적 규약이 많다. [2]

3. 여담


  • Ruby를 모르는 사람도 강좌 몇 개를 보면 쓸만한 블로그 하나를 만들 수 있을 정도로 쉽고 빠르게 웹 애플리케이션을 제작할 수 있다.
  • 빠르게 서비스를 개발해야 하는 스타트업 회사에서 많이 사용한다. 하지만 한국에서는 Ruby라는 언어 자체가 굉장히 마이너하기 때문에 요즘에는 PHP의 라라벨을 쓰거나, Python 장고, JavaScript 를 선호하는 경향이 있다.
  • 성능 문제가 있다고 하는데, 파이썬보다는 느리지만 깃허브, 그루폰, [3],루비가 일본인이 개발한 언어라 일본에서는 개발자도 많고 대형회사들도 사용한다. 사실 하드웨어 자원을 빡세게 활용하는 애플리케이션(게임 등)이 아닌 이상, 성능은 언어의 속도보다는 데이터베이스를 얼마나 빠르게 가져오느냐 등 외부적 요소에 영향을 더 크게 받는다.
  • PythonFlask에 해당하는 Ruby의 마이크로 웹 프레임워크는 Sinatra이다.

4. Rails로 만들어진 한국 내 서비스 현황


구글에
inurl:users/sign_in
키워드로 검색해보면 레일즈를 사용중인 사이트들을 확인할 수 있다.
  • 그루미
  • 더누보(http://the-nuvo.com)
  • 리노트
  • 마이리얼트립
  • 망고플레이트
  • 모아폼
  • 밸류옵션
  • 배틀코믹스
  • 볼링고
  • 산타 포 토익!
  • 샤샤건건
  • 센트비
  • 스냅샵
  • 스탬프팡
  • 스트라입스
  • 아이노알바
  • 아이엠스쿨
  • 아임8
  • 연두
  • 에이트크루즈
  • 오늘의집
  • 왓챠
  • 유에프오팩토리
  • 유저해빗
  • 응답하라 국회의원
  • 이음
  • 자소설
  • 잡플래닛
  • 증권플러스 인사이트
  • 채팅캣
  • 카카오
  • 커피한잔 (https://withcoffee.app)
  • 캐시슬라이드
  • 코드라이언
  • 코드스터디
  • 코드잇
  • 크리마(https://www.cre.ma)
  • 클레비
  • 클래스팅
  • 텀블벅
  • 토스
  • 트라이캣치
  • 파이브 락스
  • 파크 히어
  • 당근마켓
  • 해먹남녀
  • 호텔박사
  • 필디

5. 관련 문서



[1] 프레임워크의 '확장성(Scalability)'이란 시스템의 스펙이 변경되어도 그에 맞추어 기능이 계속 동작하게끔 만들 수 있는지의 여부를 의미한다. 시스템에서 '확장성'은 두 가지로 나뉘는데, 특정한 (서버) 하드웨어의 CPU나 RAM을 업그레이드하는 것을 수직적 확장성이라고 하고, 아키텍처 자체를 늘리는 것(ex. 단일 서버 → 서버/로드 밸런서/DB 인스턴스로 분할)을 수평적 확장성이라고 한다. '이식성'은 다양한 운영 체제에서 사용될 수 있는지의 여부이다.[2] 프로젝트 초반에는 빠른 개발이 가능해 장점일 수 있지만 초반을 지나면 사이트이펙트를 만들 가능성이 급격히 커진다[3] Java로 변경하였다.