루비 온 레일즈 기본 개념잡기
시작하기에 앞서 저는 http://rubykr.github.io/rails_guides/getting_started.html 이 웹사이트를 참고했습니다!
1. Ruby on Rails
일단 Ruby on Rails 란 2003년 미국의 David Heinemeier Hansson이 처음으로 발표한 Ruby 언어로 작성된 웹 어플리케이션 프레임워크라고 합니다.
※ 프레임워크: 소프트웨어의 구체적인 부분에 해당하는 설께와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것
레일즈는 주장이 확실한 소프트웨어입니다.
레일즈는 최고의 방법을 가정하고, 그러한 방법을 격려하도록 설계되어 있습니다.
아래는 레일즈의 철학들입니다.
DRY - "Don't Repeat Yourself" - 이 원칙은 "같은 코드가 존재한다면 나쁜 것"을 의미합니다.
설정 보다 관습(Convention Over Configuration) - 이 원칙은 여러분이 원하는 기능들에 대해서 일정한 가정을 바탕으로 해결책을 제공하여 작은 단위의 끝없는 설정 파일들을 줄여줍니다.
REST 는 웹 어플리케이션의 최고의 패턴이다. - 리소스와 표준 HTTP 요청(HTTP verb)에 적합한 웹 어플리케이션 개발은 가장 빠른 방법입니다.
2. MVC 아키텍쳐
그리고 레일즈의 중심에는 MVC(Model, View, Controller)의 기술이 적용되었습니다.
MVC의 장점은 간단하게는 3가지 정도가 있습니다.
유저 인터페이스와 비즈니스 로직 분리
DRY(Don't Repeat Yourself) 유지 편의성
더 쉬운 유지 관리를 위한 코드 관리 편의성
MVC 각각에 대해 설명을 하자면,
Model: 모델은 어플리케이션의 정보와 데이터를 다루는 규칙들을 의미합니다. 레일즈의 경우, 모델은 주로 데이터베이스 데이블과 상호 작용하는 규칙들을 관리합니다. 대부분의 경우에 데이터베이스의 하나의 테이블은 어플리케이션의 하나의 모델과 대응합니다. 대부분의 비지니스 로직은 모델에 집중됩니다.
View: 뷰는 어플리케이션의 유저 인터페이스를 의미합니다. 레일즈에서 뷰는 주로 데이터 표현에 관련 된 루비 코드가 삽입되어 있는 HTML 파일입니다. 뷰는 데이터를 웹 브라우저나 다른 기기에게 데이터를 제공하는 일을 담당합니다.
Controller: 컨트롤러는 모델과 뷰를 "연결"하는 역할을 합니다. 레일즈에서 컨트롤러는 웹브라우저의 요청 받아서, 모델을 통해서 데이터를 조회하여, 출력을 위해 뷰에게 데이터를 넘겨줍니다.
그러니까 정리해보자면 모델이 뒤쪽에서 값을 저장했다가 컨트롤러에게 넘겨주고 컨트롤러는 그 값을 잘 가공해서 뷰에게 던져줘서 사용자가 원하는값을 볼 수 있게끔 해주는 로직인 거 같습니다. 이런 방식은 Django, Flask에서도 약간씩만 변형되서 쓰여서 조금 이해가 수월했습니다.
이 부분은 조금 생소한(?) 부분입니다.
3. 레일즈의 컴포넌트
레일즈는 이렇게 많은 컴포너트들과 함께 제공됩니다.
하나하나 설명을 해드리겠습니다.
Action Pack: Action Controller와 Action View를 포함하는 "Gem"입니다.
Action Controller: 레일즈 어플리케이션에서 Controller 부분을 담당하는 "Component"입니다.
Action View: 레일즈 어플리케이션에서 View 부분을 담당하는 "Component"입니다.
Action Dispatch: 웹의 요청을 받아서 원하는 곳으로 연결시켜줍니다. Flask의 route 데코레이터와 흡사한 것 같습니다.
Action Mailer: 내장된 메일 서비스 프레임워크입니다.
Active Model: Action Pack 서비스와 ORM Gem(Active Record)과 인터페이스를 정의합니다.
Active Record: 레일즈 어플리케이션에서 모델의 기초입니다.
Active Resource: 비즈니스 객체와 RESTful 웹 서비스 간의 연결 관리를 위한 프레임워크입니다.
Active Support: 레일즈가 사용하는 유틸리티 클래스와 루비 확장 모음입니다.
Railties: 새로운 레일즈 어플리케이션을 만들고 다양한 프레임워크과 플러그인들을 연결시켜주는 레일즈의 핵심 코드입니다.
4. REST
위에서 잠깐 언급을 했지만 아직 잘 감이 잡히지 않습니다.
REST란 Representational State Transfer의 약자로서, RESTful 아키텍쳐의 근간이 됩니다.
그리고 REST의 중요한 두 가지 원리는
자원 표현을 위해 자원 식별자 사용. Ex) URL
시스템 컴포넌트 간에 자원 상태 교환
Ex. 레일즈 어플리케이션에서의 요청!
DELETE /posts/7
이것은 Post 리소스 7번을 참조해서 DELETE, 즉 원하는 액션은 삭제라고 할 수 있습니다.
REST는 웹 어플리케이션의 아키텍쳐상 자연스러운 형태이고, 레일즈 어플리케이션은 RESTful의 복잡성과 브라우저의 괴랄함에서부터 보호합니다!!
사실 거의 참고한 것이긴 합니다만 그래도 자연스럽게 공부가 되었습니다.
레일즈 어플리케이션이 어떤 식으로 이루어져 있는지, 혹은 Flask, Django와 어떤 부분에서 다른지(요건 아직 많이는 파악을 하지 못했습니다), 레일즈 어플리케이션만의 특징은 있는지... 뭐 이런 것들을 대충은 알고 가는 느낌인 것 같습니다.
앞으로 더 레일즈에 대해서 공부를 해서 좋은 개발자가 되고 싶습니다.
'Ruby > Ruby on Rails' 카테고리의 다른 글
프레임워크의 장단점과 라이브러리와의 차이점 (0) | 2016.02.13 |
---|---|
퍼펙트 루비 온 레일즈 구입! (0) | 2016.02.13 |
Gemfile, Bundler 개념 (0) | 2016.01.29 |
새로운 Project 만들기 (0) | 2016.01.26 |
루비, 루비 온 레일즈 설치하기(윈도우) (7) | 2016.01.17 |