1. ์น
WEB์ด๋?
World Wide Web์ ์ค์๋ง๋ก, ์ธํฐ๋ท์์์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ ๊ฒ์ํ ์ ์๋ ํ์ดํผํ ์คํธ ์์คํ ์ด๋ค.
์นํ์ด์ง, ์น์ฌ์ดํธ, ์น์ฑ ๋ฑ ๋ค์ํ ํํ์ ๋์งํธ ์ฝํ ์ธ ๋ฅผ ํฌํจํ๋ฉฐ, ์ด๋ฌํ ์ฝํ ์ธ ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ๊ทผํ๊ณ ๊ฒ์ํ ์ ์๋ค.
WEB์ ๊ตฌ์ฑ
URI (Uniform Resource Identifier)
๋ฆฌ์์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํด ํตํฉ๋ ํ๊ธฐ๋ฒ
URL (Uniform Resource Locator)๊ณผ URN (Uniform Resource Name)์ ๊ฐ๋ ์ ํฌํจํ๋ค.
URL์ ๋ฆฌ์์ค์ ์์น๋ฅผ ์ง์ ํ๊ณ , URN์ ๋ฆฌ์์ค์ ์ด๋ฆ์ ์ง์ ํ๋ค.
์์
http://oasis@www.blog.com:8080/search/1?debug=true&limit=10
URI Scheme: http -> URI ํ๋กํ ์ฝ ์ง์
์ฌ์ฉ์: oasis
ํธ์คํธ๋ช : www.blog.com -> URI์์ ์ ์ํ๋ ค๋ ์๋ฒ ์ฃผ์
ํฌํธ๋ฒํธ: 8080
ํจ์ค: /search/1 -> ์๋ฒ์์ ์์ฒญ๋ ๋ฆฌ์์ค ๊ฒฝ๋ก
์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(์ฟผ๋ฆฌ ๋ฌธ์์ด): debug=true&limit=10 -> URI์ ์ถ๊ฐ์ ์ธ ๋งค๊ฐ๋ณ์ ์ ๋ฌ
์๋๊ฒฝ๋ก์์ ์ ๋ ๊ฒฝ๋ก๋ก์ ๋ณํ
์๋๊ฒฝ๋ก: ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ์์น๋ฅผ ํํํ๋ ๋ฐฉ์
์ ๋๊ฒฝ๋ก: ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ์์น๋ฅผ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ถํฐ ์ ์ฒด ๊ฒฝ๋ก๋ก ํํํ๋ ๋ฐฉ์
๐ ์์์ ์ /foo/bar
์๋ ๊ฒฝ๋ก | ์ ๋ ๊ฒฝ๋ก |
hoge | /foo/bar/hoge |
hoge/fuga | /foo/bar/hoge/fuga |
./hoge | /foo/bar/hoge |
../hoge | /foo/hoge |
../hoge/fuga | /foo/hoge/fuga |
../../foge | /foge |
./: ํ์ฌ ๋๋ ํ ๋ฆฌ
../: ์์ ๋๋ ํฐ๋ฆฌ
URI์์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์
์ํ๋ฒณ (๋์๋ฌธ์): A-Z, a-z
์ซ์: 0-9
์ผ๋ถ ํน์๋ฌธ์: - (ํ์ดํ), _ (๋ฐ์ค), . (๋ง์นจํ), ~ (๋ฌผ๊ฒฐํ์)
์์ฝ ๋ฌธ์: ! $ & ' ( ) * + , ; = : @
URI ์ด์ค์ผ์ดํ ๋ฌธ์: %๋ฅผ ์ฌ์ฉํ ์ด์ค์ผ์ดํ ์ํ์ค (%HH ํ์)
HTTP (Hypertext Transfer Protocol)
์น ์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ
ํด๋ผ์ด์ธํธ์ ์์ฒญ๊ณผ ์๋ฒ์ ์๋ต์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์๊ฒ ์น ํ์ด์ง๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋ ์ฌ์ฉ๋๋ค.
HTTP๋ ๋ณด์์ ์ํ HTTPS๋ก ํ์ฅ๋ ์๋ ์๋ค.
ํด๋ผ์ด์ธํธ(Client): ์น ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ ์ฑ ๋๋ ๋ค๋ฅธ HTTP๋ฅผ ์ง์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ์๋ ์ ์ ๊ธฐ๊ธฐ
- URL์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์๋ฒ๋ก ๋ณด๋ธ๋ค.
- ํธ์คํธ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML๋ฌธ์๋ฅผ ๋ ๋๋ง ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
ํธ์คํธ ์๋ฒ(Host Server): ์น ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ์์คํ
๋๋ ์๋ฒ
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋น ์์ฒญ์ ๋ฐ๋ผ ์ ์ ํ ์๋ต(ex. HTML)์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค.
์์ฒญ(Request): ํด๋ผ์ด์ธํธ๊ฐ ํธ์คํธ ์๋ฒ๋ก ๋ณด๋ด๋ ๋์
- ๋ณดํต URL์ ํตํด ๋ชฉ์ ๋ฆฌ์์ค๋ฅผ ์ง์ ํ๊ณ , HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ข ๋ฅ๋ฅผ ์ ์ํ๋ค.
* ๋ชฉ์ ๋ฆฌ์์ค: HTTP์์ฒญ์ ํตํด ์ ๊ทผํ๋ ค๋ ๋์ ๋ฆฌ์์ค
์๋ต(Response): ํธ์คํธ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๋ ๊ฒฐ๊ณผ
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ ์์ฑ๋๋ฉฐ, HTTP ์ํ ์ฝ๋(200 OK, 404 Not Found ๋ฑ)์ ํจ๊ป ์๋ต ํค๋ ๋ฐ ๋ณธ๋ฌธ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋๋ค.
HTTP์ ์ฃผ์ ํน์ง
- TCP/IP ๊ธฐ๋ฐ
- ์์ฒญ/์๋ตํ ํ๋กํ ์ฝ
- ๋๊ธฐํ ํ๋กํ ์ฝ -> ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ํด๋น ์์ฒญ์ด ์ฒ๋ฆฌ๋์ด ์๋ต์ด ๋์ฐฉํ ๋๊น์ง ๋๊ธฐํ๋ค.
- Stateless -> ๊ฐ๊ฐ์ ์์ฒญ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ , ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ์ ์ฅํ์ง ์๋๋ค.
* ์ด์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ: ์ฟ ํค, ํ ํฐ
HTTP Message Format
๋ณดํต Header์ Body๋ก ๊ตฌ์ฑ๋์ด์๋ค๊ณ ํ๋ค.
๐ข HTTP ํค๋ ์ข ๋ฅ
Request Headers: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ผ ๋ ์์ฒญ์ ๊ดํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด ์ ๋ฌ
Response Headers: ํน์ ์๋ต์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด ์ ๋ฌ
General Headers: ์์ฒญ๊ณผ ์๋ต ๋ชจ๋์ ์ ์ฉ๋๋ ํค๋, ์ผ๋ฐ์ ๋ฉ์์ง ์์ฑ์ ๊ด๋ จ๋ ์ ๋ณด ์ ๋ฌ
Representation Headers: ์๋ต์ ํํ๊ณผ ๊ด๋ จ๋ ์ ๋ณด ์ ๋ฌ
๐ Request Header
๐ Response Header
HTTP Method
๋ฉ์๋ | ์๋ฏธ |
GET | ๋ฆฌ์์ค ์ทจ๋ |
POST | ๋ฆฌ์์ค์ ์์ฑ, ๋ฆฌ์์ค ๋ฐ์ดํฐ ์ถ๊ฐ, ๊ธฐํ ์ฒ |
PUT | ๋ฆฌ์์ค ๊ฐฑ์ , ๋ฆฌ์์ค ์์ฑ |
DELETE | ๋ฆฌ์์ค ์ญ์ |
HEAD | ๋ฆฌ์์ค์ ํค๋ ์ทจ๋ |
OPTIONS | ๋ฆฌ์์ค๊ฐ ์ง์ํ๋ ๋ฉ์๋์ ์ทจ๋ |
TRACE | ์๊ธฐ ์์ ์ผ๋ก ์์ฒญ๋ ๋ฉ์์ง๋ฅผ ๋ฐํํ์ฌ ํ ์คํธ |
CONNECT | ํ๋ก์ ๋์์ ํตํด ํฐ๋ ์ ์ ์ค์ |
HTTP ๋ฉ์๋์ CRUD
CRUD๋ช | ์๋ฏธ | ๋ฉ์๋ |
Create | ์์ฑ | POST/PUT |
Read | ์ฝ๊ธฐ | GET |
Update | ๊ฐฑ์ | PUT |
Delete | ์ญ์ | DELETE |
HTML (Hypertext Markup Language)
์น ํ์ด์ง๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋งํฌ์ ์ธ์ด
์น ํ์ด์ง์ ๊ตฌ์กฐ, ๋ด์ฉ, ์์์ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํด์ํ์ฌ ์น ํ์ด์ง๋ฅผ ํ์ํ๋ค.
์น์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์๋ก, ํ ์คํธ, ์ด๋ฏธ์ง, ๋งํฌ, ํ ์ด๋ธ ๋ฑ ๋ค์ํ ์์๋ฅผ ํฌํจํ ์ ์๋ค.
์น์ ๊ธฐ์ ์ ํน์ง 2๊ฐ์ง
๐ Hypermedia System (ํ์ดํผ๋ฏธ๋์ด ์์คํ )
- ์น์ ๊ตฌ์ฑํ๋ ๋ฆฌ์์ค๋ค์ด ํ์ดํผ๋งํฌ(Hyperlink)๋ฅผ ํตํด ์๋ก ์ฐ๊ฒฐ๋์ด ์๊ณ , ๋ค์ํ ๋ฏธ๋์ด ํ์ ์ ๋ฆฌ์์ค๋ฅผ ํฌํจํ๊ณ ์๋ค.
- ์ ๋ณด์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ํํํ๊ณ , ์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค ์ฌ์ด๋ฅผ ํ์ํ๋ฉฐ ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ค.
๐ Distributed System (๋ถ์ฐ ์์คํ )
- ์น์ ๋งค์ฐ ํฐ ๊ท๋ชจ์ ๋คํธ์ํฌ์ด๋ฉฐ, ์๋ง์ ์ฌ์ฉ์์ ๋ฆฌ์์ค๊ฐ ๋์์ ์กด์ฌํ๊ณ ์ํธ์์ฉํ๋ค.
- ์น์ ๋ถ์ฐ ์์คํ ์ ๊ธฐ์ ๊ณผ ์ํคํ ์ฒ๋ฅผ ํ์ฉํ์ฌ ํ์ฅ ๊ฐ๋ฅํ ์๋ฒ ๊ตฌ์กฐ, ๋คํธ์ํฌ ํต์ ๋ฐ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ๊ตฌ์ฑํ๋ค.
- ์น์ ๋ง์ ์์ ์ฌ์ฉ์์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
2. Web Application
Web Application Architecture
์ ์ฒด ํ๋ฆ
1. DNS(Domain Name System)
- ๋๋ฉ์ธ ์ด๋ฆ๊ณผ IP ์ฃผ์ ๊ฐ์ ๋งคํ์ ๋ด๋นํ๋ ์์คํ
- ์ฌ์ฉ์๊ฐ ๋๋ฉ์ธ ์ด๋ฆ์ ์ ๋ ฅํ๋ฉด DNS๋ ํด๋น ๋๋ฉ์ธ์ IP ์ฃผ์๋ฅผ ์ฐพ์์ ์ฌ์ฉ์์ ์์ฒญ์ ํด๋น IP ์ฃผ์๋ก ์ ๋ฌํ๋ค.
- ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํ์ฌ ์ธํฐ๋ท์์ ํน์ ์๋ฒ๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
2. ๋ก๋ ๋ฐธ๋ฐ์(Load Balancer)
- ์ฃผ๋ก ์ํ์ ํ์ฅ์ ๋ค๋ฃฌ๋ค.
- ์ฌ๋ฌ ๋์ ์๋ฒ ์ฌ์ด์ ๋ค์ด์ค๋ ํธ๋ํฝ์ ๊ท ํ ์๊ฒ ๋ถ์ฐ์ํค๋ ์ญํ ์ ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ์๋ก๋ฅผ ๋ฏธ๋ฌ๋ง ํ๋ ์ฌ๋ฌ ๊ฐ์ ๋ณต์ฌ๋ณธ ํํ๋ก ์กด์ฌํ๋ฉฐ, ๊ฐ ์๋ฒ๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์์
์ ๋ถ์ฐ์ํด์ผ๋ก์จ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ค.
3. ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ(Web App Servers)
- ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํด๋น ์์ฒญ์ ๋ํ ์๋ต์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค.
- ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์ ์๋ฒ, ์์ ํ ๋ฑ๊ณผ ๊ฐ์ ๋ฐฑ์๋ ์ธํ๋ผ๋ฅผ ์ฐธ์กฐํ๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์์ ์ฐ๊ฒฐ๋ ์ต์ํ ๋ ๊ฐ์ ์๋ฒ๊ฐ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
4. ๋ฐ์ดํฐ๋ฒ ์ด์ค(Databases)
- ๊ตฌ์ฑ, ์ถ๊ฐ, ๊ฒ์, ์
๋ฐ์ดํธ, ์ญ์ ๋ฐ ์ฐ์ฐ ์ํ์ ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค.
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ์ง์ ์์
์๋ฒ์ ์ํธ์์ฉํ๋ค.
5. ์บ์ฑ ์๋น์ค(Caching Service)
- ๋ฐ์ดํฐ์ ์ ์ฅ๊ณผ ๊ฒ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ค.
- ์ฌ์ฉ์๊ฐ ์๋ฒ์์ ์ผ๋ถ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋, ์ด ์์ ์ ๊ฒฐ๊ณผ๋ ์บ์๋ก ์ ์ฅ๋๋ค. ๋ฐ๋ผ์ ์ดํ์ ์์ฒญ์ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ค.
- ์ด์ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ์ฌ ์ฐ์ฐ์ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๊ฒ ํด ์ค๋ค.
+) ํด๋น ์๋น์ค๊ฐ ํจ๊ณผ์ ์ธ ๊ฒฝ์ฐ
- ์ฐ์ฐ์ด ๋๋ฆฐ ๊ฒฝ์ฐ
- ์ฐ์ฐ์ด ์ฌ๋ฌ ๋ฒ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ
- ํน์ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ ๊ฒฝ์ฐ
6a. ์์
ํ(Job Queue, ์ ํ ์ฌํญ)
- ์์
์ ์ผ์์ ์ผ๋ก ์ ์ฅํ๊ณ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ๋น๋๊ธฐ์ ์ผ๋ก ๋์๋๋ค.
- ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฑฐ๋ ๋์ ๋ฆฌ์์ค๋ฅผ ์๊ตฌํ๋ ์ฆ์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์์ ์ผ ๊ฒฝ์ฐ, ์์ ์ ์์ ํ์ ์ถ๊ฐํ๊ณ ๊ฐ๋ฅํ ์ํฉ์ด ์ค๋ฉด ์์ ์ ์ฒ๋ฆฌํ๋ค.
6b. ์์ ์๋ฒ(Job servers)
- ์น ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ ์์
์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์๋ฒ์
๋๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์์ ์ ๋ด๋นํ๋ฉฐ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ํจ๊ป ์๋ํ์ฌ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
- ex) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ์บ์ ์๋ฒ, ์ธ๋ถ API ์๋ฒ
7. ์ ์ฒด ํ
์คํธ ๊ฒ์ ์๋น์ค(Full-Text Search Service, ์ ํ ์ฌํญ)
- ํ
์คํธ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ์์ ํจ๊ณผ์ ์ธ ๊ฒ์์ ์ ๊ณตํ๋ ์๋น์ค
- ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธ ๊ฒ์ ๊ธฐ๋ฅ ๋๋ ์์ฒญ์ ์ง์ํ๊ณ ๊ฐ์ฅ ๊ด๋ จ์ฑ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ์กํ๋ค. ์ด๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋๋์ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ์์ธํํ๊ณ , ๊ฒ์์ด์ ๋ํด ๋น ๋ฅด๊ฒ ๋งค์นญ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
8. ์๋น์ค(Services)
- ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ํน์ ์์ค์ ๋๋ฌํ๋ฉด ๋ณ๋์ ์ฑ ํํ๋ก ์๋น์ค๊ฐ ์์ฑ๋๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ค๋ฅธ ์๋น์ค ๊ฐ์ ์ํธ์์ฉ์ด ์ด๋ฃจ์ด์ง๋ค.
9c. ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(Data Warehouse)
- ์ฌ๋ฌ ์์ค์์ ์ถ์ถํ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ๊ณ ์ ์ฅํ์ฌ ๋ถ์๊ณผ ์์ฌ ๊ฒฐ์ ์ ํ์ฉํ๋ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ ์์คํ
- ์ฃผ๋ก ๋น์ฆ๋์ค ์ธํ
๋ฆฌ์ ์ค์ ๋ฐ์ดํฐ ๋ถ์์ ์ฌ์ฉ๋๋ฉฐ, ๋๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ํํํ์ฌ ์ฌ์ฉ์์๊ฒ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
๋๋ถ๋ถ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ์์ง, ์ ์ฅ ๋ฐ ๋ถ์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์์ ์ ํฌํจํ๋ค.
์ด๋ฌํ ๊ณผ์ ์ ์ธ ๊ฐ์ง ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋ค.
1) ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ์ ํก์์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์คํธ๋ฆฌ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ Data "firehose"๋ก ์ ์ก๋๋ค.
2) ๊ฐ๊ณต๋ ์๋ณธ ๋ฐ์ดํฐ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง๋ก ์ ์ก๋๋ค.
3) ๊ฐ๊ณต๋ ๋ฐ์ดํฐ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก ์ ์ก๋๋ค.
* ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค(Business Intelligence, BI): ์กฐ์ง์ด ๋ด๋ถ ๋ฐ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ์์ง, ๋ถ์ํ์ฌ ์์ฌ ๊ฒฐ์ ์ ๋์์ ์ฃผ๋ ํ๋ก์ธ์ค์ ๋๊ตฌ
10. Cloud Storage
- ์ธํฐ๋ท์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌ ๋ฐ ๋ฐฑ์ ํ๋ ์๋น์ค
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ์ฌ์ฉ์๋ ์ธํฐ๋ท์ ํตํด ์ธ์ ๋ ์ง ํ์ํ ๋ฐ์ดํฐ์ ์ก์ธ์ค ํ ์ ์๋ค.
11. CDN(Content Delivery Network)
- ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์๋ฒ ๋คํธ์ํฌ.
- HTML ํ์ผ, CSS ํ์ผ, JavaScript ํ์ผ ๋ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์กํ๋ค. (์๋๋ ์น์๋ฒ์์ ์ ๊ณต)
- ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ์ฌ๋ฌ ์๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ฌํ ์๋ฒ๋ ์ฝํ ์ธ ์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๊ณ ์ ์งํ๋ค.
- CDN์ ์ฌ์ฉ์์ ์ง๋ฆฌ์ ์์น๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์์ ์ฝํ
์ธ ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์ง์ฐ์ ์ต์ํํ๋ค.
- ์น ์ฝํ
์ธ ๋ฅผ ์ต์ข
์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
3. Servlet
Web Server, Web Application Server
๐ Web Server
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋น ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์น ํ์ด์ง, ํ์ผ, ๋ฐ์ดํฐ ๋ฑ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด๋ ์์คํ
- ์ธํฐ๋ท์์์ ์น ํ์ด์ง๋ฅผ ํธ์คํ
ํ๊ณ , ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ํต์ ํ๋ฉฐ, ์ฃผ๋ก HTML, CSS, JavaScript, ์ด๋ฏธ์ง, ๋์์ ๋ฑ์ ์ ์ ์ธ ์น ์ฝํ
์ธ ๋ฅผ ์ ๊ณตํ๋ค.
๐ ๊ธฐ๋ฅ
1. ์ ์ ์ธ ์ฝํ ์ธ ์ ๊ณต
WAS๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์์์ ์ ๊ณตํ๋ค.
2. ๋์ ์ธ ์ฝํ ์ธ ์ ๊ณต์ ์ํ ์์ฒญ ์ ๋ฌ
ํด๋ผ์ด์ธํธ์ ์์ฒญ(Request)์ WAS์ ๋ณด๋ด๊ณ , WAS๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ(์๋ต, Response)ํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ฏธํ๋ค.
๐ ์์
Apache Server, Nginx
๐ Web Application Server (WAS)
DB ์กฐํ๋ ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ์๊ตฌํ๋ ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง Application Server
- ์น ์ปจํ ์ด๋, ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
๐ ๊ธฐ๋ฅ
1. ์น ์ ํ๋ฆฌ์ผ์ด์ ์คํ ํ๊ฒฝ๊ณผ DB ์ ์ ๊ธฐ๋ฅ ์ ๊ณต
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ JSP ์ปจํ ์ด๋๋ฅผ ํฌํจํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ์ง์ํ๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ์ HTTP ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๊ณ , JSP ์ปจํ ์ด๋๋ JSP ํ์ด์ง์ ์คํ๊ณผ ๋์ ์ธ HTML ์์ฑ์ ์ฒ๋ฆฌํ๋ค.
2. ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
(๋
ผ๋ฆฌ์ ์ธ ์์
๋จ์) ๊ด๋ฆฌ ๊ธฐ๋ฅ
ํธ๋์ญ์ ์ ์์, ์ปค๋ฐ(ํ์ ), ๋กค๋ฐฑ(์ทจ์)๊ณผ ๊ฐ์ ๊ด๋ฆฌ ์์ ์ ์ํํ์ฌ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ์ ์ง๋ค
3. ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ํ
๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์คํ ํ๊ฒฝ์ ์ ๊ณตํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
๋น์ฆ๋์ค ๋ก์ง์ ์ํ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฒญ์ ๋ฐ๋ผ ์ด๋ฃจ์ด์ง๋ค.
๐ ์์
Tomcat, Jeus
Web Server๋ฅผ Client์ ์ํตํ๋ ์๋จ์ ๋ฐฐ์นํ์ฌ ๋น ๋ฅด๊ฒ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ค. (๋ ธ์ถ๋๋ ๋ฐ์ดํฐ)
๊ทธ ๋ค์ WAS๋ฅผ ๋ฐฐ์นํ์ฌ DB์ ์ฐ๊ฒฐ๋ ๋์ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ค. (๋ ธ์ถ๋์ง ์๋ ๋ฐ์ดํฐ)
=> WAS๊ฐ ์ค์ Web Server๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์๋๋ผ ์น ์๋ฒ์ ํ์ ํ๋ฉฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ฑฐ๋ ์น ์๋ฒ ๊ธฐ๋ฅ์ ์ํํ๋ ํ๋ฌ๊ทธ์ธ, ๋ชจ๋ ๋ฑ์ ํฌํจํ์ฌ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ด๋ค.
Servlet์ด๋?
Java ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์๋ฒ ์ธก ์ปดํฌ๋ํธ
- ์น ์ปจํ ์ด๋์ ์กด์ฌํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์ฒ๋ฆฌํ ํ์ ์๋ต์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ค.
MVC Pattern in Servlet
Model - ๋ชจ๋ธ์ ์๋ฐ ๊ฐ์ฒด ๋๋ Pojo๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ค.
View - ๋ชจ๋ธ์ด ๋ด๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค. (JSP)
Controller - ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋งค๊ฐ์ฒด์
๋๋ค. ์ฌ์ฉ์์ ์
๋ ฅ/์์ฒญ์ ๋ฐ์ ๋ชจ๋ธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํด ์ฃผ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๋ทฐ๋ฅผ ์
๋ฐ์ดํธํ๋ค. (Servlet)
Servlet์ Life Cycle
1. Web Server๋ ์น ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ๋๋ค.
2. Web Server๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ(Request)์ WAS์ ๋ณด๋ธ๋ค.
3. WAS๋ ๊ด๋ จ๋ Servlet์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
4. WAS๋ web.xml์ ์ฐธ์กฐํ์ฌ ํด๋น Servlet์ ๋ํ Thread๋ฅผ ์์ฑํ๋ค. (Thread Pool ์ด์ฉ)
-> ๋งค ์์ฒญ์ ๋ณ๊ฐ์ ์ค๋ ๋์์ ๋์ํ๋ค.
5. HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ Servlet์ ์ ๋ฌํ๋ค.
5-1. Thread๋ Servlet์ service() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. (๋งค๋ฒ ์๋ก์ด Servlet ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ X)
5-2. service() ๋ฉ์๋๋ ์์ฒญ์ ๋ง๊ฒ doGet() ๋๋ doPost() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- protected doGet(HttpServletRequest request, HttpServletResponse response)
6. doGet() ๋๋ doPost() ๋ฉ์๋๋ ์ธ์์ ๋ง๊ฒ ์์ฑ๋ ์ ์ ํ ๋์ ํ์ด์ง๋ฅผ Response ๊ฐ์ฒด์ ๋ด์ WAS์ ์ ๋ฌํ๋ค.
7. WAS๋ Response ๊ฐ์ฒด๋ฅผ HttpResponse ํํ๋ก ๋ฐ๊พธ์ด Web Server์ ์ ๋ฌํ๋ค.
8. ์์ฑ๋ Thread๋ฅผ ์ข
๋ฃํ๊ณ , HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ค.
SpringBoot์์ Servlet์ ์ค์ ํ๋ ๋ฐฉ๋ฒ
๐ web.xml ์ฌ์ฉ
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>comingsoon</servlet-name>
<servlet-class>mysite.server.ComingSoonServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>comingsoon</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
src/main/webapp/ ๋๋ ํฐ๋ฆฌ์ web.xmlํ์ผ์ ์ถ๊ฐํ์ฌ, ํ์ํ Servlet, Filter, Listener ๋ฑ์ ์ค์ ํ๋ค.
๐ ์ด๋ ธํ ์ด์ ์ฌ์ฉ
@WebServlet, @WebFilter, @WebListener ๋ฑ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ Servlet, Filter, Listener๋ฅผ ์ค์ ํ ์ ์๋ค.
ํด๋น ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ Servlet ํด๋์ค์ ์ง์ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํ๋ค.
@WebServlet(value = "/*", loadOnStartup = 1)
public class TestServlet extends HttpServlet {
....
}
๐WebApplicationInitializer ์ฌ์ฉ
public class KdtWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
ServletRegistration.Dynamic servletRegistration = servletContext.addServlet("test", new TestServlet());
servletRegistration.addMapping("/*");
servletRegistration.setLoadOnStartup(1);
}
}
'๐๏ธ ํ๋ก๊ทธ๋๋จธ์ค ๋ฐ๋ธ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SpringBoot Part2-2 (0) | 2023.07.03 |
---|---|
SpringBoot Part2-1 (0) | 2023.06.27 |
SpringBoot Part1-5 (0) | 2023.06.26 |
SpringBoot Part1-4 (0) | 2023.06.23 |
SpringBoot Part1-3 (0) | 2023.06.22 |
๋๊ธ