마치 마감시간에 쫓기어서 글을 작성한것 처럼 보이는 시간입니다. 

아래 몽상가님이 올려주신 그 사이트에서, 저 또한 놀고 있습니다. 

같이 공부해 나가면 좋을듯 합니다. 

저는 역시 nginx의 interner의 세계에 관심이 많았는데 이 사이트에서 친절하지는 않지만

많은 얘기를 해주고 있는듯 합니다. 물론 영어의 압박이 심하지만

영어 20년 공부했는데 이정도야 Unix에 ls -al 날리기죠.

 그동안 막연했던 asynchronous, event-driven이 왜 많은 사람들이 얘네들 단어를 갖고 nginx의 대표적인 특징이라고 쓰고 있을까도 어느정도 파악할 수 있었던 좋은 글이였습니다. 

 물론 완벽한 이해는 못하였지만, 

 현재까지라는 단서를 달고서 얘기를 한다면,

 nginx의 대표적인 특징은 modular architecture 가 아닌가 합니다. 

 앞서 scenic 님이 올려주신 C10K 문제를 극복하기 위해, 

 실제로 "이걸시삽"이 저 문제를 예측하고 nginx를 개발하기로 맘 먹었는지, 

 아님 "이걸시삽" 고객중에 빨랑 방안 마련하라고 해서 개발하기로 한건지는 모르겠지만( 전자라 믿습니다. )

 현재 잘나가고 있는 Apache구조에서는 C10K 문제를 해결 할 수 없다는 것을 파악을 했나봅니다. 

 Process or Thread기반에서 10000명 분량의 Process를 생성한다는 것은 물론 돈으로 쳐바르면 가능이야 하겠지만 언제까지 돈으로 쳐바를수도 없는 문제이니 

 Process or Thread의 증가보다는 최소한의 수로서 해결해야 한다고 생각했나봅니다. 

 그러다 보니 웹서버에서 하는 역할들을 module화로 쪼개놓고, 하나의 프로세스는 자기가 해야할일만 하고 얼른 다른 역할의 프로세스로 넘겨버리는 거죠. 

 그러다 보니 다른 역할의 프로세스에게 할 일이 있다고 알려야 하는데, 이것을 event-driven이라 일컫고,

 다른 프로세스로 넘겨주고 난 다음에는 신경 안 쓰고 있어도 되니, 이것을 asynchronous이라 일컫는것이라 생각합니다. 

 역할별로 "쪼개버렸다"는 것, 어디서 많이 들어본건데 "객체지향"이라는 자바, C++의 특징과 닮아있는듯도 합니다. 

 다시한번 현재까지라는 단서를 달고서,

 몽상가님과 함께 해당 글을 진득하게 씹다보면 맛의 정체를 명확히 알 수 있는 그날이 올듯!