Ruby on rails를 알아봅시다!¶
1. Ruby on rails는 ?¶
Ruby on rails(이하 Rails)
는 Ruby
언어를 기반으로 하는 웹 개발 프레임워크이다.
여타 웹 프레임워크와 마찬가지로 반복되는 작업들을 대신해주거나 추상화를 통해 간편하게 만들어서 개발자가 코드를 작성하는 수고를 덜어주는것을 목적으로 한다.
자바의 Spring Framework
, Spring Boot
, 파이썬의 Django
, Flask
등과 동일한 목적으로 사용된다고 볼 수 있다.
2014년에는 개발자들로부터 가장 많이 주목받는 프레임워크로 꼽혀 Rails 열풍이 불기도 하였으나, 자바의 득세와 더불어 파이썬 커뮤니티의 성장과 유저풀이 압도적으로 증가해서 시장의 선택을 받지 못한것으로 보인다.
현재 2021년에는 그다지 주목받지 못하고 있기는 하지만 아직도 해외에서는 많이 사용하고 있는 프레임워크이며, 특유의 생산성 덕분에 스타트업이나 프로덕트를 빨리 내보내야하는 상황에서는 꾸준히 선택받는 프레임워크로 알려져있다.
2. Rails의 철학¶
Rails는 크게 두가지 원칙을 기본 철학으로 삼는데 바로
DRY(Don't repeat yourself)
와 COC(Convention over configuration)
이다.
DRY
는 중복된 정보를 쓰는 행위를 멀리해야 한다는 개발 원칙이다.
중복된 정보의 작성을 피하는것 만으로도 훨씬 유지보수하기 쉽고 확장성 있는 코드를 얻을 수 있다는 내용이다.
COC
는 Rails의 설정에 관한 컨벤션을 기본값으로 따르는것을 의미한다.
Rails는 웹 어플리케이션 개발에관한 최적의 방법을 이미 정의해두고 있기 때문에, 개발자가 설정들을 정의하는것에 많은 시간을 쏟기 보다는 Rails 컨벤션을 따르고 그런 수고로 부터 해방되기를 권한다.
이처럼 Rails의 컨벤션을 따라서 개발하는것을 'On rails'라고 표현하기도 한다.
3. Rails의 특징¶
Rails는 웹 어플리케이션 개발을 정말 빠르게 할 수 있도록 도와준다.
빠른 개발을 가능하게하는 특징들을 몇 가지 소개해보고자 한다.
1. 내장 Rails 서버¶
Rails에서는 기본적으로 웹서버를 제공하기 때문에 바로 실행이 가능하다.
그리고 Rails console이라는 인터프리터를 통해 직접 서버에 로직을 실행하는것도 가능하다.
Spring boot에서 내장 톰캣서버를 가지고 있는것과 유사하다고 보면 된다.
2. 코드 반영을 위한 서버 재시작¶
Rails는 수정한 코드 내용을 반영하기 위해서 서버를 재시작 할 필요가 없다.
Java기반의 Spring의 경우 다시 컴파일을 해서 그 결과물을 서버에 적재해야 하기때문에 서버재시작은 반드시 거쳐야하는 과정이다.
물론 Devtools같은 플러그인의 도움을 받아 해당 과정을 생략할 수 있다.
그러나 Rails는 그러한 외부 의존성이 없어도 코드를 수정하고 새로고침을 하면 화면에서 바로 변경된 로직을 확인할 수 있다.
3. ORM¶
Rails는 Active record
라는것을 이용해 ORM방식으로 Database관련 로직을 수행한다.
그 덕분에 단순 로직을 구현할 때마다 SQL을 작성하는 수고로움을 덜 수 있다.
뿐만 아니라 다른 Database로 Migration을 진행해야 할 경우에도 SQL 전면 수정과 같은 부담을 덜 수 있다.
Java에서는 JPA(Hibernate)와 같다고 볼 수 있다.
4. RESTful API¶
Rails는 기본적으로 RESTful API를 개발하도록 권장하며 유도한다.
그래서 직관적인 api체계를 얻을 수 있다.
바로 다음에 소개할 scaffold
를 사용하면, 정말 손쉽게 RESTful API를 얻을 수 있다.
RESTful API에 대한 개념이 부족하더라도 Rails에서 제공하는 기능들을 이용해 개발하다보면 자신도 모르는 사이에 RESTful한 개발을 하고있을 것이다.
5. Scaffolding¶
Rails의 꽃이라고 할 수 있는 기능이다.
그저 명령어 한줄만 입력하면 도메인과 관련된 CRUD로직과 View를 전부 얻을 수 있다.
rails g scaffold School
라는 명령어를 입력하는것만으로 기초 공사는 다 끝나는 셈이다.
마무리¶
이번 글에서는 Rails에 대해서 간단히 소개하고 특징을 알아보았다.
현재는 소개한 특징의 상당 부분들이 다른 웹 프레임워크에서도 적용할 수 있는 부분이고, Rails만의 장점이라고 보기는 어렵다라고 생각할 수 있다.
하지만 Rails등장 당시 MVC패턴과 ORM을 적용한 프레임워크는 Rails가 처음이었고 Laravel, Django등의 프레임워크에도 영향을 준 것으로 알려져 있다.
이처럼 비슷한 점도 많지만, Rails에서는 scaffold라는 기능을 통해 빠르게 개발할 수 있다.
다음 시간에는 scaffold가 해주는 작업들을 하나하나 분해해서 살펴보고 scaffold가 자동완성해주는 작업들을 구체적으로 살펴볼 계획이다.
작성자: 성승익
작성일: 2021-07-11