Week 9
: ๋คํธ์ํฌ, ํ๋ก์, ๋ก๋๋ฐธ๋ฐ์ฑ
โ๏ธ 6์์ ๋ง์ง๋ง ๋ฉํ ๋ง!
์ด๋ ์ ๋ฒ์จ ๋ฉํ ๋ง์ ์์ํ์ง ๋ ๋ฌ์ด ์ง๋ฌ๋ค. ๋ง์ ๊ฑธ ๋ฐฐ์ด ๊ฒ ๊ฐ์ผ๋ฉด์๋ ์์ง ๋ถ์กฑํ๋ ์ ์ด ๋ง์ ๊ฒ ๊ฐ๋ค.
์ด๋ฒ ์ฃผ ๋ถํฐ ๋ณธ๊ฒฉ์ ์ผ๋ก JSP ๊ด๋ จํ์ฌ ๊ณต๋ถ๋ฅผ ์์ํ๋ค. ๊ทธ๋์ ์ฃผ๋ก ๋คํธ์ํฌ ํต์ ์ด๋ HTTP ํต์ , Servlet ๋ฑ์ ๊ณต๋ถํ๊ณ , ํด๋น ๋ด์ฉ์ ๋ํด์ ๋ฉํ ๋ง์ ์งํํ๋ค. ์ง๊ธ๋ถํฐ ๋ฉํ ๋งํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค!
1. L4, L7 Switch
๋จผ์ L4, L7 Switch ๋ ์ ์ก ๊ณ์ธต์ ์ํ๋ ์ค์์น ์ฅ๋น์์ ๋ถ๋ฆฌ ๋ถ์ฐ ์์ ์ ์ํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐฉ๋ฒ์ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ, ์ด๋ฆ์ด Switch ๋ผ๊ณ ํด์ ํน์ ํ ์ฅ๋น๊ฐ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ค!(์ง๊ธ๊น์ง L4, L7 Switch ์ ๋ก๋ ๋ฐธ๋ฐ์ ๋ชจ๋ ๋ณ๋์ ์ฅ๋น๊ฐ ์กด์ฌํ๋ ์ค ์์๋ค.)์ ์ก ๊ณ์ธต์ Switch๋ ๋ก๋ ๋ฐธ๋ฐ์์ ์ญํ ์ ๊ฐ์ง๋๋ฐ, ์ด ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ ํน์ ์กฐ๊ฑด๊ณผ ์ด์ ํด๋นํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ค์ผ๋ก ๊ณผ๋ํ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋๋์ด ์ฌ๋ฌ ๋๋ก ๋๋์ด์ง ์๋ฒ๋ก ๋ถ์ฐ ์์ผ์ฃผ๋ ์์ ์ ์ํํ๋ ์ฅ๋น๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋๊น ํน์ ์ฅ๋น ์ด๋ฆ์ด ๋ก๋ ๋ฐธ๋ฐ์์ธ ๊ฒ์ด ์๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๋ ์ฅ๋น๋ฅผ ๋ชจ๋ ํตํ์ด ๋ก๋ ๋ฐธ๋ฐ์๋ผ๊ณ ํ๋ค!
Switch๊ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ ์ ์ํ ํ ๋, ํน์ ๊ธฐ์ค์ ์ํด์ ์์ฒญ์ ๋๋์ด ๋ถ์ฐ ์ํจ๋ค๊ณ ํ๋ค. ์ด๋ IP์ Port ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์์ ๋ L4 Switch, ์์ฉ ๊ณ์ธต์ ํ๋กํ ์ฝ ํค๋ ํจํท ๋ด์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์์ ๋ L7 Switch๋ฅผ ์๋ฏธํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌด์กฐ๊ฑด L7 Switch ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑํ๋ฉด ๋ ์ธ๋ถํํด์ ์์ฒญ์ ๋ถ๋ฆฌ ํ ์ ์๋ ๊ฒ์ด ์๋๊น?
์ด๋ ํ๋ฆฐ ๋ง์ด๋ค. L7 Switch ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑ ํ๋ ๊ฒ์ด ์ธ์ ๋ ์ข์ง๋ ์๋ค. ๋จผ์ , ํ๋กํ ์ฝ ํค๋์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ ์์ ์กฐ์ฐจ ์ฅ๋น์ ๋ถํ๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์๋ ํ์์ด๋ค. ์ฆ, ์์์ ์๋นํ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ถ๋ฆฌ ๋ถ์ฐ ์์ ์ ์ํํ๋ ๊ธฐ์ค์์ ๊ตณ์ด ์์ฉ ๊ณ์ธต ํ๋กํ ์ฝ์ ์ด์ฉํ์ง ์๋๋ค๋ฉด L7 Switch๋ฅผ ์ด์ฉํด ๋ก๋ ๋ฐธ๋ฐ์ฑ ํ๋ ๊ฒ์ ์์์ ๋ญ๋น๋ฅผ ์ผ๊ธฐํ๋ค.
๊ทธ๋์ ์ด๋ค ๊ฒ์ด ๋ ๋ฐ์ด๋๋ค, ์๋๋ค๊ฐ ์๋, ์ ์ฌ์ ์์ ๋ง๊ฒ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ ํํ๋ฉด ๋๋ค.
2. Forward Proxy, Reverse Proxy
์ผ์ข ์ ๋ก๋ ๋ฐธ๋ฐ์๋ก, ํด๋ผ์ด์ธํธ์ ์ธํฐ๋ท ๋คํธ์ํฌ ์ฌ์ด์ ์์นํด์ ์์ฒญ์ ๋์ ๋ฐ์ ์ฒ๋ฆฌํ๋ Proxy๋ฅผ Forward Proxy๋ผ๊ณ ํ๋ค. ๊ทธ์๋ ๋ฐ๋๋ก ์๋ฒ์ ์ธํฐ๋ท ๋คํธ์ํฌ ์ฌ์ด์ ์์นํด์ ์์ฒญ์ ๋์ ๋ฐ์ ๋ฆฌ์ผ ์๋ฒ๋ก ์ ๋ฌํด์ฃผ๋ Proxy๋ฅผ Reverse Proxy๋ผ๊ณ ํ๋ค.
์ฌ๊ธฐ์ Proxy ๋ '๋๋ฆฌ์ธ'์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ฐ, ๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ง์ ์ ์ผ๋ก ๋คํธ์ํฌ ํต์ ํ๋ ๊ฒ์, Proxy๊ฐ ๋ฑ์ฅํ๋ฉด์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์ ์ผ๋ก ํต์ ํ์ง ์๊ณ Proxy๋ฅผ ๊ฑฐ์ณ์ ํต์ ํ๊ฒ ๋๋ค.
๐ Forward Proxy
ํฌ์๋ ํ๋ก์๋ ๋๋ถ๋ถ ์บ์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด ์กด์ฌํด ์์ฃผ ์ฌ์ฉ๋๋ ์ปจํ ์ธ (์ด๋ฏธ์ง, CSS ๋ฑ)๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์๋ค๊ฐ ํ์ํ ์๊ฐ์ ๊บผ๋ด ์ธ ์ ์์ด ์ด๋ฌํ ๋ ๋๋ง ๊ด๋ จํด์๋ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋ค. ๋ํ, ํด๋ผ์ด์ธํธ ์์ฒญ ํค๋๋ฅผ ํ์ธํ๊ณ ์ด๋ฅผ ํตํด์ ์ ํด์ง ์ฌ์ดํธ๋ง ์ฐ๊ฒฐ ํ ์ ์๊ฒ๋ ์ค์ ๊ฐ๋ฅํด์ ์ฌ์ฉ์์ ์น ํ๊ฒฝ์ ์ ์ด ํ ์ ์๋ค.
๐ Reverse Proxy
๋ฆฌ๋ฒ์ค ํ๋ก์๋ ๋๋ถ๋ถ WAS์ ์ฐ๊ฒฐ์ด ๋์ด ์๋๋ฐ, ๋ณด์์ ๋ฐ์ด๋ ํจ๋ฅ์ ๋ณด์ฌ์ค๋ค. ํ๋ก์๋ก ๋์ํ๋ ์น ์๋ฒ๊ฐ ๊ณต๊ฒฉ ๋นํ๋๋ผ๋ WAS ๊น์ง ์นจํฌํ๊ธฐ ์ํด์๋ 2์ฐจ ๋ฐฉํ๋ฒฝ ๋ฑ์ ๋ซ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์์ Cache Server๋ SSL ํ๋์จ์ด ๊ฐ์๊ธฐ๋ฅผ ์ฐ๋ํด์ ๋ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์์ฒญ๊ณผ ์๋ต์ ์ํ ํ ์ ์๋ค.
3. SNMP, JMX
SNMP ๋ ์์ฉ ๊ณ์ธต์ ํ๋กํ ์ฝ ์ค ํ๋๋ก ๋คํธ์ํฌ ํต์ ์ ์ํด ์ฐ๊ฒฐ๋ ์ฅ๋น์ ์ ๋ณด ๋ฐ ์ํ๋ฅผ ์์งํ๊ณ , ์ด๋ฅผ ์ด์ฉํด ๊ด๋ฆฌํ๊ฑฐ๋ ์ ๋ณด์ ์์ ์ ํตํด ์ฅ์น์ ๋์์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ ์ธํฐ๋ท ํ๋กํ ์ฝ์ด๋ค. SNMP ํ๋กํ ์ฝ์ ์ง์ํ๋ ์ฅ๋น๋ก๋ ์ค์์น, ๋ผ์ฐํฐ, ์ํฌ์คํ ์ด์ , ๋ชจ๋ ๋ฑ์ด ์๋ค.
์ด๋ฌํ SNMP ํ๋กํ ์ฝ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ณ ์๋ Java API ๊ฐ ๋ฐ๋ก JMX(Java Management eXtensions)์ด๋ค.
JMX ๋ JDK 1.5 ๋ถํฐ ํฌํจ๋ API ์ธ๋ฐ, ์์ ์ค๋ช ํ SNMP ํ๋กํ ์ฝ์ ์ง์ํ๋ ์ฅ๋น๋ฅผ ์ด์ฉํด JMX ๊ฐ ํ์ฌ ์คํ ์ค์ธ ์๋ฒ์ ์ ๋ณด์ ์ํ๋ฅผ ๊ด๋ฆฌ, ๊ฐ๋ ์ด ๊ฐ๋ฅํ๋ค.
> SNMP ํ๋กํ ์ฝ๊ณผ JMX API ๋ ๊ฐ๋ ๊ณผ ์ ์์์ผ ํ๋์ง๋ง ํ์ ํ๊ณ ์ค์ ๋ก ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ง๋ ์์๋๋ฐ, ๋ฉํ ๋๊ป์ ๋์ฉ๋ ํธ๋ํฝ ์๋น์ค ์ด์ ์ค์ ๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์์ธ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ฐ ์ด๋ฅผ ํ์ ํ๊ธฐ ์ํด์ ๊ผญ ํ๋ฒ์ฏค์ ์ฌ์ฉํด๋ณด๋ ๊ฒ์ด ์ข๋ค๊ณ ๋ง์ํด์ฃผ์ จ๋ค. ์ด ๋ง์ ๋ฃ๊ณ ๊ฐ๋ ๋ง ์ตํ ๋.. ๋ฐ์ฑ์ ์๊ฐ์ ๊ฐ์ง๋๋ก ํ์..
3. ํ๊ฒฝ ๋ณ์์ Path
ํ๊ฒฝ ๋ณ์์ Path๋ ์ ์ค์ํ ๊น?
๋จผ์ ์ฐ๋ฆฌ๊ฐ ์คํํ๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ๋ค์ ์ด์์ฒด์ ์ ์ํด ์คํ๋๋ ํ๋ก์ธ์ค๋ค์ด๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ํ๋ก์ธ์ค๋ก ์คํํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์๊ฐ ์คํํ๊ณ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ํ์ผ๋ค์ ์ด์์ฒด์ ๊ฐ ๋์คํฌ์์ ์ฐพ๊ณ , ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
์ด ๋ ํ๋ก๊ทธ๋จ ํ์ผ์ด ์์นํ ๊ฒฝ๋ก๋ ๊ฐ๊ฐ ๋ค๋ฅธ๋ฐ, ๋ง์ฝ ํ๊ฒฝ ๋ณ์๋ก ๊ฒฝ๋ก๊ฐ ์ง์ ๋์ด ์์ง ์๋ค๋ฉด ์ฝ์์ฐฝ์ ํ๋ก๊ทธ๋จ ์คํ ๋ช ๋ น์ ์ ๋ ฅํด๋ ์ด์์ฒด์ ๋ ์ฐพ์ง ๋ชปํ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ํ๋ก๊ทธ๋จ ํ์ผ์ด ์กด์ฌํ๋ ๊ฒฝ๋ก๋ฅผ ์ฝ์์ฐฝ์ ์ง์ ์ ๋ ฅํ ํ, ํด๋น ๊ฒฝ๋ก์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ผ ๋น๋ก์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๊ฒ์ด๋ค.
๋๋ฌธ์ ์ด์์ฒด์ ๊ฐ ํ๋ก๊ทธ๋จ์ ์ฐธ์กฐํ๊ธฐ ์ํด์ ์กด์ฌํ๋ ๊ฒ์ด ํ๊ฒฝ ๋ณ์์ Path์ด๋ค.
ํ๋ก๊ทธ๋จ ํ์ผ์ด ์์นํ ๊ฒฝ๋ก๋ฅผ Path๋ผ๊ณ ํ๊ณ , ์ด๋ฌํ Path๋ฅผ ๋ณ์๋ก ๋ฑ๋กํด์ ์ด์์ฒด์ ๊ฐ ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ์ฌ ๊ฒฝ๋ก๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์คํ ํ ์ ์๋๋ก ํ๋ค.
4. URI, URL
๐ URI
ํตํฉ ์์ ์๋ณ์(Uniform Resource Identifier)์ ์๋ฏธ๋ก ๋ ผ๋ฆฌ์ ํน์ ๋ฌผ๋ฆฌ์ ๋ฆฌ์์ค๊ฐ ์ด๋์ ์์นํ๋์ง ์๋ณํ๊ธฐ ์ํ ๋ฌธ์์ด ์ํ์ค์ด๋ค.
๐ URL
URI์ ์๋ธ์ ์ผ๋ก URI์ ๋ฌ๋ฆฌ ๋ฆฌ์์ค๊ฐ ์ด๋์ ์์นํ๋์ง ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฅดํจ๋ค.
5. Servlet ๊ณผ์
ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด Servlet Container ์์ HttpRequest, HttpResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , web.xml์ ๋งคํ๋ Servlet ์ ์ฐพ๋๋ค. ๋ง์ฝ Servlet ์ด ์กด์ฌํ๋ค๋ฉด ํด๋น Servlet ์ service() ๋ฅผ ์ํํ๊ณ , ํด๋ผ์ด์ธํธ์ Http Method์ ๋ฐ๋ผ doGet() ํน์ doPost() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
์ด ๋, doGet() ํน์ doPost() ๋ ํด๋น ์๋ธ๋ฆฟ์ ๋งคํ๋ ๋์ ํ์ด์ง(JSP)๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ HttpResponse ์ ๋ด์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ค. ์๋ต์ด ์ข ๋ฃ๋ ํ Servlet ์ destroy() ์ ์ํด HttpRequest์ HttpResponse ๊ฐ์ฒด๋ ์๋ฉธ๋๋ค.
๐ฅ SPA
๐ฅ Statements, Expressions
๐ฅ HTTP Version