제가
PHP를 버린 결정적인 계기
는 PHP의 생명주기가 Request 기반이라는 것 때문입니다. 매 요청마다 적재->초기화->실행->해제를 반복하는 특성 때문에 설계가 조금만 복잡해도 성능이 급속도로 떨어질 수 밖에 없어요. 중간 코드 캐쉬도 불안정하고…
09.02.04 16:15
몇가지 궁금한것은 , 1. 적재,초기화,실행 -> 스크립트 언어의 특성을 말하시는건가요? 2. 설계가 복잡하다는것은 언어비종속적 사양에 관한 말씀이신가요? 아님 php를 고려하여 설계하려니 복잡하다는 이야기이신가요? 3. 성능저하문제는 오래된 이슈인듯해요. 보통 이야기가나오면 생산성 및 compile module(JNI같은)이야기를 같이 언급하죠^^;
2. 객체지향적으로 SRP 원칙에 맞춰 개발을 하고 (특히 PHP5에 추가된 인터페이스를 사용한다면) 웹 프레임워크나 DB 추상화 기술을 사용한다면 한번의 Request에 수십에서 100여개의 php script 파일을 메모리에 적재해야하는 경우도 있는데 매번 이런 작업을 하는 것은 비록 중간코드 캐쉬를 쓴다고 해도 엄청난 부하가 됩니다. 특히 thread safe하지 않기 때문에 메모리 사용량도 만만하지 않죠.
직접 서비스를 하는 경우에는 값싼 서버를 탄력적으로 운영하는 것이 가능해서 PHP의 한계를 비교적 쉽게 극복할 수 있지만 일반 기업에서는 서버를 보강하는 일이 예산 등의 일로 쉽지 않기 때문에 제한된 박스로 최대의 성능을 이끌어내야 하는 문제가 있습니다. 결국 위에서도 말했지만 제 사정이 PHP로 적당하지 않은 곳으로 옮겨갔다고 보시면 되겠네요.
오리대마왕
: 예 규모가 아니라 비지니스로직의 복잡성을 두고 말한 것입니다. 게시판 수준의 서로 독립적인 모듈들로 구성된 서비스라면 그 모듈 숫자가 100개든 1000개든 단순한 사이트라고 할 수 있는 거죠. 그런데 짧게 쓰려니 자꾸 오해를 일으킬만한 소지를 남기게 되네요. ^^
세라비
: 적재만 탓하는 것은 아니죠. 코드 캐쉬를 쓴다고 해도 적재의 절반(컴파일 부분)만 해결되는 것이고요. 또 서버 환경에 따라서 불안한 경우가 많아요.
09.02.05 14:03
저는 오히려 인터넷으로 계층 갈등이 증폭되었으면 합니다.
우리는 그동안 부국의 구호 아래 너무 갈등을 억압하고 무시하며 살아왔기에 표면적으로는 질서가 있어 보이지만 오히려 내적 갈등의 깊이는 더 깊어가고 똘레랑스를 이뤄내는 성숙을 하지 못했습니다.
09.02.04 15:21
똘레랑스는 극심한 갈등으로인해 사회가 붕괴되는 상황까지 몰린 후에 배울 수 있는 것이라고 생각합니다. 그 과정에서 힘든 고비가 있더라도 끝없이 노력하는 수 밖에 없다고 생각합니다. 하지만 말씀하신 것 보면 인터넷으로 배설하는 사람 얘기 같군요. 제가 약간 초점을 잘못 잡은 듯...ㅎㅎ
BDD와 TDD는 상치되는 개념이 아니라
고 생각해. BDD는 Test라는 단어가 주는 오해를 문학적 방법으로 해소하려고 만든 것이고 TDD는 코드에 확신을 가지고 개발할 수 있게 하는 개발 방법이고… 결국 BDD를 이용해 TDD를 할 수도 있다고 봐.
09.02.02 22:02
TDD를 좀 큰 주기로도 생각하는 사람들도 있기는 한데 (틀리다고는 생각하지 않지만) 적어도 켄트백의 책에서는 짧은 주기 (수십초에서 길어 봤자 수분) 안에 끝나는 결정에 대한 테스트를 말하고 있다고 생각해. 인수테스트는 아무리 XP같이 반복 주기가 짧은 방법론이라고 해도 일주일인데...
피드백에 대한 얘기지... 더 정확히 말하면 피드백을 빨리 얻자는... TDD를 확장하는 논의에 대해서 반대하지는 않지만 인수테스트에 테스트 자동화 기술을 사용하는 것과 극히 짧은 주기의 TDD를 쓰는 것과는 성격이 무척 다르다고 생각해... 예를 들어 오늘 내가 작업할 것을 테스트로 작성하고 하루 종일 작업한 다음에 테스트를 돌리는 것이 TDD일까? 난 아니라고 봐.
"What if I do a paper design for a week, then test-drive the code? Is that TDD?" Sure. it's TDD. You were aware of the gap between decision and feedback, and you controlled the gap deliberately.
두번째의 'a week'이 혹시 feedback 기간이라고 생각할지도 모르겠는데 그게 아니고 1주일 동안 생각하고나서, 그러니까 미리 설계를 대략하고나서 TDD로 코딩하는 것도 TDD라고 할 수 있다는 의미... 여전히 TDD의 주기는 수십초에서 수분 적어도 한시간은 안 넘는 짧은 주기인거지.
미투는 참 잘 만들었다니까요.
09.02.05 17:19