์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Vue.js
- ํด๋ฆฐ์ฝ๋
- Python
- golang
- ๊ธฐ์ด100์
- Git
- ํด๋ฆฐ ์ฝ๋
- ๋กฌ๋ณต
- Codeup
- ์คํ๋ง
- Spring
- ํ์ด์ฌ
- thymeleaf
- go
- MySQL
- springboot
- Spring Boot
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- JPA
- ์ค๋ธ์
- ์๊ณ ๋ฆฌ์ฆ
- spring security
- ์ฝ๋์
- mariadb
- H2 ์ค์น
- ๊ฐ์ฌ์ค
- GitHub
- Postman
- Gradle
- java
- Today
- Total
nyximos.log
[Spring] ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด ๋ณธ๋ฌธ
๐ ์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- ์น์ HTTP ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ผ๋ก ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML (API) ๋ฑ
์น ์๋ฒ Web Server
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ ์ ๋ฆฌ์์ค ์ ๊ณต, ๊ธฐํ ๋ถ๊ฐ๊ธฐ๋ฅ
- ์ ์ (ํ์ผ) HTML, CSS, JS, ์ด๋ฏธ์ง, ์์
- NGINX, APACHE ๋ฑ์ด ์๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ WAS - Wep Application Server
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์น ์๋ฒ ๊ธฐ๋ฅ + ํ๋ก๊ทธ๋จ ์ฝ๋ ์คํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ํ
- ๋์ HTML, HTTP API(JSON), ์๋ธ๋ฆฟ, JSP, ์คํ๋ง MVC
- ํฐ์ผ, Jetty, Underflow
์น ์๋ฒ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ (WAS) ์ฐจ์ด
- ์น ์๋ฒ๋ ์ ์ ๋ฆฌ์์ค, WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊น์ง ์ํ
- ์น ์๋ฒ๋ ํ๋ก๊ทธ๋จ ์คํํ ์๋ ์๊ณ , WAS๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ → ์ฉ์ด์ ๊ฒฝ๊ณ๊ฐ ๋ชจํธ
- WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ๋ ํนํ๋์ด ์๋ค.
์น ์์คํ ๊ตฌ์ฑ - WAS + DB
- WAS์ DB๋ง์ผ๋ก๋ ์์คํ ์ ๊ตฌ์ฑ๊ฐ๋ฅํ๋ค.
- WAS๊ฐ ์ ์ ๋ฆฌ์์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ๋ชจ๋ ์ ๊ณต
- ์ด๋ ๊ฒ ๊ตฌ์ฑํ ๊ฒฝ์ฐ WAS๊ฐ ๋ง์ ์ญํ ์ ๋ด๋นํ์ฌ ์๋ฒ๊ฐ ๊ณผ๋ถํ ๋ ์ ์๋ค.
- ๋น์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ด ์ ์ ๋ฆฌ์์ค ๋๋ฌธ์ ์ํ์ด ์ด๋ ค์ธ ์๋ ์๊ณ , WAS์ ์ฅ์ ๊ฐ ์์์์ ์ค๋ฅ ํ๋ฉด์ ๋ ธ์ถ์ ๋ชปํ ์๋ ์๋ค.
์น ์์คํ ๊ตฌ์ฑ - WEB + WAS + DB
- ์ ์ ๋ฆฌ์์ค๋ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌ
- ์น ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด WAS์ ์์ฒญ์ ์์ ํ๋ค.
- WAS๊ฐ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ฒ๋ฆฌ ์ ๋ด
- ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค.
- ์ ์ ๋ฆฌ์์ค ์ฌ์ฉ ๅค → WEB ์๋ฒ ์ฆ์ค
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฆฌ์์ค ์ฌ์ฉ ๅค → WAS ์ฆ์ค
- WAS, DB ์ฅ์ ์ WEB ์๋ฒ๊ฐ ์ค๋ฅ ํ๋ฉด ์ ๊ณต ๊ฐ๋ฅ
CDN Contents Delivery Network ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ
์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ฌ๋ฌ๊ฐ์ ์๋ฒ ๋คํธ์ํฌ๋ฅผ ๋์ด ๋ณ๋ชฉ ํ์์ ๋ฐฉ์งํ๊ณ ํจ์จ์ ์ธ ๋คํธ์ํฌ ์ด๋์ ์ ๊ณตํ๋ค.
์์ฃผ ์ฌ์ฉํ๋ ํ์ผ๋ค์ Caching ํ์ฌ ์น ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ธ๋ค.
Streaming ๊ธฐ์ ์ ์ ๊ณตํ์ฌ ์ค์๊ฐ์ผ๋ก ๋ง์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ฝํ ์ธ ๋ฅผ ์ ์กํด์ค๋ค.
์๋ฒ์ ํธ๋ํฝ์ ๋์ด์ฃผ์ด ๋น์ฉ์ ๊ฐ์ํ๋ ํจ๊ณผ๊ฐ ์๊ณ , ๊ณต๊ฒฉ ํธ๋ํฝ์ ์ํํ ์ ์์ด Dos ๊ณต๊ฒฉ์ ๋ํด์ ์ด๋์ ๋ ๋ณดํธํด์ค ์ ์๋ค.
๋ทํ๋ฆญ์ค, ์์ด๋น์ค๋น, NC์ํํธ, ์นด์นด์ค ๊ฒ์์ฆ๋ฑ ์ฌ๋ฌ ๊ธฐ์ ๋ค์ด CDN์ ํ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ค.
๐พ ์๋ธ๋ฆฟ
์๋ธ๋ฆฟ์ด๋?
๋์ ์ธ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์๋ฐ ๊ธฐ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ค๋ค.
๊ณต์ ๋ฌธ์์์๋ ์ด๋ ๊ฒ ์ ์ํ๋ค.
์๋ธ๋ฆฟ์ ์์ฒญ-์๋ต ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ํตํด ์ ๊ทผํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๋ ์๋ฒ์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํด๋์ค์ ๋๋ค.
์๋ธ๋ฆฟ์ ๋ชจ๋ ์ ํ์ ์์ฒญ์ ์๋ตํ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์น ์๋ฒ์์ ํธ์คํ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ Java ์๋ธ๋ฆฟ ๊ธฐ์ ์ HTTP ์ ์ฉ ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์ ์ํฉ๋๋ค.
javax.servlet ๋ฐ javax.servlet.http ํจํค์ง๋ ์๋ธ๋ฆฟ์ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค ๋ฐ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ ์๋ธ๋ฆฟ์ ๋ผ์ดํ ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์๋ธ๋ฆฟ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
์ผ๋ฐ ์๋น์ค๋ฅผ ๊ตฌํํ ๋ Java ์๋ธ๋ฆฟ API์ ํจ๊ป ์ ๊ณต๋๋ GenericServlet ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ์ฅํ ์ ์์ต๋๋ค.
HttpServlet ํด๋์ค๋ HTTP ๊ด๋ จ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ doGet ๋ฐ doPost์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฒ์์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ๋ฌด
WAS๊ฐ ํด์ฃผ๋ ๊ฒ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS ์ฌ์ฉํ ๋ ๊ฐ๋ฐ์๊ฐ ํ๋ ๊ฒ
- ์๋ฒ TCP/IP ์ฐ๊ฒฐ ๋๊ธฐ, ์์ผ ์ฐ๊ฒฐ
- HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑํด์ ์ฝ๊ธฐ
- POST ๋ฐฉ์, /save URL ์ธ์ง
- Content-Type ํ์ธ
- HTTP ๋ฉ์์ง ๋ฐ๋ ๋ด์ฉ ํ์ฑ
- username, age ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ์ฑ
- ์ ์ฅ ํ๋ก์ธ์ค ์คํ
- ๋น์ฆ๋์ค ๋ก์ง ์คํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ์์ฒญ
- HTTP ์๋ต ๋ฉ์์ง ์์ฑ ์์
- HTTP ์์ ๋ผ์ธ ์์ฑ
- Header ์์ฑ
- ๋ฉ์์ง ๋ฐ๋์ HTML ์์ฑ์์ ์ ๋ ฅ
- TCP/IP์ ์๋ต ์ ๋ฌ, ์์ผ ์ข ๋ฃ
์๋ธ๋ฆฟ ํน์ง
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response){
//์ ํ๋ฆฌ์ผ์ด์
๋ก์ง
}
}
- urlPatterns(/hello)์ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ฝ๋ ์คํ
- HttpsServletRequest - HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ
- HttpsServletResponse - HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๊ณต
- → ์๋ธ๋ฆฟ์ ํตํด ๊ฐ๋ฐ์๋ HTTP ์คํ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ
- ์น ๋ธ๋ผ์ฐ์ ์์ localhost:8080/hello ๋ผ๊ณ ์์ฒญ์ ํจ
- WAS์์ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Request์ Response ๊ฐ์ฒด ์์ฑ
- Request, Response๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ฉด์ Servlet ๊ฐ์ฒด ํธ์ถ
- ๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด์์ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํ๊ณ , Response ๊ฐ์ฒด์์ HTTP ์๋ต ์ ๋ณด๋ฅผ ์ ๋ ฅํ ์ ์์.
- Servlet ์ข ๋ฃํ๋ฉด WAS๋ Response ๊ฐ์ฒด ์ ๋ณด๋ก HTTP ์๋ต ์์ฑ
- ์น ๋ธ๋ผ์ฐ์ ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋
- ํฐ์บฃ์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํจ
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข ๋ฃํ๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
- ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋ ๋ง๋ค ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ
- ์ต์ด ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ
- ๋ชจ๋ ๊ณ ๊ฐ ์์ฒญ์ ๋์ผํ ์๋ธ๋ฆฟ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ ๊ทผ
- ๊ณต์ ๋ณ์ ์ฌ์ฉ ์ฃผ์
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ข ๋ฃ์ ํจ๊ป ์ข ๋ฃ
- JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ ๋์ด์ ์ฌ์ฉ
- ๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
๐ฉ๐ณ ๋์ ์์ฒญ - ๋ฉํฐ ์ฐ๋ ๋
์ฐ๋ ๋
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํ
- ์๋ฐ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ฒ์ ์คํํ๋ฉด main์ด๋ผ๋ ์ด๋ฆ์ ์ฐ๋ ๋๊ฐ ์คํ
- ์ฐ๋ ๋๊ฐ ์์ผ๋ฉด ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๋ถ๊ฐ๋ฅ
- ํ๋ฒ์ ํ๋์ ์ฝ๋ ๋ผ์ธ๋ง ์ํ
- ๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด ์ฐ๋ ๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑ
์์ฒญ๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑ
์ฅ์
- ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ)๊ฐ ํ์ฉํ ๋ ๊น์ง ์ฒ๋ฆฌ๊ฐ๋ฅ
- ํ๋์ ์ฐ๋ ๋๊ฐ ์ง์ฐ ๋์ด๋, ๋๋จธ์ง ์ฐ๋ ๋๋ ์ ์ ๋์ํ๋ค.
๋จ์
- ์์ฑ ๋น์ฉ์ด ๋งค์ฐ ๋น์ธ๋ค.
- ๊ณ ๊ฐ ์์ฒญ์ด ์ฌ ๋ ๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ฉด, ์๋ต ์๋๊ฐ ๋ฆ์ด์ง๋ค.
- ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
- ์ฐ๋ ๋ ์์ฑ์ ์ ํ์ด ์๋ค.
- ๊ณ ๊ฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ์ค๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋์ด์ ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ์ด ์์๊น??
๐คฟ ์ฐ๋ ๋ํ
ํน์ง
- ํ์ํ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์ ๋ณด๊ด & ๊ด๋ฆฌ
- ์ฐ๋ ๋ ํ์ ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๋ฅผ ๊ด๋ฆฌํ๋ค.
- ํฐ์บฃ - ์ต๋ 200๊ฐ ๊ธฐ๋ณธ ์ค์ (๋ณ๊ฒฝ ๊ฐ๋ฅ)
์ฌ์ฉ
- ์ฐ๋ ๋๊ฐ ํ์ํ๋ฉด, ์ด๋ฏธ ์์ฑ๋์ด ์๋ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์์ ๊บผ๋ด์ ์ฌ์ฉํ๋ค.
- ์ฌ์ฉ์ ์ข ๋ฃํ๋ฉด ์ฐ๋ ๋ ํ์ ํด๋น ์ฐ๋ ๋๋ฅผ ๋ฐ๋ฉํ๋ค.
- ์ต๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ด์ด์ ์ฐ๋ ๋ ํ์ ์ฐ๋ ๋๊ฐ ์์ผ๋ฉด?
- ๊ธฐ๋ค๋ฆฌ๋ ์์ฒญ์ ๊ฑฐ์ ํ๊ฑฐ๋ ํน์ ์ซ์๋งํผ๋ง ๋๊ธฐํ๋๋ก ์ค์ ํ ์ ์๋ค.
์ฅ์
- ์ฐ๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ → ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋น์ฉ(CPU)์ด ์ ์ฝ & ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค.
- ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๊ฐ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
๐ฎ ์ค๋ฌด ํ
WAS์ ์ฃผ์ ํ๋ ํฌ์ธํธ๋ ์ต๋ ์ฐ๋ ๋(max thread) ์ ์ด๋ค.
๋ฎ๊ฒ ์ค์ → ๋์ ์์ฒญ์ด ๋ง์ ๋ ํด๋ผ์ด์ธํธ ์๋ต ์ง์ฐ
๋๊ฒ ์ค์ → ๋์ ์์ฒญ์ด ๋ง์ ๋ CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ ๋ค์ด
์ฅ์ ๋ฐ์์
ํด๋ผ์ฐ๋ ๐โ๏ธ ์๋ฒ๋ถํฐ ๋๋ฆผ → ํ๋
ํด๋ผ์ฐ๋ ๐ โ๏ธ ์ด์ฌํ ํ๋
WAS์ ๋ฉํฐ ์ฐ๋ ๋ ์ง์
๋ฉํฐ ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌ
๊ฐ๋ฐ์๊ฐ ๋ฉํฐ ์ฐ๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
๊ฐ๋ฐ์๋ ๋ง์น ์ฑ๊ธ ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฏ์ด ํธ๋ฆฌํ๊ฒ ์์ค ์ฝ๋๋ฅผ ๊ฐ๋ฐํ ์ ์๋ค.
๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ฏ๋ก ์ฑ๊ธํค ๊ฐ์ฒด(์๋ธ๋ฆฟ, ์คํ๋ง ๋น)๋ ์ฃผ์ํด์ ์ฌ์ฉ
๐คนโ๏ธ HTML, HTTP API, CSR, SSR
์ ์ ๋ฆฌ์์ค
๊ณ ์ ๋ HTML ํ์ผ, CSS, JS, ์ด๋ฏธ์ง ์์ ๋ฑ
์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญํ๋ฉด ์น ์๋ฒ์์ ๋ฆฌ์์ค ํ์ผ ์ ๋ฌ
HTML ํ์ด์ง
์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ์ค๋ฉด
WAS๋ DB์์ ์กฐํ ํ, ๋์ ์ผ๋ก HTML ์์ฑํ์ฌ(๋ทฐ ํ ํ๋ฆฟ) ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌ
์น ๋ธ๋ผ์ฐ์ ๋ HTML์ ๋ฐ์์ ํด์
HTTP API
HTML์ด ์๋ ๋ฐ์ดํฐ๋ง ์ ๋ฌ
์ฃผ๋ก JSON ํํ๋ก ๋ฐ์ดํฐ ํต์
์น๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ์ค๋ฉด
WAS๋ DB์์ ์กฐํํ์ฌ ์ฃผ๋ก JSON ํ์ ์ฌ์ฉํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌ
๋ ๋๋ง์ ์ฌ์ฉ ๐ โ๏ธ ๋ค์ํ ์์คํ ์์ ์ฌ์ฉ ๐โ๏ธ
- ์น ํด๋ผ์ด์ธํธ to ์๋ฒ
- ์ฑ ํด๋ผ์ด์ธํธ to ์๋ฒ
- ์๋ฒ to ์๋ฒ
CSR ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
- HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์์ฑํด์ ์ ์ฉ
- ์ฃผ๋ก ๋์ ์ธ ํ๋ฉด์ ์ฌ์ฉ, ์น ํ๊ฒฝ์ ๋ง์น ์ฑ ์ฒ๋ผ ํ์ํ ๋ถ๋ถ๋ถ๋ถ ๋ณ๊ฒฝํ ์ ์์
- ์) ๊ตฌ๊ธ ์ง๋, Gmail, ๊ตฌ๊ธ ์บ๋ฆฐ๋
- ๊ด๋ จ๊ธฐ์ : React, Vue.js → ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์
SSR ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง
- HTML ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์์ ๋ง๋ค์ด์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ
- ์ฃผ๋ก ์ ์ ์ธ ํ๋ฉด์ ์ฌ์ฉ
- ๊ด๋ จ๊ธฐ์ : JSP, ํ์๋ฆฌํ → ๋ฐฑ์๋ ๊ฐ๋ฐ์
๐ต๏ธโ๏ธ ์๋ฐ ๋ฐฑ์๋ ์น ๊ธฐ์ ์ญ์ฌ
1997, ์๋ธ๋ฆฟ
- HTML ์์ฑ์ด ์ด๋ ต๋ค.
1999, JSP
- HTML ์์ฑ ํธ๋ฆฌ
- ๋น์ฆ๋์ค ๋ก์ง๊น์งํด์ ๋ง์ ์ญํ ๋ด๋น
- ์ ์ง๋ณด์ ์ด๋ ค์
์๋ธ๋ฆฟ, JSP ์กฐํฉ์ MVC ํจํด ์ฌ์ฉ
- ๋ชจ๋ธ, ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ์ญํ ์ ๋๋ ์ ๊ฐ๋ฐ
2000๋ ์ด ~ 2010๋ ์ด
- ์๋ง์ MVC ํ๋ ์์ํฌ๊ฐ ์๊น
- MVC ํจํด ์๋ํ, ๋ณต์กํ ์น ๊ธฐ์ ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ค์ํ ๊ธฐ๋ฅ ์ง์
ํ์ฌ
- ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์คํ๋ง MVC
- ์คํ๋ง ๋ถํธ ๋ฑ์ฅ
- ์คํ๋ง ๋ถํธ - ์๋ฒ ๋ด์ฅ
- ๋น๋ ๊ฒฐ๊ณผ์ธ Jar์ WAS ์๋ฒ ํฌํจํ์ฌ ๋น๋ ๋ฐฐํฌ๋ฅผ ๋จ์ํ
(๊ณผ๊ฑฐ์๋ ์๋ฒ์ WAS ์ง์ ์ค์น, ์์ค์ฝ๋๋ฅผ ๋ฐ๋ก ๋น๋, Warํ์ผ์ ๋ง๋ค์ด์ ์ค์นํ WAS์ ๋ฐฐํฌ)
์ต์ ๊ธฐ์ - ์คํ๋ง ์น ๊ธฐ์ ์ ๋ถํ
- Web Servlet - Spring MVC
- Web Reactive - Spring WebFlux
๐ต๏ธโ๏ธ ์๋ฐ ๋ฐฑ์๋ ์น ๊ธฐ์ ์ญ์ฌ
JSP
- ์๋ ๋๋ฆผ, ๊ธฐ๋ฅ ๋ถ์กฑ
Freemarker, Velocity
- ์๋ ๋ฌธ์ ํด๊ฒฐ, ๋ค์ํ ๊ธฐ๋ฅ
Thymeleaf
- HTML ๋ชจ์ ์ ์งํ๋ฉด์ ๋ทฐ ํ ํ๋ฆฟ ์ ์ฉ ๊ฐ๋ฅ
- ์คํ๋ง MVC์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ํตํฉ
- ์ต์ ์ ์ ํ
- ์ฑ๋ฅ์ Freemarker, Velocity๊ฐ ๋ ๋น ๋ฆ
์ฐธ์กฐ
๊น์ํ, ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์
https://docs.oracle.com/javaee/5/tutorial/doc/bnafe.html
CDN - https://library.gabia.com/contents/infrahosting/8985/
CDN - https://server-talk.tistory.com/52
'Programming > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Web server failed to start. Port 8080 was already in use. ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2022.02.04 |
---|---|
[Spring] ํ๋ก์ ํธ ์์ฑ (0) | 2022.02.04 |
[Spring] ๋น ์ค์ฝํ (0) | 2022.01.27 |
[Spring] ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ (0) | 2022.01.18 |
[Spring] ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ (0) | 2022.01.14 |