[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์ ๋์ ๋ฐฉ์์ ๋ํด ์ข ๋ ๊น๊ฒ ์์๋ณด๋ผ ์กฐ์ธํ๊ณ ๋ฐ๋ก ์ค๋ช
ํด์ฃผ์
จ๋ค.
๋ค์์๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ๋ํด ๋ ๊น์ด ์์๋ณด๊ณ ์ค์ ์ฝ๋๋ก ๊ตฌํํด๋ด์ผ๊ฒ ๋ค.