Spring ๊ณต๋ถํ๊ธฐ์ ์์, Web ๊ณต๋ถ๋ ํ์ํ๊ธธ๋
์ ๋ฆฌํ ๊ธฐ๋ณธ ๊ฐ๋ (?)์ ์์ฑํด๋ณด๋ ค๊ณ ํ๋ค
์๋ก ์ ํ๋ ๋ถ์ผ๋ค ๋ณด๋ ์ฉ์ด ์ ์ธ ๊ฒ ๋ง์ด ํท๊ฐ๋ฆฐ๋ค
์ค์ ์ ๋๊ณ ๊ณต๋ถํ๊ฑด Web Server์ WAS (Web Application Server)๋ผ์
๋๋จธ์ง๋ ๊ฐ๋ตํ๊ฒ ์ ์๋ง ์ ๋ฆฌํ๋ค
1. Web Browser
์ฌ์ฉ์ (ํด๋ผ์ด์ธํธ)๊ฐ ์์ฒญํ ์น ์๋ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ ํ๋ฆฌ์ผ์ด์
HTTP ์ฌ์ฉ์ ์์ด์ ํธ์ ๋ํ์ ์ธ ์์
ex) Google Chrome, FireFox ๋ฑ
2. Web Application
์น ์ฑ์ด๋ผ๊ณ ๋ถ๋ฆ
์ธํฐ๋ท์ ํตํด์ Web Browser์์ ์ด์ฉํ ์ ์๋ ์์ฉ ์ํํธ์จ์ด๋ก
๋์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง ์น
๊ธฐ๊ธฐ์ ์ค์นํด์ผ ํ๋ ์ดํ์ ๊ธฐ๋ฅ์ ์น์ด ๋์ ํด์ค
์ฌ์ฉ์๊ฐ ๋ฅ๋์ ์ผ๋ก ์น ์ฑ์ ์๋น์ค๋ฅผ ์ด์ฉํ๋๋ก ํจ
ex) ๋ค์ด๋ฒ ์ง๋, ์นด์นด์ค ๋งต ๋ฑ๋ฑ
๐ Web Application vs WebSite
๋ง์ด ํท๊ฐ๋ฆด ์ ์๋ ๊ฐ๋ ์ด๋ค
Web Application์ ์น ๋ธ๋ผ์ฐ์ + ์น ๊ธฐ์ ๋ก ์ฌ์ฉ์์ ๋ํํ๋ ๋ํ์์ผ๋ก, ์ธํฐ๋ท์ ์ด์ฉํ ์ ์๋๋ก ํ๋ ํ๋ก๊ทธ๋จ์ด๊ณ ,
Web Site๋ ์น ํ์ด์ง์ ๋ชจ์์ผ๋ก, ๊ณผ๊ฑฐ์๋ ์ ํด์ง ์ฝํ ์ธ ๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ํํ์๋ค.
๊ทผ๋ฐ ์ด์ ๊ฒฝ๊ณ๊ฐ ๋ฌด๋์ง๋ฉด์, ์น ์ฌ์ดํธ์๋ ๋ํํ ๋ฐฉ์๊ณผ ๋ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋ผ์ ๋์ ๊ตฌ๋ถํ๋ ๊ฒ ์๋ฏธ๊ฐ ์์ด์ ธ๊ฐ๋ ์ถ์ธ๋ค
3. Web Server
์น ์๋ฒ์ ๊ฐ๋ ์ ์ํํธ์จ์ด์ ํ๋์จ์ด์ ์ผ๋ก ๋๋ ์ค๋ช ํ ์ ์๋ค
์ํํธ์จ์ด ๊ฐ๋
์น ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์,
html, jpeg, css ๊ฐ์ ์ ์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
ํ๋์จ์ด ๊ฐ๋
Web ์๋ฒ๊ฐ ์ค์น๋์ด ์๋ ์ปดํจํฐ
์ฆ, HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ
ํด๋ผ์ด์ธํธ (์น ๋ธ๋ผ์ฐ์ ๋๋ ์น ํฌ๋กค๋ฌ)์ ์์ฒญ์ ์๋น์ค๋ก ํ๋ ์๋ฒ์ด๊ณ ,
Apache Server, Nginx, IIS ๋ฑ๋ฑ์ด ์๋ค
๐ค Apache Server (์ฌ์ฉ๋ฅ 1๋ฑ)
์ํ์น ์ํํธ์จ์ด ์ฌ๋จ์์ ๊ด๋ฆฌํ๋ ์คํ ์์ค, ํฌ๋ก์ค ํ๋ซํผ HTTP ์น ์๋ฒ ์ํํธ์จ์ด
Unix, Linux, MS Window ๋ฑ์์๋ ๋ฌด๋ฃ๋ก ์ด์ฉ ๊ฐ๋ฅ
๐ Nginx (์ฌ์ฉ๋ฅ 2๋ฑ)
๊ฐ๋ณ๊ณ ๋์ ์ฑ๋ฅ์ ๋ชฉํ๋ก ํ๋ ์ํํธ์จ์ด
์น ์๋ฒ, ๋ฆฌ๋ฒ์ค ํ๋ก์, ๋ฉ์ผ ํ๋ก์ ๊ธฐ๋ฅ์ ๊ฐ์ง
๐ IIS (Internet Information Services) (์ฌ์ฉ๋ฅ 3๋ฑ)
MicroSoft Window๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ๋ค์ ์ํ ์ธํฐ๋ท ์ ๋ณด ์๋น์ค
๊ตฌ ์ด๋ฆ์ Internet Information Server
(1) Web Server ๊ธฐ๋ฅ
๊ธฐ๋ฅ 1) Static contents ์ ๊ณต
์ ์ ์ธ ์ฝํ ์ธ ์ ๊ณต
WAS (Web Application Server)๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์์ ์ ๊ณต
๊ธฐ๋ฅ 2) Dynamic contents ์ ๊ณต์ ์ํ ์์ฒญ ์ ๋ฌ
ํด๋ผ์ด์ธํธ์ Request๋ฅผ WAS๋ก ๋ณด๋ด๊ณ ,
WAS๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ Response๋ก ์ ๋ฌ
๐ Static Contents & Dynamic Contents
Static Contents
๋ณํ์ง ์๋ ์ฝํ ์ธ . ์บ์์ ์ ์ฅํด๋๊ณ ์
์บ์์ ์ ์ ํ์ผ์ ์ฌ๋ณธ(ex. ์ด๋ฏธ์ง)์ ์ ์ฅํ๊ณ
ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ด์ฉ์ ์ ๊ณตํ ๋ ๋น ๋ฅด๊ฒ ์ ๋ฌํด์ค
Dynamic Contents
๊ณ์ ๋ณํ๋ ์ปจํ ์ธ . HTML ํ์ผ๋ก ์ ์ฅ๋์ง ์์
์๋ฒ ์ธก์์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ์บ์๊ฐ ์๋๋ผ ์๋ณธ ์๋ฒ์์ ๋ง๋ค์ด์ ์ค
์๋ฒ์์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ/์ด๋ฒคํธ ๋ํ ์ ๋ณด๋ก HTML ํ์ผ ์์ฑํด์ค
์์๋ก๋ ๋ญ๊ฐ ์๋
ex 1) ๋ด์ค ์น ์ฌ์ดํธ: ๊ธฐ์ฌ๊ฐ ๊ณ์ ์ ๋ฐ์ดํธ๋๊ณ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ํ๋ง๋ค ํ์ด์ง๊ฐ ๋ฌ๋ผ์ง
ex 2) ํ์ด์ค๋ถ ๋ด์ค ํผ๋: ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ด๊ณ ๋๊ธ, ๊ฒ์๋ฌผ ๋ฑ๋ฑ ๋ณ๊ฒฝ๋จ
4. WAS (Web Application Server)
DB ์กฐํ๋ ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ์๊ตฌํ๋
Dynamic Contents๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง Application Server
HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํจ.
์ปดํจํฐ๋ ๋๋ฐ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํด์ฃผ๋ ๋ฏธ๋ค์จ์ด (์ํํธ์จ์ด ์์ง)์ด๋ค
WAS๋ JSP, Servlet ๊ตฌ๋ ํ๊ฒฝ์ ์ ๊ณตํด์ Web Container, Servlet Container๋ผ๊ณ ๋ ๋ถ๋ฆผ
์์: Apache Tomcat, JEUS ๋ฑ
๐ Container
JSP, Servlet์ ์คํ์ํฌ ์ ์๋ ์ํํธ์จ์ด
๐๐ Web Container
Web Server๊ฐ ๋ณด๋ธ JSP, PHP ๋ฑ ํ์ผ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ Web Server๋ก ๋ณด๋ด์ค
(1) WAS ์ญํ
๐ก WAS = Web Server + Web Container
Web Server ๊ธฐ๋ฅ๋ค์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ ํจ
๋ถ์ฐ ํธ๋์ญ์ , ๋ณด์, ๋ฉ์์ง, Thread ์ฒ๋ฆฌ ๋ฑ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ๋ถ์ฐ ํ๊ฒฝ์์ ์ฌ์ฉ
DB ์๋ฒ์ ๊ฐ์ด ์ํ๋จ
(2) WAS ์ฃผ์ ๊ธฐ๋ฅ
ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ๊ณผ DB ์ ์ ๊ธฐ๋ฅ ์ ๊ณต
์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ (๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์) ๊ด๋ฆฌ ๊ธฐ๋ฅ
์) Tomcat, JBoss, Jeus, Web Sphere ๋ฑ
5. Web Server & WAS ๊ตฌ๋ถํ๋ ์ด์
(1) Web Server๊ฐ ํ์ํ ์ด์
[ ํด๋ผ์ด์ธํธ์์ ์ด๋ฏธ์ง ํ์ผ (Static contents)๋ฅผ ๋ณด๋ด๋ ๊ณผ์ ]
1) ํด๋ผ์ด์ธํธ๋ HTML ๋ฌธ์๋ฅผ ๋ฐ์์ด
2) HTML ๋ฌธ์๋ฅผ ๋ฐ๊ณ ํ์ํ ์ด๋ฏธ์ง ํ์ผ์ ๋ค์ ์๋ฒ๋ก ์์ฒญํด์ ์ด๋ฏธ์ง ํ์ผ ์์
3) Web Server๋ฅผ ํตํด Static contents๋ฅผ Application Server๊น์ง ๊ฐ์ง ์๊ณ ๋น ๋ฅด๊ฒ ๋ณด๋ด์ค ์ ์์
→ Web Server์์๋ ์ ์ ์ธ ์ฝํ ์ธ ๋ง ์ฒ๋ฆฌํ๋๋ก ๊ธฐ๋ฅ์ ๋ถ๋ฐฐ
→ ์๋ฒ์ ๋ถ๋ด์ ์ค์ฌ์ค
(2) WAS๊ฐ ํ์ํ ์ด์
์น ํ์ด์ง๋ ์ ์ ์ฝํ ์ธ ์ ๋์ ์ฝํ ์ธ ๊ฐ ๋ชจ๋ ์กด์ฌ
์ฌ์ฉ์์ ์์ฒญ์ ๋ง๊ฒ ์ ์ ํ ๋์ ์ฝํ ์ธ ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํด์ผํจ
Web Server๋ง์ ์ด์ฉํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ ๊ฐ์
๋ชจ~~๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ณ ์๋น์ค๋ฅผ ํด์ผ ํจ
→ ์์์ด ๋ถ์กฑํด์ง ;;;
๊ทธ๋ผ ์ด๋ป๊ฒ?
WAS๋ฅผ ํตํด ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์ด
๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋ ๊ทธ ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํจ
์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
(3) WAS๊ฐ Web Server ๊ธฐ๋ฅ๊น์ง ๋ค ํ๋ฉด ๋๋ ๊ฑฐ ์๋?
์๋ฒ ๋ถํ ๋ฐฉ์ง๋ฅผ ์ํด ๊ธฐ๋ฅ ๋ถ๋ฆฌ ํ์
WAS๋ DB ์กฐํ, ๋ก์ง ์ฒ๋ฆฌํ๋๋ผ ๋ฐ์จ
๋จ์ ์ ์ ์ฝํ ์ธ ๋ Web Server์์ ๋น ๋ฅด๊ฒ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํ๋ ๊ฒ ์ข์
WAS๊ฐ ์ ์ ์ฝํ ์ธ ๊น์ง ์ฒ๋ฆฌํ๋ฉด ๋ถํ ๋๋ฌด ์ปค์ง
์๋ ๋๋ ค์ง
→ WAS๋ ๋์ ์ปจํ ์ธ ์ฒ๋ฆฌ, Web Server๋ ์ ์ ์ปจํ ์ธ ์ฒ๋ฆฌ๋ก ๋ถ๋ฆฌ
๐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํด์ ๋ณด์ ๊ฐํํ ์ ์์
SSL ์๋ณตํธํ ์ฒ๋ฆฌ์์ Web Server๋ฅผ ์ฌ์ฉํจ
WAS์ Web Server๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๋ฌด์ค๋จ ์ด์์ด ๊ฐ๋ฅ
fail over, fail back ์ฒ๋ฆฌ์ ์ ๋ฆฌ
Web Server๋ WAS๋ฅผ Load Balancing์ ํด์ค
์ ๊ทผ ํ์ฉ IP ๊ด๋ฆฌ, ์ธ์ ๊ด๋ฆฌ ๋ฑ๋ Web Server์์ ์ฒ๋ฆฌํ๋ฉด ํจ์จ์
๐ก ์์ ์ด์ฉ ํจ์จ์ฑ, ์ฅ์ ์ฒ๋ฆฌ, ๋ฐฐํฌ/์ ์ง๋ณด์ ํธ์์ฑ์ ์ํด ๋ถ๋ฆฌ
๐ก Web Server๋ฅผ ์๋จ์, WAS๋ฅผ ๋ท๋จ์ ๋๊ณ
ํ์ํ WAS๋ฅผ Web Server์ Plug-In ํํ๋ก ์ค์ ํ๋ฉด ํจ์จ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
6. Web Service ๊ตฌ์กฐ
๐ก Client → Web Server → WAS → DB
- Client (์น ๋ธ๋ผ์ฐ์ )์์ Web Server๋ก HTTP ์์ฒญ
- Web Server๋ Client ์์ฒญ์ WAS์ ๋ณด๋
- WAS๋ ์๋ธ๋ฆฟ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
- WAS๋ web.xml์ ๋ณด๊ณ ์๋ธ๋ฆฟ์ ๋ํ Thread๋ฅผ ์์ฑ
- HTTP Request, Response ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์๋ธ๋ฆฟ(ํด๋์ฐ?)์ ์ ๋ฌ
- Web Container์์ ์คํํ Thread์์ ์๋ธ๋ฆฟ์ ํจ์ ํธ์ถ (ex.service() )
- ํธ์ถ๋ ํจ์์์ HTTP ์์ฒญ์ ๋ง๊ฒ ์ฒ๋ฆฌ ๋ฉ์๋(ex. doGet, doPost)๋ฅผ ํธ์ถ
- ์ฒ๋ฆฌ ๋ฉ์๋๋ค์ ํ๋ผ๋ฏธํฐ์ ๋ง๊ฒ ์์ฑ๋ ๋์ ํ์ด์ง๋ฅผ HTTP Request, Response ๊ฐ์ฒด์ ๋ด์ WAS์ ์ ๋ฌ
- WAS๋ Response ๊ฐ์ฒด๋ฅผ Web Server์ ์ ๋ฌํ ํํ๋ก ๋ฐ๊ฟ Web Server์ ์ ๋ฌ
- WAS์์ ์์ ์ ๋ฆฌ
๐ Servlet
Dynamic ์น ํ์ด์ง๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์
์น ์๋ฒ ์ฑ๋ฅ์ ํฅ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์๋ฐ ํด๋์ค ์ผ์ข
7. ์ฐธ๊ณ
๐ DBMS (Database Management System)
๋ฐ์ดํฐ ์งํฉ์ ๋ง๋ค๊ณ ์ ์ฅ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์์ฉ ํ๋ก๊ทธ๋จ
ex) MySQL, MariaDB, Oracle ๋ฑ๋ฑ
ํด๋ผ์ด์ธํธ์์ DBMS Server์ ์ง์ ์ ์ํด์
๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉด ๋ณด์์ ์ทจ์ฝํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๋ฌด๊ฑฐ์์ง
→ ๋ฏธ๋ค์จ์ด ์ฌ์ฉํ์ฌ ํด๊ฒฐ
๐ MiddleWare
Client → MiddleWare Server → DBMS Server
(๋น์ฆ๋์ค) ๋ก์ง์ ๋ฏธ๋ค์จ์ด์์ ์ํ, ๋ฐ์ดํฐ ์กฐ์์ DBMS์์ ์ํํ๋๋ก ํจ
ํด๋ผ์ด์ธํธ์์๋ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ๋ง ๋ด๋นํ๊ฒ ๋จ
8. ์ฐธ๊ณ ๋งํฌ
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://www.cloudflare.com/ko-kr/learning/cdn/caching-static-and-dynamic-content/
'๐ Java&Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Cron Expression (0) | 2023.01.25 |
---|---|
StringUtils (0) | 2023.01.18 |
Looking For Annotation~ (0) | 2023.01.16 |
Intellij) Junit Test Code ์์ฑ ์ "Execution failed for task" ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2023.01.09 |
Spring Framework๋ฅผ ์์๋ณด์ (0) | 2022.04.22 |