PHP와 프레임워크
PHP개발자는 프레임워크를 사용하기보다는 자기 자신만의 개발 환경을 꾸리기 원하는것 같더군요. 어쩌면 PHP가 매우 자유롭고 느슨한 언어다보니 PHP개발자들도 어떠한 프레임워크에 얽매이기보다 자신만의 규칙이나 회사의 규칙을 따라가는걸 좋아하는지도 모르겠습니다.
그러나 협업시 같은 프레임워크를 공유한다면 도움이 되는것은 사실입니다.
게다가 PHP 프레임워크는 보통 기본적으로 불필요한 코드를 줄이고 MVC패턴이 적용되어 생산성과 가독성을 향상시킨다거나, SQL인젝션을 방어하는 기능을 탑재한다거나하는 부가적인 보안기능을 가지고 있습니다.
때문에 빠르게 프로토타입 웹페이지를 제작하고자 한다면 이러한 프레임워크를 사용하는것도 좋겠습니다.
그렇지만 PHP 프레임워크가 많다보니 선택할 때 고민이 되는데요. 몇가지 프레임워크를 추천해봅니다.
Codeigniter 3.0
코드이그나이터는 가장 잘 알려진 PHP 프레임워크 중 하나입니다. 가벼우면서도 다양한 기능을 기본적으로 제공하지만 입맛대로 뜯어고칠 수 있다는 점이 특징이죠. 가장 PHP 프레임워크다운 프레임워크인 듯 합니다.
EllisLab에서 개발되었으나 2014년에 EllisLab에서 British Columbia Institute of Technology로 개발 주체가 이전되는 일을 겪었습니다. 당시 CI는 2.x 버전대였고 컴포저를 지원하지 않는데다 개발 주체마저 흔들리는 불안한 상황이었죠. 그렇지만 2015년 3.0을 릴리즈하며 다양한 부분에서 개선을 보여주었기 때문에 아직도 신뢰할만한 프레임워크라고 생각합니다.
훌륭한 위키
공식 홈페이지인 www.codeigniter.com 에서는 초심자부터 고급 사용자에 이르기까지 다양한 사용자층이 보아도 될 정도로 훌륭한 수준의 위키를 제공하고 있습니다. 게다가 한국 Codeigniter 한국사용자포럼같이 국내 커뮤니티도 잘 갖추어져 있어서 도움을 받거나 새로운 소식을 접하기도 쉽습니다.
PHP 버전 유연성
최소사양은 PHP 5.2.4, 권장사양은 PHP 5.4 이상입니다. 다른 프레임워크가 PHP 5.4 이상이 최소사양인 것을 볼 때 PHP 버전을 선택할 수 없는 상황이라면 코드이그나이터가 최선의 선택이 될겁니다.
초간단 설치
설치나 환경설정이 간단해서 그저 FTP를 이용해 압축파일을 풀어 놓기만 하면 됩니다. 사실 다른 프레임워크의 경우 세팅이나 설치 과정이 복잡하거나 호스팅을 받는 입장에서는 설치가 불가능한 경우가 많기 때문에 이렇게 간단한 설치방식도 지원한다는 부분이 매력적입니다.
컴포저 지원
하지만 단순히 압축을 푸는 방식으로는 유지관리가 불편할 수 있는데 3.0rc 버전부터는 composer를 지원하면서 이러한 문제를 해결하려는 노력을 보이고 있습니다. 사이트를 운영하는 입장에서는 이러한 서버사이드의 관리가 아무래도 필수적이죠.
초간단 라이브러리 제작
자신만의 라이브러리나 헬퍼를 만들거나 불러오는 방식이 간단하기 때문에 스누피나 암호화 클래스, recaptcha 라이브러리 등을 불러오는데 별 어려움을 느끼지 못했습니다. 이러한 부분은 기존의 클래스화된 기능이나 함수화된 기능을 편리하게 재사용할 수 있다는 점에서 높은 점수를 주고 싶습니다.
보안
SQL인젝션 방어, 크로스사이트스크립트 방어, 크로스사이트 폼 요청 위조 방어, 쿠키 보안, 파일/DB 세션 등 보안기능을 내장하고 있습니다.
총평
가볍고 빠른, 풀 커스터마이징이 가능한 프레임워크로서 다양한 프레임워크가 난립하는 아직까지도 좋은 선택이라 할 수 있겠습니다. 개인 홈페이지나 블로그에서부터 커뮤니티사이트, 쇼핑몰 등 모든 사이즈를 커버할 수 있는(필요한 기능은 만들어 나가면 되니까..) PHP 프레임워크라고 할 수 있겠습니다. 따라서 처음 프레임워크를 다뤄본다면 코드이그나이터를 추천합니다. 낚시 바늘로 치자면 작은 낚시 바늘이랄까요? 작은 낚시바늘은 작은 고기부터 큰 고기까지 다 잡을 수 있죠 :)
그러나 중간 규모 이상의 사이트를 구축하기에는 컴포저의 도움 없이는 아무래도 유지관리부분에서 불리하다고 생각합니다.
Laravel
인기 급상승중인 PHP 프레임워크입니다. 라라캐스트라는 튜토리얼 비디오부터 Forge라는 호스팅 서비스에 이르기까지 공격적인 마케팅을 벌이고있죠.
조금 빡빡한 요구사항
최소 PHP 5.6 이상에 composer는 필수입니다. 컴포저를 사용하기 위해서 서버쪽 접속 권한을 가지고 있어야 한다는 의미지요. 호스팅을 받는 입장이라면 두 개의 요구사항을 만족하는 서버를 찾기란 매우 어려운 일입니다. 하지만 다행히 Forge에서는 꽤 싼 비용으로 Laravel 호스팅을 받을 수 있습니다.
많은 인기만큼 빵빵한 지원
Laravel 공식 홈페이지와 한국 사용자 모임인 Laravel Korea, 그리고 각종 튜토리얼이 있는 라라캐스트와 적당한 가격으로 호스팅해주는 Forge에 이르기까지 다양하고 모자람 없는 지원을 해주고 있습니다.
라이브러리
Laravel은 다양한 라이브러리의 집합체입니다. 사실 composer 사용이 의무에 가까운것도 이 때문일지도 모르겠군요. Laravel에서 사용하는 라이브러리들은 대부분 GitHub에서 상위 랭크를 차지하고 있는 검증된 라이브러리입니다. Laravel의 인기가 피부로 와닿던 부분입니다.
매우 매우 심플한 코드와 에러 추적기능
Laravel의 최대 장점이 아닌가 싶습니다. 모든 클래스는 자동으로 불러와지고 그저 라이브러리를 쓸 생각만 하면 된다는 것이죠. 게다가 에러 추적기능이 있기 때문에 디버깅하기도 쉽습니다. 이러한 부분이 CI와 대조되는 부분이죠.
레이아웃 템플릿
CI는 레이아웃을 직접 잡아줘야 됩니다.. 이러한 부분은 CI를 사용하면서 언제나 부담으로 다가왔었는데요, Laravel은 기본적인 레이아웃 템플릿이 있어서 이를 쉽게 사용할 수 있도록 해줍니다.
위젯과 에셋
자바스크립트나 CSS와 같은 스크립트를 쉽게 사용할 수 있게 해줍니다.
조금 복잡한 설치
Laravel을 설치하기 위해서는 아파치에서 경로 설정 등을 변경할 필요가 있습니다.
총평
Laravel이 인기가 있는데는 분명 그 이유가 있는 법입니다. 개발하는 입장에서 Laravel만큼 편리한 프레임워크는 없을 듯 합니다. 특히 에러 추적이나 레이아웃 템플릿, 클래스 오토로딩의 경우 코드이그나이터에서 불편했던 사항이거든요. 하지만 자동으로 처리하는 부분이 많다는것은 필연적으로 그만큼 무거워진다는 의미이기도 합니다. Laravel의 성능에 대해 의문을 던지는 경우가 많더라구요. 개발시 이런점을 주의해서 최적화 해야할겁니다.
Yii 2.0
Yii 프레임워크는 견고한 보안과 개발환경을 가지고있는 프레임워크입니다.
PHP
최소사양은 PHP 5.4 이상입니다. 기타 Yii 프레임워크가 필요로 하는 사항을 지원하는지 일목요연하게 나타내주는 기능이 있어서 편리하게 확인할 수 있습니다.
컴포저 지원
composer를 이용해서 프레임워크를 설치할 수 있습니다. composer는 프레임워크의 라이브러리를 최신버전으로 유지하는데 필수적인 유틸리티죠.
FTP 설치 지원
composer를 지원하지 않는 서버도 있기 때문에 FTP를 이용한 설치 또한 지원합니다.
보안에 특화된 파일 구조
Yii 프레임워크는 index만을 노출시키고 나머지 파일들은 사용자의 접근을 제한하는 디렉토리에 위치시키는 방식을 사용합니다. 나머지 디렉토리 권한을 700으로 설정해서 접근을 파일수준에서 제한해버리는 방법이죠.
이러한 방식은 악의적인 목적을 가진 사용자의 접근을 원천적으로 제한하여 보안을 강화하는 효과가 있습니다.
프론트엔드와 백엔드
Yii advanced 버전의 경우 개발 및 보안을 위한 백엔드와 실 서비스를 위한 프론트엔드를 프레임워크 자체에서 구분하고 있습니다. 이러한 부분은 Yii만의 굉장히 특이한 방식이죠.
보안
SQL인젝션 방어, 크로스사이트스크립트 방어, 크로스사이트 폼 요청 위조 방어, 쿠키 보안 등 보안기능을 내장하고 있습니다.
총평
보안이 중요하고 빠른 프레임워크가 필요하다면 이만큼 견고한 프레임워크는 없을것이라고 생각합니다. 조금 복잡한 점만 뺀다면 말이죠.. 고급 사용자에게 추천합니다.
기타
Zend나 CakePHP와 같은 프레임워크가 있습니다.
출처 http://dovetail.tistory.com/58