싱글 스레드 모델에서 비동기 처리를 통해 자바스크립트 요청을 처리하는 이벤트 드리븐 플랫폼이 바로, Node.js
비동기처리에 대한 사람들의 토론 가운데 C10k 문제라는 녀석을 발견했다.
동시에 처리할 수 있는 소켓(채널)을 넓히는데에서 발생하는 문제. 즉, C10K means Connection 10,000 Concurrency Problem 허나 여기서 말하는 '동시성(concurrnecy)'가, request per second(RPS)를 의미하는 것은 아니며, 소켓 서버 최적화 문제는 장기간 연구되었는데, 이는 많은 클라이언트를 소화하고 싶어서. 이것은 OS 제약조건과 서버 소프트웨어 제한을 유발시켰다. 서비스의 범위를 따라서, 또 스레드 활용 범위에 따라 싱글스레드냐, 멀티스레드냐 선호 사항이 달라진다. 번역을 나름 했는데 엉망…요지는, 비동기 처리를 수행하는 Node.js는 CPU가 IO로 인해 발생하는 Blocking에서 자유롭고 이를 통해 C10K문제를 슬기롭게(?)극복한다는 것.
출처 : https://en.wikipedia.org/wiki/C10k_problem
이것을 이해하기 위해서는 Event-Driven Programming에 대한 이해가 필요할 것만 같아..
"JSON with Padding"
자바스크립트에서 서로 다른 도메인 간의 데이터 요청을 위한 통신 기법. 평소 이것은 same-origin-policy에 의하여 웹브라우저 차원에서 금지하고 있다. JSONP는 브라우저가 <script> 에서 same-origin policy를 강요하지 않는 것을 이용한 것이다. <script> 태그를 활용하는 것이므로, 이것은 GET요청에 대해서만 유효하다.
Callback Hell
이것은 간단히 아래의 코드형태로 인한 문제를 말하는 것임.
$.ajax({ url:"", data:"", }) .done({ $.ajax({ url:"", data:"", }) .done({ $.ajax({ ... }) });
위와 같은 형태의 코드는 로직의 동작 흐름을 직관적으로 볼 수 없게 하는데, 이것은 아래와 같은 여러가지 문제를 유발한다.
위의 문제를 해결 하기 위해서는…
WaterfallJS 등은 비동기적인 함수의 호출을 동기적으로 수행할 수 있게 한다.