자유게시판

제목 cakephp 에서 다른 프레임워크로 옮기려고 하는데요...
글쓴이 초보남편 작성시각 2015/03/16 17:48:47
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 15383   RSS
한동안 cakephp 를 사용하다가 슬슬 다른 것으로 갈아탈 때가 되지 않았나 싶어요.
cakephp의 장점이라면 코드를 극적으로 줄일 수 있고, validate와 html을 제작하는 부분이 무척 간단하고, PHP 버전을 타지 않는다는 점 등등이 있겠네요.(루비온레일즈를 충실히 구현한 프레임워크이기 때문에 상당히 "친절"합니다.)
반면 속도가 느려서 CMS 쪽 제작에 특화된 프레임워크가 아닐까 생각합니다.
(코드 재사용성도 상당히 높아서, 과거 게임서버+안드로이드와 아이폰 호환되는 노티기능 추가하는데 일주일이 안 걸리더라고요. 물론 대용량이 아니었으니 기능구현 수준이었지만요...)

지금 3.0이 나오고 있고, Laravel처럼 커맨드를 최대한 활용하는 방향으로 가고 있더군요.
모듈을 추가하고 업데이트하고 테스트코드 작성하고 deploy 하는 등등이 마치 yum을 사용하는 것처럼 간단하고 의존성도 해결할 수 있고요.
뭐랄까요, 지금까지는 PHP로 만드는 사람이 이것저것 다 제작했다면, Laravel 이후에는 기존에 있는 시스템을 이용하는 느낌입니다.
소스도 github에 올려서 직접 프레임워크에 업데이트를 해 버리니까요...
(업데이트 후 제대로 돌아가는지 확인은 셀프~)

사실 처음 떠올랐던 프레임워크는 당연히 CI 여서 문서를 훑어 봤습니다만, 제 느낌은...
라이브러리의 집합 정도로 생각됐어요. Template+Libs+ActiveRecord 정도?
손이 너무 많이 가는 느낌이고, 커맨드로 할 수 있는 일이 적기도 하고, 라이브러리 관리가 자동화가 안되어 있는 느낌도 들고요...
(물론 오래된 프레임워크가 다들 이런 이슈는 있는 것 같아요. 그래서 더더욱 Laravel이 인기가 있는 건지도 모르겠고요...)

제가 생각하는 CI의 느낌은 자유도가 너무 높아서, 규격화 되기 힘들다는 점이에요.
다른 소스를 쉽게 사용하기 위해서는 규격이 중요하다는 생각이거든요.
(최근에는 StyleCI 등을 활용해서 PHP의 코딩 규칙도 정규화 하는 프로젝트가 늘고 있기도 하고요...)

그래서, 지금은 Laravel 쪽으로 많이 기울긴 했어요. Laravel의 철학이 마음에 들기도 하고요...
지금까지의 프레임워크가 PHP 버전을 타지 않는 이유는 새로운 함수가 나온다면 그 함수를 PHP로 모두 구현하고(심지어 SSL 로직도 구현해 버리기도 한다는...) 버전에 따라서 include를 해 버리니 가능했었는데, Laravel은 과감하게 PHP 5.4 이상 사용하고, 필요한 모듈 4개는 꼭 설치해라, 캐쉬는 있는 캐쉬서버 사용하고... 이런 식이더군요. 최대한 가볍게 가는 대신 규격을 강요하는 느낌?(Laravel을 fork 하는 프로젝트는 더 과감하게 PHP 5.5 이상을 사용해라~ 도 있더라고요)

cakephp가 3.0이 제작되면서 Laravel 스타일로 완전한 재코딩이 이루어 지고 있는 상황이긴 한데(많이 늦긴 했죠), CI도 3.0이 나오면 어떻게 될지 모르겠고... 하지만, Laravel 과 같은 철학은 거스를 수 없는 대세 같기는 합니다.

사실 제가 프레임워크를 바꾸는 이유는 jQuery와 BootStrap으로 천하통일 되어가는 분위기가 있고, 그 두개의 프레임워크가 PHP 프레임워크에 붙어있으면 좋겠다 라는 생각 때문이에요. 루비온레일즈 류의 프레임워크는 자체 css와 js를 가지고 있을 수 밖에 없거든요.(5분에 블로그 만들기가 가능한 이유겠죠?)

프레임워크 선택은 한번 하면 몇년을 사용해야 하니 고민이 많이 되긴 하네요.
(뭐든 배우면 된다고는 하지만, 막대한 양의 라이브러리를 프레임워크에 맞게 포팅하는 작업을 몇년간 하면 옮기기가 쉽지가 않더라고요;;)
 다음글 악! 오늘 정모네요... (10)
 이전글 CI 3.0이 RC3 으로 업데이트 (3)

댓글

변종원(웅파) / 2015/03/16 19:20:04 / 추천 0
짜임새를 원하시면 젠드도 고려해보세요. codeigniter는 자유로운 영혼입니다. ㅎㅎㅎ
초보남편 / 2015/03/17 02:13:19 / 추천 0
젠드를 선택해야 하는 젠드만의 장점이 있을까요?
한대승(불의회상) / 2015/03/17 13:21:39 / 추천 0
CI의 자유로운 영혼은 장점이자 단점입니다.
초보남편님처럼 다른 프레임워크에 대한 경험이 있다면 CI는 활용범위가 더 넓어 질 수가 있을겁니다.

CI 3.0 RC3 까지 나와 있는 상태 입니다만, 정식 버젼이 나온다 하더라도 기존 방식에서 완전히 벗어난 프레임워크를 기대하기는 당분간 힘들것 같습니다.

규격화된 패키지의 필요성 때문인지 아래와 같은 프로젝트도 진행중입니다.
살펴 보시는것도 좋을것 같습니다.

http://www.getsparks.org/
초보남편 / 2015/03/17 13:54:31 / 추천 0
링크 감사합니다. getsparks.org는 흥미로운 프로젝트네요.

자유로운 영혼이라는 것이 무엇을 의미하는지는 시간을 두고 눈팅하면서 알아가도록 해야 할 것 같습니다.
 
변종원(웅파) / 2015/03/17 14:03:00 / 추천 0
초보남폄/ cakephp의 장점이라고 하시는 것이 때론 개발속도나 유지보수에 영향을 미치지 않았는지요?

한대승님 말씀처럼 ci의 느슨한 결합구조는 장점이자 단점입니다. 개발자가 개입할 여지가 많아서 제대로 활용하면 그 어떤 프레임워크보다 
파워풀하죠. 대신 잘못 배우거나 사용하면 욕 나오는 프로그램을 만들 수도 있습니다. ^^;

그리고 프레임워크는 개인 성향에 따라 호불호가 갈립니다. 전 장고 보면서 우와 죽인다. 이걸 php로 했으면 10줄이상 나올걸 1줄로 끝내네?
한동안 들여다봤는데 이상하게 메인으로 쓰기엔 무리가 있더군요.

새로운 프레임워크가 나올때 마다 들여다보지만 아직 ci를 벗어나게할만한 것을 못 찾았네요.
초보남편 / 2015/03/17 15:12:45 / 추천 0
cakephp를 사용하면서 개발속도나 유지보수가 어렵다는 생각은 초반에는 있었는데 지금은 거의 없어요.
무슨 기능을 넣는다는게 어렵다라는 느낌 보다는 어떻게 MVC화 시킬 것인지, 플러그인으로 만들 것인지 아니면 콤포넌트 혹은 헬퍼로 만들것인지 정도의 고민이었고요.

단적인 예로 회원가입에서 폼의 validate를 AJAX로 하고 싶다고 한다면, 아래의 소스를 플로그인 폴더에 붙여 넣고, 몇가지 세팅만 하면 바로 작동합니다.
https://github.com/nishiyamaosamu/cakephp-ajax-validation
쉽다 어렵다의 문제가 아니라 소스의 재활용성이나 팀간에 얼마나 쉽게 소스를 공유할 수 있는지가 저에게는 중요하거든요.
(제가 기억력이 상당히 떨어지는 관계로 같은 코드를 두번 작성하는 것을 극도로 피하는 경향이 있기도 하고요...)

제가 장고를 써본적이 없어서 그 느낌은 잘 모르겠지만, 저에게는 PHP 코드의 라인 수가 중요하지는 않아요. 인터페이스가 훨씬 중요합니다.(쓰는 사람이 쉽게 사용하기 위해서는 논리적으로 간단해야 하고, 그건 인터페이스가 쿨~ 해야 하더라고요. 논외지만 jQuery의 인터페이스가 너무너무 쿨~해서인지 PHP 5.4부터는 익명메쏘드를 파라미터로 넘긴다던지, return 값을 클래스의 오브젝트 자체로 한다던지... 이런 식의 프레임워크가 많아지고 있기도 하고요. $this->User->find()->with()->order()... 전 좀 심하다 싶을 정도의 jQuery 따라하기 처럼 보입니다만... ;;;)

지금까지 CI를 살펴본 결과로는 CI만의 특화된 영역이 있는 것 같아요. 공홈에 가보면 toolkit 이나 small footprint라는 용어가 나오는 것으로 보면 프로그램 제작자의 입장에서 원하는 결과물을 내는데 도움이 되는 역할로서는 최고 같아요.
한대승(불의회상) / 2015/03/17 15:17:09 / 추천 0
초보남편// 자유로운 영혼이라는 표현은 아름답게 포장한 표현이죠. ^^
자동라우팅(컨트롤러 class와 method, method 변수 => seg1/seg2/seg...) + DB드라이버(쿼리빌더) + 기타 라이브러리(class + helper) 집합이라는 표현이 가장 적절 할 겁니다.
그래서 기존 PHP로 프로그램을 짜던 분들은 몇가지 개념만 잡으면 바로 프로그래밍이 가능 하죠.
초보남편 / 2015/03/17 15:29:44 / 추천 0
한대승// 익숙해지기까지의 시간으로 따진다면 CI가 최고 같아요.
제가 cakephp에 익숙해지는데 거의 6개월 정도가 걸렸거든요. 그런데, CI 하시는 분들 보면 공부하면서도 나이스하게 만드시고 그러시더라고요.(대단대단~!)
php 프레임워크 장점으로 검색해 보면 아마도 CI의 최대 강점이 익숙해지는데 걸리는 속도가 빠르다는 점이라고 하고요.

본문에 쓴 Laravel만 하더라도 기억해야 할 것이 너무너무 많아서 버겁다라는 느낌이 들긴 합니다.(그 놈의 기억력 OTL)
(익숙해진 개발자 분의 동영상 보면 Sublime과의 조합으로 환상의 속도를 보여주긴 합니다만, vi의 명령어조차 10년동안 기억하지 못하는 저로서는 안습 ㅜㅜ)
변종원(웅파) / 2015/03/17 15:53:24 / 추천 0
개인의 호불호를 이야기한게 프레임워크지만 너무 타이트하게 뭐도 있어야 하고 셋팅은 어때야 하고 이런게 싫고
프레임워크를 어느 정도 마음대로 주무를 수 있어야 하는게 기준입니다. 
재 사용성은 개발자가 구현하기 나름인 영역인지라...
필요하면 가져다 쓰면 되고 없으면 규격에 맞게 만들면 되고... ^^

다시 표현하자면 내 개발영역을 프레임워크안에 맞추는게 아니라 내 개발영역안에 프레임워크를 포함하는 느낌? 
초보남편 / 2015/03/17 16:03:53 / 추천 0
와우, 정확한 표현 같아요. "내 개발영역안에 프레임워크를 포함하는 느낌?"

저도 그런게 좋아서 예전엔 템플릿언더바에 ActiveRecode 라이브러리 붙이고, validate 만들고 이런 적도 있었거든요. 좋고 나쁘고를 떠나서 뭘 만든다는 느낌이 있었네요.

그런데 문제는 예전에 작성한 코드가 기억이 안나요 OTL. 잘 만든 라이브러리는 딱 보고 안다고도 하는데, 자체가 기억이 안나버리니... ㅜㅜ
그래서, 라이브러리에 버전이 들어간 패키징이 필요하다는 생각은 하고 있었는데, 규격은 composer로, 저장소는 http://packagist.org 로 대동단결 되는 것 같아요.

제 고민이 다 가뜩이나 안 좋은 제 기억력이 시간이 가면서 더 안 좋아지기 때문인 듯... ;;;
한대승(불의회상) / 2015/03/17 16:08:44 / 추천 0
실제 프로젝트를 진행하게 되면 CI를 기반으로 프레임워크를 다시 디자인 하게 됩니다.
라이브러리 포팅도 쉬워서 기존 composer로 작성된 라이브러리도 가져다 그냥 사용하다시피 하고 있습니다.
저의 경우 CI 프레임워크 전체 기능 중 20%도 안되는 기능으로 프로젝트 수행이 가능하더군요.

학습곡선이 짧고(후임 교육이 쉽다.) 협업과 분업이 가능한 MVC를 쉽게 채용 할 수 있으며, 내가 떡 주무르듯이 주물 거릴수 있다는게 제게는 CI의 가장 큰 장점으로 와 닿더군요.