IIS7 + FastCGI PHP는 진리…

@codemaru · March 06, 2011 · 6 min read

이번에 회사 로그 서버를 한 대 더 확충했다. 리눅스는 당췌 관리하기가 빡쎄서 윈도우를 설치했다. 서버 2008을 설치하고는 리눅스에서 쓰던 파이썬 스크립트를 그대로 가져왔다. IIS7에 파이썬을 돌리기 위해서는 CGI 핸들러 매핑만 해주면 끝이었는데 리눅스에서 그 삽질을 한 걸 생각하면서 다시한번 GUI의 위대함을 느꼈다. ㅋㅋ~ 어쨌든 파이썬 스크립트는 몇 년간 써왔던 것인만큼 문제없이 잘 동작했다.

문제는 그 다음이었다. 주말에 심심해서 서버에 로그인을 했는데 CPU가 100%에서 떨어지질 않는 것이었다. python.exe가 뻥 좀 쳐서 한 200개는 떠 있었다. 이건 뭥밍. 이랬다. 테스트 삼아 피크 시간에 쿼리를 날려보니 한 5-6초가 걸려서 처리가 되는 것이었다. 난 파이썬빠지만 이건 좀 아니라는 생각이 들었다. 그래서 스크립트를 asp.net으로 바꾸면 좀 나아질까 싶어서 asp.net 문법을 좀 살펴보는데 스크립트를 asp.net으로 바꾸기가 좀 껄끄러웠다. raw data를 처리하는 부분이 있는데 그런 부분 지원이 좀 그랬다. 그래서 다음으로는 그러면 그냥 C++로 컴포넌트를 만들어서 넣을까라는 생각이 들었다. 네이티브로 도니깐 빠르지 않을까라는 생각이었는데, 난 그 부분에 대해서는 아는게 하나도 없었다. 검색을 좀 해보니 죄다 C#에 Managed C++ 관련 내용 뿐이었다. 머가 먼지도 모르겠어서 포기할 즈음에 발견한 글은 다름 아닌 MS와 php가 같이 작업해서 사고를 쳤다는 내용의 글이었다. performance 관련 검색을 하다가 발견한 글이었는데 IIS7이라면 자기라면 php를 선택하겠다는 논지의 글이었다. 그리고는 다음 동영상이 링크되어 있었다. 동영상을 보고도 뭐 크게 차이가 있을까 싶었지만 그래도 속는 셈치고 한 번 바꿔봤다. CPU가 탈까 걱정스러웠기 때문이다.

150줄 안팎의 아주 간소한 스크립트를 php로 바꾸면서 내가 다시금 느낀 것은 python은 위대하다는 것. 정말 python은 스크립트를 짤 때 내 멋대로 짜도 잘 돌아간다. 문제를 푸는데 집중할 수 있다. 문법적인 문제로 크게 고민할 부분이 없다는 점이다. 아주 간단한 몇 가지 규칙으로 거의 대부분의 문제를 깔끔하게 처리할 수 있다는 점이 핵심 포인트라 할 수 있겠다. 그런데 php는? 거추장스러운 함수를 일일히 검색해서 인터페이스를 확인해야 했다. 아주 간단한 조작조차도 함수가 없으면 안되는 ㅠㅠ~ 물론 php.net 사이트가 굉장히 잘 만들어져 있기 때문에 그닥 문제될 건 없지만 그래도 귀찮은 건 어쩔 수 없었다. 거기다 pack/unpack 함수 인터페이스는 뭔가 맘에 안들었다. 그래도 Microsoft님들과 고생해서 뭔가 만들었다니 기대를 하고는 힘겹게 스크립트 한 줄 한 줄을 번역했다.

두둥. 끝나고 IIS7에 php를 설치했다. 여기서 다시 한 번 놀랐는데 예전처럼 뭐 php 사이트에서 파일 받아서 설치하고 이런 과정이 없었다. 그냥 웹플랫폼 관리자라는 곳에서 php 설치 클릭하니깐 알아서 다 끝났다. 이게 MS 방식 아니겠는가? ㅋㅋㅋ~ 그리고는 php 파일을 돌렸는데 너무 우아하게 잘 돌아가는 것이 아닌가. 풉. 새벽 시간이라 접속자가 별로 없어서 기존 python에 비해서 얼마나 좋아졌는지는 알 수는 없었다.

날은 밝았고 다시 사람들이 게임할 시간. 서버에 들어갔다. 어제 100%던 CPU는 과연 어떻게 됐을까? 10% 밑에서 놀고 있었다. 그 많던 python.exe는 몇 안되는 php-cgi.exe로 바꼈다. 우왕 FastCGI이거 장난 아니다. ㅋㅋ~ 쿼리를 날려봤다. 바로 응답이 온다. 그렇지 이거다. 유튜브 동영상은 진리였다. IIS7을 쓴다면 php로 가자. python은 우아하고 아름답고 순결하지만 그게 전부다. 현실 세계에서 버티려면 그런 것쯤은 버리고 타협할 필요도 있는 법이다.

 0  0

 

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중