8비트 애플II 호환기로 시작해 지금까지 30년 넘게 SW 개발 주변을 겉도는 경도 은둔형 외톨이다. 평생 혼자 살 운명이었으나 천사를 만나 가장 역할을 부여받고 용인 한적한 산기슭에서 아들 하나와 함께 행복한 가정을 꾸리고 있다. 지금은 우아한형제들에서 멋진 개발자들과 세상을 더 낫게 만드는 즐거운 퀘스트를 수행 중이다. 소프트웨어 개발에 대한 인식을 바꾸고 개발 현장을 개선하는 데 관심이 많다.
인터넷이 대중화되고 닷컴 붐이 한창이던 1999년에 컴퓨터 세상에 큰 영향을 미친 화두 하나가 던져졌습니다. 'C10K 문제'라고 부르는 주제입니다.
그전까지 컴퓨터 산업계는 어떻게 일을 빨리 처리하느냐에 주로 초점을 맞추고 있었습니다. 하드웨어는 고성능 연산을 통해 더 큰 일을 더 빨리 처리하도록 발전했고 소프트웨어도 그런 문제를 푸는 데 맞춰 만들어졌습니다. 그런데 인터넷이 보급되면서 큰일을 빨리 처리하기보다는 아주 단순한, 예를 들어 네트워크로 정적 파일을 전송하는 일 같이 큰 연산 성능이 필요 없는 작업을 아주 많은 사람에게 동시에 제공하도록 처리하는 게 중요해졌습니다.
'C10K 문제'는 이런 관점에서 당시 소프트웨어 기술이 하드웨어 성능을 충분히 활용하고 있지 못하고 있다고 지적함으로써 해법을 탐구하고 제시하는 것이 목적이었습니다. 'C10K 문제'는 많은 기술자에게 영감을 줬고 이에 반응해 여러 시도가 있었습니다. lighttpd 같이 즉각적으로 만들어진 기술도 있었고 토네이도(Tornado)처럼 10여 년이 지난 후에 만들어진 기술도 있습니다. 이제는 주류 플랫폼이 된 노드.js(Node.js)도 'C10K 문제'의 산물이라고 볼 수 있습니다. 21세기에 만들어진 대부분의 인터넷 관련 기술에 'C10K 문제'가 직간접적인 영향을 줬고 방향성을 제시해 비동기, 이벤트 구동, 반응형 같은 개념이 적극적으로 보급되고 적용됐습니다.
이 책에서 다루는 엔진엑스도 'C10K 문제'에서 영감을 받은 프로젝트 중 하나입니다. 엔진엑스가 대중에게 알려진 것은 최근이지만 프로젝트의 시작은 2004년, 'C10K 문제'가 업계에 던져지고 얼마 되지 않아서입니다. lighttpd처럼 비동기 처리로 최대한 많은 일(파일을 고객에게 전송하는 일)을 효율적으로 처리하고자 시작된 프로젝트였던 것입니다.
그렇게 시작된 엔진엑스 프로젝트가 점차 인정받아 인터넷 세상의 주류로 편입되고 이제는 아파치와 대등한 위치에서 경쟁하게 됐습니다. 어떤 통계에서는 이미 시장 점유율에서 아파치를 앞서기도 했으며 성장세는 더욱 빨라지고 있습니다. 비교적 인지도가 높고 오래 운영되고 있는 웹 서버들은 아직 아파치를 많이 사용하지만 엔진엑스로 교체하는 빈도가 높아지고 있으며 마이크로서비스 붐을 타고 엔진엑스는 더 적극적으로 활용되고 있습니다.
이 책은 엔진엑스의 폭넓은 지식을 다양한 관점에서 제공합니다. 컴파일해서 기본적인 웹 서버를 설정하는 안내, 각종 모듈의 설정법, PHP와 파이썬과 연동하는 방법, 아파치처럼 구성하거나 아파치를 대체하는 방법, 본격적인 서비스를 제공하는 데 필요한 고급 주제, 사례집 등 한 권의 책으로 최대한 여러 사람의 필요를 충족시키고자 한 노력이 엿보입니다.
책을 번역하는 동안 이 책에서 다룬 기술들이 대부분 버전업 됐고 SPDY 같은 기술은 HTTP/2로 대체됐습니다. 책 출판 시점에 맞게 각종 기술의 버전과 내용을 가급적 최신 내용으로 손보고 실행되는지 확인했으니 읽고 활용하는 데 문제가 없을 것입니다.
아무쪼록 이 책이 많은 분에게 큰 도움이 됐으면 합니다.