일요일, 3월 25, 2012

[독서광] Nginx HTTP Server

오늘은 간만에 기술 서적 하나 소개해보자. 부제가 '아파치를 대체할 강력한 차세대 HTTP 서버 엔진엑스'라고 길게 붙어있는 'Nginx HTTP Server'는 최근에 인터넷에서 급속도로 인기를 얻고 있는(심지어 아파치 2.4에서도 다분히 견재하기 시작한) 엔진 엑스를 설명하는 책이다. IT 기술 분야에 종사하시는 분들이라면 한두번 정도 이야기를 들어보셨겠지만 Nginx는 전세계 도메인 중 12.2%(22.2M) 정도를 호스팅하는 인터넷을 지탱하는 오픈 소스 소프트웨어라고 보면 틀림없다. 물론 LAMP가 절대적인 우위를 점하는 한국 상황에서야 아파치의 아성이 절대적이지만 고성능 웹 서버를 구축하려면 분들께서는 반드시 엔진엑스에 대한 내용을 숙지하고 넘어갈 필요가 있다.

엔진엑스의 설계 사상은 복잡한 기능을 줄이는 대신 10k(동접 만 명)를 목표로 최대한 많은 사용자를 지원하려는 데 있다. 500,000 Request/sec - Modern HTTP Servers Are Fast라는 글을 읽어보면 알겠지만, Nginx를 사용할 경우 24G 램을 장착한 인텔 핵사 코어 제온 서버에서 정적 파일을 서비스할 때 커넥션 1000개로 초당 500,000건을 서비스하는 성능이 나온다. latency는 1.5ms 정도라고 하니까 사실상 번개처럼 페이지를 날리는 셈이다. 말이 초당 50만건이지, 하드웨어 성능을 고려하더라도 인상적인 결과를 보여준다(물론 어디까지나 정적 HTML 파일을 대상으로 하는 벤치마크니까 현실에서 이런 성능이 완벽하게 나오기를 기대하지는 마시라. 낄낄). 아파치와는 달리 엔진엑스의 구성 파일은 아주 단순해서 일반적인 상황이라면 스무 줄을 넘기지 않으며, 문제 해결이나 튜닝 과정 역시 제법 단순하다. 물론 단순함을 위해 복잡성을 버렸기에 아파치에서 가능한 모든 작업을 엔진엑스에서도 지원하리라고 생각하면 오산이다. 엔진엑스는 동적인 모듈 추가도 불가능하고(오직 컴파일 시점에서만! 프로그래머 천국이다. ㅋ), 엄청나게 다양한 기능을 제공하는 모듈도 부족하며, 엄청나게 강력한 환경 설정도 불가능하다. PHP 연동 역시 FastCGI를 사용하도록 PHP 엔진을 패치해야 하므로 기존 LAMP에 푹 빠진 개발자분들의 강력한 저항을 불러일으킬 가능성도 높다. 하지만 아주 뛰어난 리버스 프록시로 동작하는 기능, 정적 파일 서비스 성능, 마스터-작업자라는 프로세스 구조(아파치처럼 HTTP 요청을 받아들이는 과정에서 느려터지는 바람에 사람 애간장을 태우지는 않는다 ㅋㅋ) 등은 요구 사항만 맞다면 엄청나게 성능을 높여주는 위력을 발휘한다.

뭐 어쩌다보니 거의 엔진엑스 자랑질 모드로 삼천포행 티켓을 끊은 느낌인데, 이 책은 엔진엑스를 사용하기 위한 설치부터 기본 환경 설정을 시작으로 개별 모듈 소개와 모듈별 환경 설정, FastCGI를 사용한 PHP/파이썬 연동, 리버시 프록시 기능을 활용한 아파치와 병행 사용, 아파치로부터 엔진엑스로 이전하는 방안을 차례로 다룬다. 'Nginx HTTP Server'는 사실상 엔진엑스를 다루는 첫 책이므로 다른 대안은 없어 보이며(물론 이 책 이외에도 쿡북이 원서로 나와있지만 어디까지나 단편적인 기법 소개일테니...), 막 시작하는 분들께서 짧은 호흡으로 전반적인 구조와 모듈 기능을 훑고 지나가기에는 부족함이 없으리라는 생각이다. 물론 환경 설정 중심으로 책이 구성되다 보니까 실제 활용 사례 연구와 응용 방안이 부족하다는 느낌이 들긴 하지만, 아파치 세상에서 갈고 닦은 실력이 있는 독자라면 어렵지 않게 엔진엑스 플랫폼에서도 자신의 지식을 응용할테니 환경 설정 중심의 설명이 아주 고약하지만은 않다는 생각이다. 아파치에 익숙하지 않은 독자라도 단계별 설명에 따라 단순한 초기 설정을 토대로 필요한 설정을 하나씩 넣었다 뺐다 하면서 테스트하면 될 것 같다. 개인적으로는 아파치 쪽과 비교 설명하는 8장이 가장 실용적이고 실질적인 정보를 많이 제공하고 있다는 생각이다(앞 부분 읽다가 환경 설정에 지쳐 책을 덮어버리지는 말기 바란다).

이 책의 번역 상태는 상당히 좋으며(번역하신 분이 B급 프로그래머 보다 연배가 높다는 이야기를 듣고서 화들짝 놀랐다), 자습서처럼 읽고 나서 참조 매뉴얼처럼 보면 되기 때문에 책 한 권으로 입문서부터 참고서까지 모두 해결할 수 있다는 장점도 언급해드린다. 복잡하고 느린 아파치에 질린 개발자 분들이라면 슬쩍 곁눈질을 하리라는 생각을 하며 오늘 뽐뿌질은 여기까지!

EOB

댓글 없음:

댓글 쓰기