분류
1. 개요[편집]
리즈너블(Reasonable)은 웹 개발 프레임워크의 일종이다. PHP 언어로 작성되었다.
2. 배경[편집]
PHP 언어의 버전이 7(Modern PHP)에 들어서면서 PHP는 객체지향 지원 수준과 문법이 JAVA와 동일하거나, 다른 신생 프로그래밍 언어의 문법을 적극적으로 받아들이면서 많은 개선이 있었다.[1] 하지만 80~90년대 CGI 시절의 관습을 그대로 따라 프로그래밍을 하는 사용자층도 아직 만만치 않다. 그렇게 짜도 일단 돌아는 갈 정도로 호환성이 좋기 때문인데, 현재는 호불호가 엇갈리는 부분이다. 가령, 자바스크립트도 이와 같은 특징이 있어 타입스크립트라는 보조 언어가 만들어지기도 했다.
타입스크립트가 나온 이후 자바스크립트 진영에서는 많은 인기를 끌고 있다. PHP 진영은 Modern PHP 계열에서 이미 라라벨이나 심포니 등 유명 프레임워크가 전세계 PHP 진영에서 자리를 잡고 있지만, 상대적으로 우리나라에서의 입지는 약하다. 우리나라에서는 프레임워크의 존재 자체가 대형 프로젝트에서만 사용한다는 인식[2]이 있어, 소규모 및 취미 프로젝트에서 사용하는 빈도가 낮다. 물론 국내에서도 PHP 기반 대형 웹사이트의 경우 코드이그나이터와 라라벨은 높은 인기를 얻고 있다.
우리나라 개발 환경은 프레임워크처럼 갖춰진 체계의 조력을 받지 않는 날코딩으로 만드는 소프트웨어가 많고 개발자들이 그것에 익숙하다. 모든 프로그래밍 언어를 통틀어서 다 그렇다. 하지만 이것은 전혀 문제가 아니다. 날코딩을 하더라도 최소한의 기본만 지킨다면 프레임워크를 사용한 것에 견줄 수 있는 안정성을 갖출 수 있기 때문. 가령, 웹 프로그래밍을 한다는 개발자가 전역/지역 변수 구분을 전혀 못한다던지, 세션이나 요청이 유효한지 검증하는 노력을 전혀 안한다던지, SQL injection의 위험을 아예 모른다던지 하는 상황은 최악이다. 프로그램의 안정성은 둘 째 치더라도, 이런 상황에서는 MVC는 커녕 최소한의 모듈화 조차 기대하기 힘들기 때문에, 기능을 모듈로 구분하는 현재의 개발을 생각해보면 프로젝트 자체를 어렵게 만들기도 한다.
개발자가 날코딩을 할 줄 안다고 이야기하는 것은 위에 기술한 이런 예외 사항도 직접 하나씩 고려하여 구현함을 의미한다. 그리고 현장에서는 프레임워크가 소프트웨어 기반과 관련된 모든 문제를 해결해주지 않기 때문에 반드시 이런 작업이 필요한 순간들이 많다. 아무리 프레임워크가 잘나왔다 한들 각 프레임워크는 적용된 주 분야와 개발된 해당 국가의 문화를 따르는 경우가 많으며, 실제 고객의 업무적 및 지역적 특성을 온전히 소화하기 위해선 날코딩이 부득이하게 필요한 순간들이 많기 때문이다. 즉, 날코딩을 한다는 자체보다 자신이 무엇을 고려하면서 날코딩을 했는지가 중요하다.
배경에 대한 이야기가 길어질 수 밖에 없는 이유는, 결국 과거과 현재의 개발의 방법이 많은 차이를 보이고 있으며 이로 인한 갈등에 소요되는 시간을 무시할 수 없다는 점이다.
타입스크립트가 나온 이후 자바스크립트 진영에서는 많은 인기를 끌고 있다. PHP 진영은 Modern PHP 계열에서 이미 라라벨이나 심포니 등 유명 프레임워크가 전세계 PHP 진영에서 자리를 잡고 있지만, 상대적으로 우리나라에서의 입지는 약하다. 우리나라에서는 프레임워크의 존재 자체가 대형 프로젝트에서만 사용한다는 인식[2]이 있어, 소규모 및 취미 프로젝트에서 사용하는 빈도가 낮다. 물론 국내에서도 PHP 기반 대형 웹사이트의 경우 코드이그나이터와 라라벨은 높은 인기를 얻고 있다.
우리나라 개발 환경은 프레임워크처럼 갖춰진 체계의 조력을 받지 않는 날코딩으로 만드는 소프트웨어가 많고 개발자들이 그것에 익숙하다. 모든 프로그래밍 언어를 통틀어서 다 그렇다. 하지만 이것은 전혀 문제가 아니다. 날코딩을 하더라도 최소한의 기본만 지킨다면 프레임워크를 사용한 것에 견줄 수 있는 안정성을 갖출 수 있기 때문. 가령, 웹 프로그래밍을 한다는 개발자가 전역/지역 변수 구분을 전혀 못한다던지, 세션이나 요청이 유효한지 검증하는 노력을 전혀 안한다던지, SQL injection의 위험을 아예 모른다던지 하는 상황은 최악이다. 프로그램의 안정성은 둘 째 치더라도, 이런 상황에서는 MVC는 커녕 최소한의 모듈화 조차 기대하기 힘들기 때문에, 기능을 모듈로 구분하는 현재의 개발을 생각해보면 프로젝트 자체를 어렵게 만들기도 한다.
개발자가 날코딩을 할 줄 안다고 이야기하는 것은 위에 기술한 이런 예외 사항도 직접 하나씩 고려하여 구현함을 의미한다. 그리고 현장에서는 프레임워크가 소프트웨어 기반과 관련된 모든 문제를 해결해주지 않기 때문에 반드시 이런 작업이 필요한 순간들이 많다. 아무리 프레임워크가 잘나왔다 한들 각 프레임워크는 적용된 주 분야와 개발된 해당 국가의 문화를 따르는 경우가 많으며, 실제 고객의 업무적 및 지역적 특성을 온전히 소화하기 위해선 날코딩이 부득이하게 필요한 순간들이 많기 때문이다. 즉, 날코딩을 한다는 자체보다 자신이 무엇을 고려하면서 날코딩을 했는지가 중요하다.
배경에 대한 이야기가 길어질 수 밖에 없는 이유는, 결국 과거과 현재의 개발의 방법이 많은 차이를 보이고 있으며 이로 인한 갈등에 소요되는 시간을 무시할 수 없다는 점이다.
3. 특징[편집]
프로그래밍 언어와 문법이 발전했다고 해서 모든 이들에게 발전된 언어와 문법을 강조하기란 쉽지않다. 그래서 기존의 개발 방식을 그대로 사용하더라도 안정성을 포함하여 최신의 수준과 동등하게 유지할 수 있는 노력이 요구된다. 해당 프레임워크도 이 부분을 중점으로 시작되었다.