- ๊ฐ์ ๋
ธํธ๋ ๋ ์ง๋ ์์ผ ๋ณ๋ก ๊ตฌ๋ถํ์ง ์๊ณ ํฐ ์ฃผ์ ๋ณ๋ก ๋ถ๋ฆฌํ ์๊ฐ์
๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ ํธ์ด ๋์ค์ ์ฐพ์๋ณด๊ธฐ์ ์ข์๊ฒ ๊ฐ์ต๋๋ค -์ํ์ค
- ์ ์ ์ฃผ๊ด์ ์ธ ๋ถ๋ถ์ด ๋ง์ด ๋ค์ด ๊ฐ์ ์์ผ๋ฏ๋ก ๋ถ์กฑํ๋ค ์๊ฐ๋๋ ๋ถ๋ถ์ ์ฑ์์ฃผ์ธ์.
- ๊ฐ์ ๋
ธํธ๋ ๊ฐ์ด ๋ง๋ค์ด ๋๊ฐ๋ ๊ฒ์ด๋ฏ๋ก ๋ชจ๋๋ค ํจ๊ป ์ฑ์๋๊ฐ์๋ค.
1.1.1. POST ¶
- uploder์๊ฒ ๋ฆฌ์์ค๋ฅผ ์ฌ๋ฆด๋ ์ฌ์ฉ ์ฃผ๋ก ์๊ธ์ ์ธ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
1.1.2. PUT ¶
- resource์ ์ฌ์ฉ ๊ทธ url์ ๋ฑ ์ฌ๋ผ๊ฐ ๋ ์ด๋ค. ์ฃผ๋ก ์์ ์ ์ฌ์ฉ๋๋ค ์ด๋ฏธ ID๋ฅผ ์๊ณ ์์ผ๋ฏ๋ก.
2. JavaScript๋? ¶
2.1. Prototype ๊ธฐ๋ฐ ์ธ์ด ¶
- prototype์ธ์ด?
- oop์ ํ๋ฆ์ class์ prototype์ผ๋ก ๋๋ฐ๋ค.
- prototype์ ํด๋์ค๊ฐ ๋ค๊ณ ์์ด์ผํ๋ ํจ์๋ค์ ํน์ ์ธ์คํด์ค๊ฐ ๋ค๊ณ ์๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
- ์ด ํน์ ์ธ์คํด์ค๋ฅผ prototype์ด๋ผ ๋ถ๋ฅธ๋ค.
- oop์ ํ๋ฆ์ class์ prototype์ผ๋ก ๋๋ฐ๋ค.
2.2. ํจ์ํ ์ธ์ด ¶
- ํจ์๋ฅผ ์ผ๊ธ๊ฐ์ฒด๋ก ๋ค๋ฃจ๋ ์ธ์ด
- ์ผ๊ธ๊ฐ์ฒด๋?
- ๋ณ์ ์์ ๋ด์์ ์๊ณ ,
- ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ์ ์์ผ๋ฉฐ,
- ๋ฐํ๊ฐ์ ์ฌ์ฉํ ์ ์๊ณ
- ํ ๋น๋์ด๋ฆ๊ณผ ๊ด๊ณ์์ด ๊ตฌ๋ถํ ์ ์๋ค
- ๋ณ์ ์์ ๋ด์์ ์๊ณ ,
- ์ผ๊ธ๊ฐ์ฒด๋?
- ํจ์๋ฅผ ๋ง์น ์ผ๋ฐ์ ์ธ ์ธ์คํด์ค์ฒ๋ผ ๋ค๋ฃจ๋ ์ธ์ด
3.1. ํด๋ก์ ธ ¶
- ํด๋ก์ ธ : ๋ด๋ถ์ ์๋ ์ธ๋ถ์ ์๋ ํจ์์ ์ง์ญ ๋ณ์๋ฅผ ์ธ์ ์๋๊ฒ. ๋๋ฌธ์ ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ์ ์๋ค.
์์์ถ๊ฐ๋ฐ๋
3.2. Excuteion Context ¶
- this
- p.do() ์์ p๊ฐ ์คํ๋ฌธ๋งฅ์ด๋ค. ๊ทธ๋ฌ๋ ์ด ํจ์๋ฅผ๋ณ์๋ก ๋ฐ์ผ๋ฉด var f = p.do; f(); ์ด๋ฐ์์ผ๋ก ๊ทธ๋ฌ๋ฉด f๋ ์คํ๋ฌธ๋งฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ญ๊ฐ์ฒด๊ฐ ์คํ๋ฌธ๋งฅ์ผ๋ก ๊ฐ์ฃผ๋๋ค.
- p.do() ์์ p๊ฐ ์คํ๋ฌธ๋งฅ์ด๋ค. ๊ทธ๋ฌ๋ ์ด ํจ์๋ฅผ๋ณ์๋ก ๋ฐ์ผ๋ฉด var f = p.do; f(); ์ด๋ฐ์์ผ๋ก ๊ทธ๋ฌ๋ฉด f๋ ์คํ๋ฌธ๋งฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ญ๊ฐ์ฒด๊ฐ ์คํ๋ฌธ๋งฅ์ผ๋ก ๊ฐ์ฃผ๋๋ค.
- ๊ฒฐ๋ก ์ ์ผ๋ก ํจ์ ์ ๋ง์ง๋ง . ์์ ์๋ ๊ฒ์ด ์ค์ํ๋ค.
- func.apply(ec, arguments) ๋ func.call(ec, arg1, arg2, ... )์ผ๋ก func์์์์ ์คํ๋ฌธ๋งฅ(this)๋ฅผ ๋ช
์์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
3.3. new์ ๋์ ¶
- new Person();
- 1. create instance
- 2. instance.proto = Person.prototype;
- ์ด๋์ proto๋ ํ๋กํ ํ์
์ฒด์ธ์ด๋ผ ํ ์์๋ค.(์์ง๋ณ๋ก ๋ค๋ฅผ์ ์๋ค.)
- ์ด๋์ proto๋ ํ๋กํ ํ์
์ฒด์ธ์ด๋ผ ํ ์์๋ค.(์์ง๋ณ๋ก ๋ค๋ฅผ์ ์๋ค.)
- 3. ์คํ๋ฌธ๋งฅ์ instance๋ก ํ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
- 1. create instance
3.4.1. Class vs Prototype ¶
- Class : ํจ์์ ๋งด๋ฒ ๋ณ์๊ฐ ๊ฐ๊ฐ class์ ์ธ์คํด์ค์ ๋๋์ด ์ ธ์๋๊ฒ.
- prototype : ํจ์์ ๋งด๋ฒ ๋ณ์ ๋ชจ๋ ์ธ์คํด์ค์ ์ ์ฅ๋์๋๊ฒ
- ๋จ์ง ํจ์๋ ๋ค๋ฅธ ์ธ์คํด์ค์ ์กด์ฌํ๋ค.
- ๊ทธ ๋ค๋ฅธ ์ธ์คํด์ค๋ prototype์ด๋ผ ๋ถ๋ฅธ๋ค.
class <-----------------> prototype VTable <-----------------> prototype chain (proto)
- ๋จ์ง ํจ์๋ ๋ค๋ฅธ ์ธ์คํด์ค์ ์กด์ฌํ๋ค.
3.4.2. dispatch ¶
- ์ค์ ํธ์ถํด์ผ ํ๋ ํจ์๋ฅผ ์ฐพ๋ ๊ณผ์
- javascript์์๋ ์คํ์๊ฐ์ ํ๋กํ ํ์
์ฒด์ธ์ ์ํด ์คํํ๋ค.
- instance์ proto์์ ์ฐพ๊ณ ์์ผ๋ฉด ๊ทธ์์ proto์์ ์ฐพ๊ณ ...
- instance์ proto์์ ์ฐพ๊ณ ์์ผ๋ฉด ๊ทธ์์ proto์์ ์ฐพ๊ณ ...
- ์ฝ๋๋ก ๋ํ๋ด๋ณด๋ฉด..
for (var _proto = a; _proto; _proto = _proto.__proto__) { if (("f" in _proto) && typeof _proto["f"] === "function") _proto["f"].apply(a, arguments]); }
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ํจ์์ ์ผ๋ฐ ๋ณ์์์ ๊ตฌ๋ถ์ด ์๊ธฐ๋๋ฌธ์ ๋ณ์ ๋ํ dispatch๊ฐ ๋๋ค.
3.4.3. ์์ ¶
- ์์์ ์ํด์๋ prototype chain์ ๋ฑ๋กํ๋ฉด ๋๋ค.
function People(){}; function Man(){}; Man.prototype = new People(); m = new Man();
3.5. same origin policy ¶
- ์๋ฐ ์คํฌ๋ฆฝํธ์์๋ XSS๋ฅผ ๋ง๊ธฐ(?)์ํด ๋์ผํ ๋๋ฉ์ธ์ด ์๋๋ฉด javascript๋ฌธ๋งฅ์ ์ ๊ทผํ ์ ์๋ค.
- iframe์ด๋ XHR์์ฒญ์ ์ด๊ฒ์ ์ ์ฉ์ ๋ฐ๋๋ค.
- document.domain ์ ์กฐ์ ํจ์ผ๋ก์จ ๋์ผํ ๋๋ฉ์ธ์ ๋ฒ์๋ฅผ ๋ฐ๊ฟ์ ์๋ค.
- wiki.zeropage.org ์ www.zeropage.org ๋ฅผ ๋์ผํ ๋๋ฉ์ธ์ผ๋ก ์ทจ๊ธํ๊ธฐ ์ํด document.domain์ zeropage.org๋ก ์ค์ ํ ์ ์๋ค.
- ๋จ, ์ด๊ฒ์ ํ์ ๋๋ฉ์ธ. ์์์ ๋ถํฐ๋ง ์ง๋ฅผ์ ์์ผ๋ฉฐ ๋ถ์ด๋ ๊ฒ์ ํ์ฉ๋์ง ์๋๋ค.
- wiki.zeropage.org ์ www.zeropage.org ๋ฅผ ๋์ผํ ๋๋ฉ์ธ์ผ๋ก ์ทจ๊ธํ๊ธฐ ์ํด document.domain์ zeropage.org๋ก ์ค์ ํ ์ ์๋ค.
3.5.1. Same Origin Policy๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ¶
- proxy
- ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ ๊ทผํ๊ธฐ ์ํด ๋์ผ ๋๋ฉ์ธ ์๋ฒ์ ๋ค๋ฅธ ํ์ด์ง์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ์ฝ์ด์ ๋ด๋ ค์ฃผ๋ proxy๋ฅผ ์ค์นํ๋ค.
- ๋ถํ๊ฐ ๋ง์ด ๊ฑธ๋ฆฌ๊ณ (์์ฒญ๋ง๋ค ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ทธ๊ฑธ ๋ค์ ๋ด๋ ค์ฃผ๋ฏ๋ก ๋คํธ์ํฌ ๋น์ฉ๋ฐ ๊ธฐํ ๋น์ฉ์ด ์ฆ๊ฐ)
- ์ธ์ฆ ๋ฌธ์ ๊ฐ ๊ฑธ๋ฆด๊ฒฝ์ฐ ๋ณด์์ด ์ฝํ๋ ์ ์๋ค.
- ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ ๊ทผํ๊ธฐ ์ํด ๋์ผ ๋๋ฉ์ธ ์๋ฒ์ ๋ค๋ฅธ ํ์ด์ง์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ์ฝ์ด์ ๋ด๋ ค์ฃผ๋ proxy๋ฅผ ์ค์นํ๋ค.
- Image
- ์๋ same origin policy๋ฅผ ์ ์ฉ๋ฐ์ง ์์์ผ๋ก ๊ทน๋ณตํ ์ ์์ผ๋ ๋ฐ์ด๋๋ฆฌ๋ฏ๋ก ์ ์๋น์ด ์ฐ๋ฆฌ๊ฐ ์ธ์ ์๋ค.
- ์๋ same origin policy๋ฅผ ์ ์ฉ๋ฐ์ง ์์์ผ๋ก ๊ทน๋ณตํ ์ ์์ผ๋ ๋ฐ์ด๋๋ฆฌ๋ฏ๋ก ์ ์๋น์ด ์ฐ๋ฆฌ๊ฐ ์ธ์ ์๋ค.
- Ifreame
- ๋ด๋ถ์์ ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋ํ ์ ์์ผ๋ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ ๊ทผ์ด ๋ถ๊ฐํ๋ค.
- ํ๋์ฌ๋ก ๊ทน๋ณตํ ์ ์์ผ๋ ํด๋ผ์ด์ธํธ์ ๋ถํ๊ฐ ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋๊ฒ์ด ์๋๋ผ์ ์ข์ง์๋ค.
- ๋ด๋ถ์์ ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋ํ ์ ์์ผ๋ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ ๊ทผ์ด ๋ถ๊ฐํ๋ค.
- Script tag
- Same origin policy๋ฅผ ์ ์ฉ๋ฐ์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์ฌ์ ์์ผ๋ ๋ฐ๋ก ์คํ์ด ๋๋ฏ๋ก ๋ค๋ฅธ ๋ฐฉ์์ ์จ์ผํ๋ค.
- script tag๋ฅผ ์ฝ์ด ๋ก๋ฉ์ด ๋๋๋ฉด ๋ฐ๋ก ์คํ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ๋ฅผ ๋์์ ๋ถ๋ฌ์ฌ๊ฒฝ์ฐ ์ ์ญ๋ณ์๋ฅผ ์ด์ฉํ ๋ฐฉ์์ ๋ถ๊ฐ.
- ๋ฐ๋ผ์ callbackํจ์๋ก ํด๊ฒฐํ๋ค.
- ์ด๋ ๋ด๋ ค์ค ์๋ต์ JSON๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๋ค.
- Same origin policy๋ฅผ ์ ์ฉ๋ฐ์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์ฌ์ ์์ผ๋ ๋ฐ๋ก ์คํ์ด ๋๋ฏ๋ก ๋ค๋ฅธ ๋ฐฉ์์ ์จ์ผํ๋ค.
__callback({ "json" : "data"});
- ์์ ๊ฐ์ ํ์์ผ๋ก ๋ด๋ ค์ค๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ(์์ฒญํ ์ชฝ)์์ _callbackํจ์๋ง ์ ์ํด๋๋ฉด ๋ก๋ฉ์ด ๋๋จ๊ณผ ๋์์ ๋ถ๋ฆฌ๊ฒ ๋๋ค.
- ์ด ์๋ต์ ๋ง์น JSON์ ํจ์๋ง ๊ฐ์ผํ์์ด๊ธฐ ๋๋ฌธ์ JSON with Padding, JSONP๋ผ ๋ถ๋ฅธ๋ค.
4.1. ์ข ๋ฅ ¶
- Apache http server (httpd)
- ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ ์๋ฒ์ด๊ณ ๊ฐ์ฅ ์์ ์ฑ์ด ๋ฐ์ด๋๋ค.
- ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ ์๋ฒ์ด๊ณ ๊ฐ์ฅ ์์ ์ฑ์ด ๋ฐ์ด๋๋ค.
- IIS
- windows ์์ ์ฐ์ด๊ณ ์ญ์ ์์ ์ฑ์ด ๋ฐ์ด๋๊ณ GUI๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- windows ์์ ์ฐ์ด๊ณ ์ญ์ ์์ ์ฑ์ด ๋ฐ์ด๋๊ณ GUI๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- lighttpd
- event driven ๋ฐฉ์์ ์๋ฒ
- event driven ๋ฐฉ์์ ์๋ฒ
- nginx
- evnet driven ๋ฐฉ์์ด๋ฉฐ nodejs ๋๋ฌธ์ ์ ๋ช
ํด์ก๋ค.
- evnet driven ๋ฐฉ์์ด๋ฉฐ nodejs ๋๋ฌธ์ ์ ๋ช
ํด์ก๋ค.
4.2. ์ด๊ธฐ์ ์น์๋ฒ ¶
- static ํ ํ์ผ์ ๋ด๋ ค์ค๋ค.
- ํ์ฅ์๋ฅผ ํ์
ํด์ ๋๋ ํ์ผ์ ํค๋๋ฅผ ์ฝ์ด ๋ง๋ MIME TYPE๋ฅผ ํค๋์ ์ ์ด์ค๋ค.
- static ํ ํ์ผ์ ์
๋ก๋ ๋ฐ๋๋ค.
4.3.1. Unix File ¶
- Unix์์ File์ด๋ผํจ์ ๋ค์์ ๋ชจ๋ ์๋ฏธํ๋ค.
- ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ทธ ํ์ผ (Process - Disk)
- ํ๋ก์ธ์ค๊ฐ ํต์ ์ ์ฌ์ฉ๋๋ Pipe
- ์๊ฒฉ ๋จธ์ ์ ์กด์ฌํ๋ ํ๋ก์ธ์ค์ ํต์ ํ๋ Socket
- ๊ธฐ๊ณ์ฅ์น์ ํต์ ํ๋ ๋๋ผ์ด๋ฒ
- ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ทธ ํ์ผ (Process - Disk)
- Unix๋ C์์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ๋ ฅํ ์ถ์ํ๋ฅผ ํตํด ๋ญ๊ฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ผ๋ก File์ ๋ง๋ค์๋ค.
- ๋ง์น ๋ค์๊ณผ ๊ฐ์ ๋๋์ด๋ค.
FILE f = new Pipe();
4.3.2. CGI ¶
- Common Gateway Interface
- Unix์์๋ Pipe๋ File์ด๋ฏ๋ก staticํ file ๋์ Pipe๋ฅผ ์ฐ๋ฉด ๋ญ๊ฐ ๋ค์ด๋๋ฏนํ๊ฒ ๋์ง์์๊น?
- ์น์๋ฒ๋ ๋๊ณ ๊ฑฐ๊ธฐ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํด์ ๊ทธ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ด๋ค์ด์.
- ์ด๋์ ๊ท์ฝ์ CGI๋ผ ๋ถ๋ฅธ๋ค.
- standard Input์๋ request body์ ์ค๋ค.
- standard Output์๋ response body๋ฅผ ๋๊ธด๋ค.
- ๊ทธ์ธ์ ๊ธฐํ ๋ฑ๋ฑ์ ์ ๋ณด๋ ํ๊ฒฝ๋ณ์๋ก ๋๊ธด๋ค.
- standard Input์๋ request body์ ์ค๋ค.
- ํ์ค์ RFC3875์ด๋ฉฐ IETF์์ ๊ด๋ฆฌํ๋ค.
- ๋งค ์คํ์๋ง๋ค ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ธฐ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ์ฌํ๊ณ disk์ ๊ทผ์ด ๋ง๋ค.
4.4. ์ข ๊ด์ฐฎ์ ์น ์๋ฒ ¶
- ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๋น์ฉ์ ์ค์ฌ๋ณด์.
- ๊ณต์ฉ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ํ๋ฒ๋ง ๋ถ๋ฌ์์ง๋ค.
- ISAPI(ISS) : DLL์ด์ฉ)
- mod (apache : so์ด์ฉ)
- ISAPI(ISS) : DLL์ด์ฉ)
- ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์
- process per request ๋ฐฉ์์ด์ด์ fork ๋น์ฉ์ ์ฌ์ ํ ์กด์ฌํ๊ณ ์์ฒญ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ๋จน๋๋ค.
- ํ์ง๋ง ๋ชจ๋์ ์์ฒญ๋ง๋ค ๋์คํฌ์์ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ์ ๋์์ก๋ค.
4.5.1. MPM ¶
- forkํ๋ ๋ถ๋ถ์ module๋ก ๋ง๋ค์ด ์ฌ๋ฌ ๋ฐฉ์์ ์ ํํ ์ ์๋ค.
- fork ๋์ Thread๋ฅผ ์ธ์๋ ์๊ณ ์ด์์ฒด์ ๋ณ๋ก ๋ค๋ฅธ ๋ฐฉ์์ ์ธ์๋ ์๊ณ fork๋ฅผ ๊ทธ๋๋ก ์ธ์๋ ์๋ค.
- ๊ธฐ์กด์ ํ๋ ๋ฐฉ์์ pre-fork๋ฐฉ์
- mpm-worker ๋ฐฉ์์ ํ๋ก์ธ์ค ๋์ ์ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ฐฉ์์ด๋ค.
- ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๋ฅผ ๋ง๋ค์ด ๋๊ธฐํ๋ค๊ฐ ์์ฒญ์ด ์ค๋ฉด ํ๋์ฉ ๋์ํ๋ ๋ฐฉ์
- thread per request ๋ฐฉ์
- ๋ค๋ง ๋ชจ๋์ด Thread์์ ํด์ผ ํ๋ค.
- ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๋ฅผ ๋ง๋ค์ด ๋๊ธฐํ๋ค๊ฐ ์์ฒญ์ด ์ค๋ฉด ํ๋์ฉ ๋์ํ๋ ๋ฐฉ์
- ์ฌ์ ํ CPU ์์์ ๋ง์ด ์ด๋ค.
- Servlet๋ ๊ฐ์ ๋ฐฉ์์ด๋ค.
- context switch๊ฐ ๋ง์ด ์ผ์ด๋์ ํจ์จ์ ์ด์ง ์๊ณ ํ๊ท ์๋ต์๊ฐ์ด ๊ธธ์ด์ง๋ค.
4.5.2. MPM + Queue ¶
- ํ๋ฅผ ๋ง๋ค์ด์ context switch๋น์ฉ์ ์ค์ฌ๋ณด๋ ค๊ณ ๋
ธ๋ ฅํ๋ค.
- connection์ ํ์ ์์๋๊ณ worker๊ฐ ํ๋์ฉ ๊บผ๋ด์ด ์ฒ๋ฆฌ
- ๊ธฐ์กด์๋ ํ๊ณ ์๋ ๋ฐฉ์์ด๊ธด ํ๋ ์ฌ์ ํ context switch๋ ์ผ์ด๋๋ค.
4.6. ์ ๋ง ๋ฏธ์น๋๋ก ๊ด์ฐฎ์ ์น์๋ฒ ¶
- ํ ์ปค๋ฅ์
(=job)์ ์์ธํ ์ดํด๋ณด์๋๋...File I/O DB์ ๊ทผ ๋ฑ๋ฑ ๋๊ธฐ๋ง ํ๋ ์๊ฐ์ด ๊ธธ๋๋ผ.
- ๊ทธ๋ผ์ด I/O๋ถ๋ถ๋ง ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํฉ์๋ค.
- ๋ก์ง์ด ์ต์ ๋จ์๋ก ๋๋์ด์ง๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ ๋น๋๊ธฐ ์ฒ๋ฆฌ.
- ์์๋ ์กด์ฌํด์ผํ๊ธฐ ๋๋ฌธ์ Event-driven์ ํ์.
- ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์์
์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋๊ธฐ๋๊ฒ์ด ๋ซ๋ค.
- ๊ทธ๋์ fork์ ์
๋ชฝ์ด ์์๋๋ ์ค ์์์ผ๋.
4.6.1. fast CGI ¶
- ๊ทธ ํ๋ก์ธ์ค๋ฅผ demon์ผ๋ก ๋ง๋ญ์๋ค!
- ์ด์ ์๋ CGI๋ค๋ ๋จ๋
์คํ์ด ๊ฐ๋ฅํ๋ค!
- fast CGI๋ ๋จ๋
์คํ ๋์ deamon(service)๋ก ์คํ๋๋ค.
- ํ๋ฒ ์คํ๋์ด ๋๊ธฐํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ๋งค ์์ฒญ๋ง๋ค ๋ค์ ๋์คํฌ์์ ๋ถ๋ฌ์ค์ง ์์๋ ๋๋ค.
- ํต์ ๋ฐฉ์์ socket
- ๋ฐ๋ผ์ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ์์ผ๋ง ๋ง๋๋ฉด ๋๋ฏ๋ก ์น์๋ฒ์ ๋ชจ๋๊ฐฏ์๊ฐ ํ์ฐํ ์ค์ด๋ ๋ค.
- ์์ผ์ด๋ฏ๋ก CGI๊ฐ ๋ค๋ฅธ ์๋ฒ์ ์กด์ฌํด๋ ๋๋ค.
- ๋ก๋๋ฐธ๋ฐ์ฑ์ด ํธํด์ง๋ค. (CGI๊ฐ ๋ค๋ฅธ๋ฐ ์์ด๋ ๋๋๊น.)
- ๊ฐ CGI๋ชจ๋์ด ๋ฐ๋ก ๋ฐ๋ก ์์ด๋ ๋๋ค.
- ์ด๊ฑด ์์ฐํ ๋ค๋ฅธ ํ๋ก์ธ์ค์ด๋ฏ๋ก ๋ชจ๋์ด ์ฐ๋ ๋ ์์ ํ์ง ์์๋ ๋๋ค!
- ๋ฐ๋ผ์ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ์์ผ๋ง ๋ง๋๋ฉด ๋๋ฏ๋ก ์น์๋ฒ์ ๋ชจ๋๊ฐฏ์๊ฐ ํ์ฐํ ์ค์ด๋ ๋ค.
- ํ์กดํ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ์.
nginx + nodejs
๋์ด์์์์ธํ์ค๋ช ์์๋ตํ๋ค.