์ค๋์ ์ฐ๋ฆฌ๊ฐ ์ Nginx์ ๋ํด์ ์์์ผ ํ๊ณ ๋ฐฐ์์ผ ํ๋์ง์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค.
Nginx์ ๋ํด ์ค๋ช ํ๋ ๋ชจ๋ ๊ธ์ Nginx์ ๋ํ ์ ์ ์จ๋ก Apache๋ฅผ ๋น๊ตํ๊ณค ํ๋ค.
์ต๊ทผ์ Apache์ Nginx์ ์ ์ ์จ์ด ๋น์ทํด์ก๋ค๊ณ ํ๋ค.
2013๋ ์ Egoing ๋์ ๊ฐ์์ ๋ณด๋ฉด *_์ฐจ์ธ๋ ์น ์๋ฒ *_๋ผ๊ณ ํํํ๋ค.
๊ทธ๋ก ๋ถํฐ 7๋ ์ด ์ง๋ ํ ์์ ์์ Nginx์ ๋ฐ์ ์ ๋ณธ๋ค๋ฉด 2013๋ ๋น์์ ์ฐจ์ธ๋ ์น ์๋ฒ๋ผ๊ณ ๋ถ๋ฆด๋ง ํ๋ค.
์ด ๋ ๊น์ง๋ง ํด๋ Apache์ ์ ์ ์จ์ด 55 %๋ฅผ ๋์ด๊ฐ๊ณ Nginx๋ 12 %์์ง๋ง ํ์ฌ๋ Apache 27% nginx 25%๋ก ์๋ ์ฐ๋งฅ์ ์ด๋ฃจ๊ณ ์๋ค๊ณ ํ๋ค.
์ด๋ฐ Nginx๊ฐ ์ ๋ถํฐ ๊ฐ๊ด ๋ฐ๊ณ ๊พธ์คํ ์ฌ๋๋ฐ์์จ ์ด์ ์ ๋ํด์ ์ด์ผ๊ธฐ ํด๋ณด์.
Nginx
Nginx๋ ๋จ์ํ ์ ์ ํ์ผ์ ํธ์คํ ํด์ฃผ๋ ์น์๋ฒ์ด๋ค.
ํ์ง๋ง ๋ค๋ฅธ ์น์๋ฒ์ ๋ค๋ฅด๊ฒ ์ด๋ค ๋น๋ฐ๋ก ์ธํด์ ์์ฃผ ์๋ฆ๋ค์ด ์น์๋ฒ๊ฐ ๋์๋ค.
nginx์ ์ปจ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์ ์์์ผ๋ก ๋ ๋น ๋ฅด๊ฒ ์๋น์ค๋ฅผ ์ ๊ณต
Nginx์ ์ปจ์ ์ ์ ์ ์์์ผ๋ก ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ณตํ๋ค๊ณ ํ๋๋ฐ, ์ด๋ป๊ฒ ๊ทธ๊ฒ ๊ฐ๋ฅํ ๊น?
๋ฐ๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์์ ์๋ค.
Event-Driven
Event-Driven ๋ฐฉ์์ด ์ฌ์ฉ๋์ด ์ ์ ์์์ผ๋ก ๋น ๋ฅธ ์ ๊ณต์ด ๊ฐ๋ฅํด ์ง ๊ฒ์ด๋ค.
์ด๊ฒ ์ ๋น ๋ฅธ ์๋น์ค ์ ๊ณต๊ณผ ๊ด๋ จ์ด ์์๊น?
Nginx๊ฐ ์๋ ๋ค๋ฅธ ์น ์๋ฒ๋ Thread Programming์ด๋ค.
๋งค ์์ฒญ๋น ํ๋์ Thread๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์์ฒญ์ด ์์ ๋ CPU์ ๋ถํ๋ฅผ ๊ฑฑ์ ํด์ผ ํ์ง๋ง Nginx์ ๋น๋๊ธฐ Event-Driven ๋ฐฉ์์ ์์ฒญ์ ํ๋์ Event๋ผ ๋ณด๊ณ Event Handler์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ญ๋น๊ฐ ์ ๋ค.
๊ฒฐ๊ตญ ๋ง์ ์์ฒญ์์ ๋ค๋ฅธ ์น์๋ฒ๋ณด๋ค ์ฑ๋ฅ์ ์ฐ์๋ฅผ ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅธ ์๋น์ค๋ฅผ ์ ์ ์์์ผ๋ก ํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ์ ์ผ๋ก Event Driven ๋ฐฉ์์ด๋ค๋ณด๋ ๋ถํ์ ๋ํ ์์ธก ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ค๋ ํน์ง๋ ์๋ค.
๋ค๋ฅธ ์๋ฒ๋ก์ ์์
Nginx๋ฅผ ๋ฐฐ์์ผ ํ๋ ๋ค๋ฅธ ์ด์ ๋
์ ์ ์ฒ๋ฆฌ๋ฅผ ์์ ๊ฐ์ด Event-Driven์ผ๋ก ๋น ๋ฅธ ์๋๋ก ์ ๊ณตํ๋ฉฐ, ๋์ ํ์ผ์ FastCGI๋ ์ํ์น์ ๊ฐ์ ๋ค๋ฅธ ์๋ฒ์ ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ ์๋ค.
Nginx์ ๋ค์ํ ๊ธฐ๋ฅ๋ค
Nginx์๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ ๊ณต๋๋๋ฐ, ํฌ๊ฒ 5๊ฐ์ง์ ๋ํ์ ์ธ ๊ธฐ๋ฅ์ด ์๋ค
- ์ฅ์ ์ ๋ํ ๋์
- ๋ก๋ ๋ฐธ๋ฐ์ฑ
- Keep Alive ์ค์
- Sub Domain ์ฒ๋ฆฌ
- Cache ์ฒ๋ฆฌ
์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ์์ธํ ์ฌ์ฉ์ ๋ค์ ์๊ฐ์ ์์๋ณด๊ณ ์ค๋์ ๊ฐ๋จํ๊ฒ ์ด๋ค ๊ธฐ๋ฅ์ Nginx์์ ์ ๊ณตํ๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด์.
์ฅ์ ์ ๋ํ ๋์
Nginx ๋ ์ฅ์ ์ ๋ํ ๋์์ upstream module๋ก ์ฝ๊ฒ ํ ์ ์๋ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ
ํด๋ฌ์คํฐ์ ์ค์ ๋๋ ์๋ฒ ์ ๋ณด์ ํฌํธ๋ฅผ ์ด์ฉํด์ ์ด๋ค ์๋ฒ๊ฐ ์ด๋ค ์์ ์ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง๋ฅผ ์ง์ ํด์ ๋ถํ ๋ถ์ฐ์ ํ ์ ์๊ฒ ํ๋ค.
Keep Alive ์ค์
Http ์ค์ ์ผ๋ก Http ์ฐ๊ฒฐ ์์ผ์ด ์ผ๋ง๋ ์ง์๋์ด ์ฐ๊ฒฐ๋ ์ง๋ฅผ ์ค์ ํ๋ค.
Keep ALive์ผ๋ก ์ฐ๋ฆฌ๋ CPU์ ์ข ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ ์ฐ๊ฒฐ ์๊ฐ์ ๋ํ ์ด๋์ ์ฑ๊ธธ ์ ์๋ค.
Sub Domain ์ฒ๋ฆฌ
๊ฐ์ ํธ์คํ ๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ผ๋ก ํ๋์ ์น์๋ฒ์์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ํธ์คํ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
Cache ์ฒ๋ฆฌ
ํน์ ์์์ด๋ ์ด๋ฏธ์ง, CSS, JS์ ๊ฐ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ ์น ์๋น์ค์ ์๋ต ์๋๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค.
Nginx๋ก ์ค์ ๋ก ๋์ ๋ณธ ๊ฒฝ์ฐ
๋ค์ด๋ฒ๋ 2009๋ DDOS ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ค์ํ ๋ณด์ ์ธ๋ ฅ๊ณผ ๋ชจ๋ํฐ๋ง์ ๊ฐํํ์์ง๋ง ๊ทผ๋ณธ์ ์ผ๋ก ๋ ธํํ๋ Apache์ ์ทจ์ฝ์ ์ ์ธ์ ํ๊ณ Apache์์ Nginx๋ก ๊ฐ์ํ๋ฉฐ TPS 3๋ฐฐ์ฆ๊ฐ, ์๋ฒ ๋์ 1/3์ผ๋ก ๊ฐ์ Nginx ์ฅ์ 0๊ฑด์ผ๋ก ์์ฒญ๋ ์ด๋์ ๋ณด์๋ค๊ณ ํ๋ค.
๋๊ธ