자유게시판

제목 [토론] 코드이그나이터가 restful 구현하는데 약점이 있을까요?
글쓴이 변종원(웅파) 작성시각 2015/12/09 10:47:41
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 18313   RSS
어제 검색어 "코드이그나이터"로 포털에서 검색을 하다보니 질문과 같은 내용을 단점이라고 써놓은 것을 봤습니다.

저는 codeigniter로 restful framework도 만들어서 퍼블리싱 된 게임에 이용했고
지금도 공개된 restful library를 이용하여 api로 사용중인데 한번도 저런 단점이 있을거라고 생각하지 못했습니다.
(어떤게 약점인지는 기술하지 않고 저 내용만 있습니다.)

앞뒤가 빠져서 그럴 수도 있겠죠 (XX언어보다 약하다 등)

제가 생각하지 못하는 부분이 있는지 포럼 여러분의 의견 개진을 통해 알아보고 싶습니다. ^^
 다음글 삽질중 같은데 방향을 잘 잡은건지.. ( 선택장애 주의... (5)
 이전글 ajax를 사용하다보니 생기는 고민인데요... 선배님들... (3)

댓글

kaido / 2015/12/09 11:13:42 / 추천 0
두서 없이 단점이라고 하니 검토할 부분이 어딘지 갸름이 안되는 군요.

최근에 나오고 있는 js 기반의 restful 보다는 퍼포먼스 측면이나 사용 방법에 따라서는 다를 수는 있습니다.

CI를 한번 타고 반응 하니 말이죠.

개인적으론 유지보수 생각하면 CI restful이 나쁘다는 생각은 안듭니다.

restful 한번  API 만들고 땡 아닙니다. 만들고 나면 추가 관리도 당연히 들어갑니다. [상황은 항상 변하니]
 
한대승(불의회상) / 2015/12/09 11:14:50 / 추천 0
저도 필요에 의해 몇몇 서비스 개발을 해보았는데 딱히 생각나는 단점은 없는것 같군요.
변종원(웅파) / 2015/12/09 11:48:01 / 추천 0
kaido/ 네. 저도 그 부분이 궁금해서 글 올린겁니다.
단점이라고 해놨는데 어떤게 단점인지 올리지를 않아서요. ^^;
제가 모르는 부분이 있나 해서죠.

속도 부분은 당연합니다. (저도 속도가 필요한 곳은 mysql, restful class 2개로만 구성해서 사용합니다.)
유지보수 측면에선 훌륭하죠.
앞단(변수체크, 보안처리), 뒷단(뿌려주는 작업. 예를 들자면 json이나 xml로) 작업을 할 필요없이
컨트롤러와 모델로 분리하여 비지니스 로직만 작업하면 되니까요.

한대승/ 현재로서는 속도(그런데 이건 네이티브 개발과 프레임워크 사용의 문제이니 정확히 말하면 codeigniter의 단점은 아님)
implemental / 2015/12/09 15:40:36 / 추천 0
현재 델파이로 datasnap 미들웨어를 구축 후 codeigniter와 rest형식으로 개발 중입니다. 
단점이라...아직까진 없는 것 같은데요 ^^;
/ 2015/12/10 08:59:00 / 추천 0
//implemental 궁굼... 어떤경우때문에 미들웨어를 만드셨는지요??
implemental / 2015/12/10 09:35:09 / 추천 0
닉// 현재 회사 제품이 델파이로 개발되어 있습니다. 일부 부분을 현재 웹/앱으로 포팅 중이긴 한데, 
델파이 쪽에서 3-tier로 구성을 바꾸면서  웹/앱에서도 적용하게 되었습니다. 
3-tier로 가게 된 이유는 현재 app 서버, DB서버로만 구성되어 있는데, 동접이 많은 제품이 나오게 되면서
서버의 부하를 줄이고자 이것 저것 알아보다가, 
서버의 사양을 높이거나 댓수를 늘려 로드밸런싱을 하긴 프로젝트 초기 단계이고 가격적인 부담도 되고,
(아마 차후에 정말 동접이 많아지게 되서 로드밸런싱을 하게 된다면 AWS의 ELB로 하게 될 듯 하네요.)
결국 델파이 xe8의 restful datasnap으로 미들웨어를 구축하는 방향으로 잡았네요.

미들웨어 (datasnap) 에서 쓰는 메소드는 델파이 어플리케이션 & 웹/앱 공용으로 사용할 수 있게 만들어뒀고,
RESTful 형식으로 암호화 통신하고 결과값은 암호화된 JSON으로 받는 형식으로 개발 중입니다. 

여담 및 질문이긴 하지만, 미들웨어 도입하면서 세션과 캐싱도 redis로 처리하고 있습니다. 
혹시 Redis Desktop Manager 말고 쓸만한 관리툴있으면 추천 부탁드려요.(Windows 기반입니다.)
한대승(불의회상) / 2015/12/10 10:49:16 / 추천 0
restful 구현 하면서 한 가지 불편했던점이 문득 떠올라 적어 보니다.
restful 구현 권장 규격(표준아님)을 살펴보면  "_"(언더바) 사용을 지양하고 "-"(하이픈)을 사용하라고 되어 있습니다.

2.x 에서 컨트롤러명에 "-"을 사용 할 수 없어 "_"를 사용했는데 사용하는데 문제가 없지만 규격을 어기는거 같아 찝찝(물론 라우터에 명시하여 사용하는 방법이 있긴 함)

3.x에서 이 부분이 패치되어 3.x 사용시 관련 없는 사항이 되었네요.

* 3.x 에서는 컨트롤러명에 "-" 사용 방법
  • config/routes.php 파일 open
  • $route['translate_uri_dashes'] = TRUE; 로 설정
배강민 / 2015/12/10 13:39:18 / 추천 0
많이 사용해보진 않았지만, 더 좋은 방식과 로직도 있을 순 있겠지만, 사용자체에 대해 불편함을 느끼면서 진행하진 않았습니다.

 
전상민 / 2015/12/10 17:15:00 / 추천 0

CI 가 Restful API 개발에 약점이 있다기 보단 그걸 개발하는 사람의 역량에 따라 달라지지 않을까 싶네요.

전에 특정 가수의 앨범 판매량을 한터차트(http://www.hanteo.com) 라는 곳에 제공하는 API를 개발한 적이 있었는데 별 불편한 점이 없었습니다. 

네이티브로 개발하는 것 보단 퍼포먼스가 떨어지겠지만 개발 시간 단축에 있어서는 충분히 장점이 많다고 생각합니다.

 

Laravel 의 Route::resource(); 같은 기능이 CI에도 탑재되면 좋을 것 같긴 하네요.

http://laravel.com/docs/5.1/controllers#restful-resource-controllers

한대승(불의회상) / 2015/12/10 17:31:00 / 추천 0

CI 3.0 부터는 PUT, DELETE 메소드를 라우팅에서 처리 가능하도록 개선 되었습니다.

관련 메뉴얼 : http://www.ciboard.co.kr/user_guide/kr/general/routing.html

 

CI 3.0의 $this->input->input_stream() 함수 사용시 PUT, PATCH, DELETE 를 통하여 전달되는 데이터도 처리 가능도록 개선 되었습니다.

관련 메뉴얼 : http://www.ciboard.co.kr/user_guide/kr/libraries/input.html

변종원(웅파) / 2015/12/10 17:44:26 / 추천 0

시간 내서 3.0의 put, delete 라우팅을 활용하여 RESTful 환경을 구성해야겠습니다.

hook으로 전처리(변수 보안처리 및 필수여부 체크), 후처리(xml 또는 json 방식으로 출력)를 해주고

컨트롤러에서는 전처리된 특정변수에서 값을 가져와서 처리하고 다시 특정변수에 값을 넣으면

후처리 hook에서 json이나 xml로 출력하도록 하면 개발자는 컨트롤러, 모델의 비지니스 로직만 작성하면 됩니다.

(여기에 oauth 라이브러리만 묶으면 RESTful 구축 완료. 전송하는 데이터 암복호화도 추가)