개발 Q&A

제목 웹 개발에 관한 질문
글쓴이 FOKKIA 작성시각 2016/04/25 17:11:35
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16176   RSS

안녕하세요, 이번에 곧 2년 차 되는 개발자입니다. 웹 개발을 하다보니 궁금한게 생겨 질문드립니다.

 

1) PHP는 함수 호출 비용이 매우 비싼 것으로 알고 있습니다. CodeIgniter를 사용하면서 느끼는건데, 이정도로 함수 호출이 많은 프레임워크는 속도에 문제가 있지 않나요? 물론 MVC패턴이 유지보수의 편리함을 더 중점에 둔 구조지만 뭔가.. 이렇게 많아지니 좀 걱정됩니다.

2) 현재 개발중인 사이트가 대부분의 기능을 컨트롤러가 아닌 라이브러리에서 처리합니다. 컨트롤러는 라이브러리의 함수로 넘길 값에 대한 무결성 검사등을 주로 하며, 라이브러리를 불러오고 라이브러리에서 처리한 값들을 어느정도 치환 후 views로 넘기는 작업만 하는데요, 이런 구조를 가지고 있어도 '괜찮은' 것인가요? 기존에 개발했던 MVC패턴 사이트는 이런 구조를 가지고 있지 않았는데 CI로 개발하다가 보니 Controllers, Models, Views, Library 4구조가 되어버렸습니다.. 

3) CI 로 만드는 API는 보통 어떤 구조인가요? RESTful API로 구현하는지, 특정 클라이언트가 접속한 것을 어떻게 확인하여 요청이 오면 요청한 값을 돌려주는지 궁금합니다. (비회원 구조는 세션도 사용이 불가능한데, 어떤 방식으로 클라이언트가 접근한 것인지 아니면 누군가가 디버거나 브라우저로 직접 링크 따서 접속하는건지 구분하나요?)

4) PHP 에서는 어떤 방식으로 메모리 관리를 해야하나요? unset를 사용하고는 있지만, C++처럼 메모리에 관련된 내용을 잘 찾기가 어려워서 매번 "과연 이렇게 개발해도 괜찮은지" 고민하게됩니다. 

5) 자바스크립트도 공부하고 있습니다. 그런데.. 자바스크립트도 어떻게 하는게 유지보수와 메모리에 좋은지, 처리속도는 어떤 방식을 통해 짜면 괜찮은지 알기가 너무 힘들어서 질문드립니다. https://github.com/FOKKIA/EasyTweet/blob/master/js/load.js 지금 거의 내용이 없는 코드지만 이렇게 짜도 괜찮은걸까요? 뭔가 더 괜찮은 방법이 있나 없나 궁금해서 찾아보지만 실력이 부족해서 그런지 "왜 이게 더 비효율적인 방식인지" 라는 질문에 답이 될만한 코드를 못찾겠습니다.. 

 

 

고수님들의 답변좀 부탁드립니다.

감사합니다.

 다음글 mysql 다중선택 쿼리문에 관해 조언부탁드립니다. (8)
 이전글 PHP와 Mysql을 자세히 배우고 싶습니다 (3)

댓글

육사시미 / 2016/04/25 17:20:41 / 추천 0

모두 답하기는 힘들지만 몇가지만 아는데로...

1. 함수 호출비용이 아무리 비싸도 DB에서 데이터 가져오는것 보다는 쌉니다. DB 최적화에 신경 쓰세요.

2. 공유해서 사용하는 라이브러리가 많다면 라이브러리가 많이 추가 되겠지요. 너무 불필요하게 공용 라이브러리가 많은건 아닌지 점검 해 보세요. 모델로 정의해도 되는 경우가 많습니다.

3. 케바케라 뭐라 답하기 힘듭니다. http://cikorea.net/bbs/view/file?idx=3575&lists_style= 자료를 참고 하세요.

4. unset 으로 관리 하시면 됩니다. 일반적으로 세션별 작업이 끝나면 자동으로 회수 되는걸로 알고 있습니다.

5. 좀 더 향상된 구조를 찾고 있다면 javaxcript AMD 관련 문서를 찾아 보세요.

변종원(웅파) / 2016/04/25 17:29:18 / 추천 0

1. php가 함수호출 비용이 비싸다는 말은 처음듣네요. ^^ 프레임워크를 사용하면 메모리 증가는 대부분 필수입니다. (일부 슬림 프레임워크 제외)

ci가 각광을 받았던 이유는 그 당시 여타 프레임워크에 비해 메모리사용률이 작았기 때문입니다.

메모리 사용에 따른 동접을 신경써서 네이티브로 개발할 것인가 프레임워크 사용으로 인한 이득을 누릴 것인가는 개발자 판단입니다.

2. 제 경우 라이브러리는 외부 클래스 또는 공개된 툴에서 사용하는 경우에만 사용하고 대부분 컨트롤러에서 처리합니다.

3. ci라고 기존 php 개발방식과 다르지 않습니다. 기존에 api 개발을 해보셨으면 그 방식 그대로 사용하시면 됩니다.

통상적인 토큰 인증과 restful 생각하시면 됩니다.

4. php는 메모리 관리가 필요없다고 해도 과언이 아닙니다. 스크립트 언어의 특징을 검색해보시는게 좋을 것 같습니다.

1개의 요청이 들어오면 아파치서버에 연동된 php에서 처리하고 (프레임워크를 거쳐 sql 연결, 끊는것을 자동으로 처리) 메모리 반환되고 끝입니다.

php.ini zend_enable_gc 항목 활성화 되어 있다면 신경쓰실 필요가 없습니다. (php5.3 이상)

5. 자바스크립트는 다른 분께 패스합니다. 

kaido / 2016/04/25 17:30:54 / 추천 0

1.  워드프레스도 있는데 CI 가지고 뭐라고 하시면 ㅎㅎ 프레임워크 사용의 주 목적을 망각 하시면 안됩니다.

퍼포먼스 보다 생산성 향상입니다.

 

2. 서드파티로 구성해서 라이브러리화. HMVC를 이용해서 서브 모듈화. 등등 컨트롤러를 최대한 단순하게 만드는것은 바람직한 방향입니다. 최근엔 composer 를 활용하는게 대세입니다. 한번 검색해 보세요.

 

3. 만들기 나름입니다. restful api 를 도입하면 장점이 하나 있는데, 불필요한 모델을 최대한 줄일수 있습니다. [정리 한다는 측면에서]

4. 보통은 페이지 랜딩이 끝나면 대부분 회수 할 겁니다. [일부러 좀비라도 만들지 않는 이상은...]

파일 관련 작업 하실때만 주의 하시면 보통 문제가 발생하지 않습니다.

5. 스크립트 향상 기법은 너무나 많고, 중구난방 자료가 많다보니... 경험이 답이에요.

예제로 보여주신 SNS API는 어차피 그대로 따라해야 하니 별 다른 고민을 하실 필요는...? ㅎㅎ

FOKKIA / 2016/04/25 17:41:10 / 추천 0

답변 감사합니다. 사수가 없어서 어떤 코드가 더 좋은 선택인지, 어떤 구조가 더 이득인지 이런 부분들을 쉽사리 해결하지 못해 고민이었습니다. 답변주신 육사시미님, 웅파님, kaido 님 감사합니다.

 

PHP로 직접 MVC패턴도 만들어 보고, 요상한 API도 만들어 보긴 했지만 CodeIgniter를 쓰는건 처음이라 궁금한게 좀 많아서 ㅎ..  확실히 직접 만든 것보다 편하고 무엇보다 정말 보기가 깔끔해서 스스로도 놀랐습니다. 

답변해주신 내용들로 더 공부해봐야겠네요. 감사합니다.

kaido / 2016/04/26 11:57:07 / 추천 0

요즘 어지간한 기업 아니면 사수 있는 기업 많지 않은거 같습니다.

인원 축소를 할때 제일 먼저 생각 하는 곳이 개발팀이라 그런지 ㅡ,.ㅡ

좋은 사수를 만나면 실력이 쑥쑥 느는데... 많은 개발자들이 고독한 싸움을 하지요.