[Network] Web๊ณผ WAS, ๊ทธ๋ฆฌ๊ณ Spring ๐ฑ
์น ์๋ฒ์ WAS์ ์ฐจ์ด, ๊ทธ๋ฆฌ๊ณ Spring์ ์ญํ
Web Server ๋?
๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ๊ณ ์์ฒญ์ ๋ง๋ ์ ์  ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ
- ์์ฒญ๊ฐ์ ์๊ด์์ด ๋์ผํ ์ฝํ ์ธ ์ ๊ณต (HTML, CSS, image)
- ์ ์  ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋นํ๋ ์ญํ
Web Server ์ ๊ธฐ๋ฅ
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์ ์ ์์
- ์ ์  ์ฝํ ์ธ (HTML, CSS, JS, ์ด๋ฏธ์ง) ์ ๊ณต
- ๋์  ์ฝํ ์ธ ์์ฒญ ์ WAS์ ์ ๋ฌํ์ฌ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐํ
WAS ๋?
- DB์กฐํ๋ ๋ค์ํ ๋น์ง๋์ค ๋ก์ง์ ์ฒ๋ฆฌํด ๋์ ์ธ ์ปจํ ์ธ ๋ฅผ ์์ฑํ๊ณ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ
- ์ ์  ์ปจํ ์ธ ์ ๋ค๋ฅด๊ฒ ์ฌ์ฉ์๋ ์ธ์๊ฐ์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ฉด ์ปจํ ์ธ ๋ด์ฉ์ด ๋ฐ๋ ์ ์์
WAS ์ ๊ธฐ๋ฅ
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์ ์ ์์ (๋๋ถ๋ถ์ WAS๋ Web Server ๋ด์ฅ)
- ์์ฒญ์ ๋ง๋ ์ ์  ์ปจํ ์ธ (html, jpeg, css)๋ฅผ ์ ๊ณตํ ์ ์๋ค.
- DB์กฐํ๋ ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ํตํด ๋์  ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์๋ค.
Web Server์ WAS๋ฅผ ๊ฐ์ด ์ฌ์ฉํ์ ๋์ ์ฅ์ 
- ์ฑ ์ ๋ถํ ์ ํตํ ์๋ฒ ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ค. ์ฆ ๋ก๋๋ฐธ๋ฐ์ฑ(์ฌ๋ฌ๋์ WAS) ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฆฌ๋ฒ์ค ํ๋ก์(๋๋ฆฌ์)๋ฅผ ํตํด ์ค์  ์๋ฒ๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ์์ ์ ์๋ค.
Spring ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆ
- 
    ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) โ WAS(Tomcat) 
 ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์์ฒญ์ด WAS๋ก ์ ๋ฌ๋๋ค.
 WAS๋ ์๋ธ๋ฆฟ์ ์คํํ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
- 
    WAS(Tomcat) โ Filter โ Servlet Container 
 ์์ฒญ์ ํํฐ๊ฐ ๊ฐ๋ก์ฑ ๋ณด์, ์ธ์ฆ, ์์ฒญ/์๋ต ์์  ๋ฑ์ ์์ ์ ์ํํ๋ค.
 ํํฐ๋ฅผ ํต๊ณผํ ์์ฒญ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ก ์ ๋ฌ๋๋ค.
- 
    ์๋ธ๋ฆฟ ์คํ 
 ์๋ธ๋ฆฟ์ด ์์ฒญ์ ๋ฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ , DB ์กฐํ ๋ฐ ๋ก์ง ์ฒ๋ฆฌ๋ก ์๋ต์ ์์ฑํ๋ค.
- 
    Servlet Container โ ํํฐ โ WAS โ ํด๋ผ์ด์ธํธ 
 ์๋ต์ ๋ค์ ํํฐ๋ฅผ ๊ฑฐ์ณ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ก ์ ๋ฌ๋๋ค.
 ํํฐ๋ ์๋ต์ ์์ ํ๊ฑฐ๋ ๋ก๊น ํ ์๋ ์๋ค.
2025-04-04 ์ถ๊ฐ
์ค๋ฌด์ ๋ฐฐํฌํ๋ ๋ฐฉ์์ผ๋ก ์ดํด
- 
    WAR ํ์ผ ์์ฑ ๋ฐ ๋ฐฐํฌ 
 maven package๋ช ๋ น์ผ๋ก.warํ์ผ์ ์์ฑํ๊ณ ,
 ์ฌ์ฉ ์ค์ธWAS(Tomcat ๋ฑ)์ ์ค์ ์ ๋ฐ๋ผ ์ง์ ๋ ๋ฐฐํฌ ๋๋ ํ ๋ฆฌ์ ์ ๋ก๋ํ๋ฉด ์๋์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋๊ณ ์คํ๋จ. (Tomcat์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก /webapps ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์น)
- 
    ํด๋ผ์ด์ธํธ ์์ฒญ โ WAS ์ง์ 
 ์ฌ์ฉ์์ ์์ฒญ์ ๋จผ์  WAS(Tomcat) ๊ฐ ๋ฐ์.
- 
    Filter ์ฒ๋ฆฌ 
 ๋ฑ๋ก๋javax.servlet.Filter๋ค์ด ์คํ๋์ด ๊ณตํต ์์ (CORS, ๋ก๊น ๋ฑ)์ ์ํ.
- 
    DispatcherServlet ์ง์ 
 ํํฐ๋ฅผ ํต๊ณผํ ์์ฒญ์ DispatcherServlet์ผ๋ก ์ ๋ฌ๋จ.
 Spring MVC์ ํต์ฌ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์ด๋ฉฐ WAR ์์ ํฌํจ๋จ.
- 
    ์ธํฐ์ ํฐ(HandlerInterceptor) ๋์ 
 preHandle()์ ํตํด ๋ก๊ทธ์ธ ์ฒดํฌ, ๊ถํ ํ์ธ ๋ฑ์ ์ฒ๋ฆฌ.
- 
    Controller โ ๋น์ฆ๋์ค ๋ก์ง ์ํ 
 ์ค์  ๋น์ฆ๋์ค ๋ก์ง ์ํ(Service โ DB ๋ฑ).
- 
    ์๋ต ๋ฐํ ์ฒ๋ฆฌ 
 ์๋ต์ ๋ค์ ์ธํฐ์ ํฐ์postHandle(),afterCompletion()์ ๊ฑฐ์ณ ํํฐ๋ฅผ ์ง๋ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋จ.
์ต์ข ํ๋ฆ ์์ฝ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ํด๋ผ์ด์ธํธ ์์ฒญ]                     โ ์๋์ด ์๋น์ ๋ฐฉ๋ฌธ
   โ
[WAS - Filter]                       โ ์
๊ตฌ์์ ๋ง์คํฌ๋ ๋ณต์ฅ ํ์ธ
   โ
[DispatcherServlet (war ์๋ธ๋ฆฟ ์)] โ ์จ์ดํฐ์๊ฒ ์ฃผ๋ฌธ ์ ๋ฌ
   โ
[Interceptor - preHandle()]         โ ์จ์ดํฐ๊ฐ ๋จ๊ณจ ์ฌ๋ถ ํ์ธ, ์ฃผ๋ฌธ ๊ฐ๋ฅ ํ์ธ
   โ
[Controller โ Service โ DB]        โ ์๋ฆฌ์ฌ(Controller)๊ฐ ์ฃผ๋ฐฉ์์ ์๋ฆฌ(๋น์ฆ๋์ค ๋ก์ง) ์งํ
   โ
[Interceptor - postHandle(), afterCompletion()] โ ์จ์ดํฐ๊ฐ ์์ ์ํ ํ์ธ, ๊ธฐ๋ก ํ ์๋น
   โ
[Filter ์๋ต ํ์ฒ๋ฆฌ]               โ ์จ์ดํฐ๊ฐ ์์ ์๋น ์งํ ์ ๋ฆฌ, ๊ธฐ๋ก
   โ
[ํด๋ผ์ด์ธํธ ์๋ต ๋์ฐฉ]              โ ์๋์ด ์์ ๋ฐ๊ณ  ์๋น ๋๊ฐ
Servlet Container์ Spring๐ฑ ์ ๊ด๊ณ
- Servlet Container๋ ์๋ธ๋ฆฟ(Servlet)๊ณผ JSP๋ฅผ ์คํํ๋ ํ๊ฒฝ์ ์ ๊ณต
- Spring์ ์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ์น ํ๋ ์์ํฌ์ด๋ฉฐ, Servlet Container ์์์ ์คํ๋จ
- Spring MVC์ ํต์ฌ์ธ DispatcherServlet๋ ๊ฒฐ๊ตญ ์๋ธ๋ฆฟ์
์ฆ, Spring์ด ๋์ํ๋ ค๋ฉด Servlet Container๊ฐ ํ์ํ๋ฉฐ, Spring ์์ฒด๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ํฌํจํ์ง ์๋๋ค.
Spring Boot์ ๊ฒฝ์ฐ
- Spring Boot๋ Tomcat, Jetty, Undertow ๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ๋ด์ฅํ๊ณ ์์ด ๋ณ๋์ WAS ์ค์น๊ฐ ํ์ ์๋ค.
๋ง๋ฌด๋ฆฌ ์ ๋ฆฌ
Web ์๋ฒ, WAS, ๊ทธ๋ฆฌ๊ณ  Spring์ ๋์ ๋ฐฉ์์ ๋ํด ๊ณต๋ถํ๋ค.
์ค์ Spring์ ๋์ ๋ฐฉ์์ ๋ํด ์ข ๋ ๊น๊ฒ ์์๋ณด๋ผ ์กฐ์ธํ๊ณ  ๋ฐ๋ก ์ค๋ช
ํด์ฃผ์
จ๋ค.
๋ค์์๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ๋ํด ๋ ๊น์ด ์์๋ณด๊ณ  ์ค์  ์ฝ๋๋ก ๊ตฌํํด๋ด์ผ๊ฒ ๋ค.


