Page tree

설정보다 관례(CoC; Convention over Configuration)는 소프트웨어 개발자가 정해야 하는 수많은 결정들을 줄여주고 단순성을 확보하면서도 유연함을 잃지 않기 위한 설계 패러다임입니다.

 

프레임워크가 복잡해 지고 기능이 방대해짐에 따라 사용하기 위해서는 수많은 설정 파일과 세팅을 해야 하는 부담이 생겨났고 CoC는 이를 해결하기 위해 자주 사용하는 부분은 관례를 정하여 생략하고 이를 따르지 않을 경우에만 설정을 하도록 하고 있습니다.

 

많은 현대적인 프레임워크(Spring Framework, Ruby on Rails, Symphony 등)이 CoC 패러다임을 사용하고 있으며 라라벨도 CoC 패러다임에 입각하여 설계되었고 제공되는 기능들은 관례를 따르고 있습니다.

 

혹자는 CoC 패러다임을 적용하면 자유도가 떨어진다는 의견도 있지만 팀으로 일하게 되는 소프트웨어 개발 프로젝트의 특성상 표준화와 규격화가 정해지지 않는다면 공유와 협업이 힘들어 지고 잘못된 설정등으로 인한 버그 발생 소지가 크며 유지 보수가 어려워 지는 문제가 있습니다.

 

예를 들어 블로그 서비스를 개발하고 있고 게시 글의 카테고리를 저장하는 테이블인 article_categories 를 만들었을 경우 라라벨은  관련 모델 클래스는 ArticleCategory 라고 가정하고 동작하므로 개발자는 모델과 일치하는 테이블 이름이 다른 경우에만 설정을 하면 됩니다.

또 로그인을 처리하는 URL이 /auth/login(라라벨 5.1) 또는 /login(라라벨 5.2)이라고 가정하고 있으며 로그인에 성공할 경우 /home URL 로 리다이렉트 하도록 관례가 설정되어 있으므로 설정을 생략하고 별도의 URL 을 사용할 경우에만 설정을 해주면 됩니다.


CoC 는 이렇게 많은 설정 파일을 관리하고 세팅을 해주어야 하는 부담에서 벗어나 애플리케이션 개발에 집중할 수 있게 해주는 훌륭한 패러다임이지만 한 가지 문제가 있습니다.


관례를 모르면 어떻게 동작하는지 이해를 할 수가 없으므로 관례를 따르지 않을 경우(레거시 데이타베이스 등) 나 커스터마이징시 많은 어려움을 겪을 수 있으며 어디에서 관례를 찾아야 하는지 알기 힘들다는 점입니다.


이 책에서는 이런 문제를 해결하기 위해 다루고 있는 기능들을 설명할 경우 미리 정해진 관례에 대해서도 설명하여 라라벨 프레임워크에 익숙해 지도록 도울 것입니다.