D+66
- Web Architectures -
(Web Service,
Keywords about Web Service Architecture,
HTTP, AJAX, )
Web Service Architecture
์น ์๋น์ค ์ํคํ ์ฒ๋ ํฌ๊ฒ ํด๋ผ์ด์ธํธ, ์๋ฒ, DB๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ, ์๋ฒ DB๋ฅผ ํ๋ํ๋ ์ธ๋ฐํ๊ฒ ์์๋ณด๊ธฐ ์
๊ฐ์๊ฐ ํ๋ ์ญํ ์ ๋ํด ์ ๋ฐ์ ์ผ๋ก ์ดํดํด์ผ ํ ํ์๊ฐ ์๋ค.
๋จผ์ , ํด๋ผ์ด์ธํธ๋ ์ ์ ์ ์ํธ์์ฉ์ ๋ด๋นํ๋ ๊ณณ์ผ๋ก
์ฌ์ฉ์๊ฐ ์์ฒญ์ ํ๋ ์ฃผ์ฒด๋ผ๊ณ ํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์์ ์ ์ ๊ฐ ์๊ตฌํ ์์ฒญ์ ์ฒ๋ฆฌํด ๋ต๋ณ์ ์ฃผ๋ ๊ณณ์ผ๋ก
๋ฆฌ์์ค ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ณณ์ผ๋ก ์์์ ์ ๊ณตํด ์ฃผ๋ ์ฃผ์ฒด๋ผ๊ณ ํ ์ ์๋ค.
๋ง์ง๋ง์ผ๋ก DB๋ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํ๋ ๊ณณ์ผ๋ก ์ผ์ข ์ ์ ์ฅ์๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์ค๋ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ด๊ณ๋ฅผ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์ฌ์ฉ๋๋ ๊ด๋ จ ํค์๋๋ค์ ๋ํด ์์์ผ๋ง ํ๋ค.
Keywords about Web Service Architecture
Browser
๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์๋ฃ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ ์ฐ๋ฆฌ๊ฐ ์ฝ๊ฒ ๋ณผ ์ ์๋๋ก ํ๋ ์ํํธ์จ์ด์ด๋ค.
์ปดํจํฐ๋ 2์ง์ ๋ง์ ์์๋ฃ์ง๋ง ์ฐ๋ฆฌ๊ฐ ํํ์ด์ง๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ ์ฝ๋๋ 2์ง์๊ฐ ์๋๋ค.
ํ์ง๋ง ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ ์๋๋๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ ๊ฒ์
๋ฐ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์๋ฒ๋ก ๋ณด๋ผ ๋ ์๋ฒ์์ ์์๋ค์ ์ ์๊ฒ ํ๋ฉฐ,
๋ ๊ทธ์ ๋ฐ๋ฅธ ์๋ต ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์์๋ณผ ์ ์๋๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
Server
์๋ฒ๋ ์์์ ์ ๊ณตํด์ฃผ๋ ์ฃผ์ฒด๋ก ์ฌ์ด ์๋ฅผ ๋ค์๋ฉด ์ปคํผ ์ฃผ๋ฌธ์ ๋ฐ๋ ์ ์์ด๋ผ๊ณ ์๊ฐํ ์ ์์ ๊ฒ ๊ฐ๋ค.
์๋์ด ์ ์์๊ฒ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ฉด ์ฃผ๋ฌธ์ ๋ฐ์ ์ ์์ ์ปคํผ ์๋๋ฅผ ๊ฐ์ ธ์์ ์ฃผ๋ฌธ๋ฐ์ ์ปคํผ๋ฅผ ์ ์ํ ํ์ ๋ค์ ์๋์๊ฒ ๊ฑด๋ฌ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ํ๋ฉด ์์ฒญ์ ๋ฐ์ ์๋ฒ๋
DB์ ํด๋นํ๋ ๊ฐ์ ์ฐพ์ ๋ค์ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ๋๋ ค์ฃผ๋ ์ญํ ์ ํ๊ฒ ๋๋ค.
API
์์ ์ค๋ช ์์ ์ ์ ์๋ฏ์ด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฃผ๋ฌธ์ ํตํด ๊ฐ์ ์ฃผ๊ฒ ๋๋๋ฐ
์ด๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฆฌ์์ค๋ค์ ์ ํ์ฉํ ์ ์๋๋ก ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด ์ฃผ๊ฒ ๋๋๋ฐ
์ด๊ฒ์ด ๋ฐ๋ก API์ด๋ค.
๋ง์น ์ปคํผ์ ์์ด ์๋์๊ฒ ์ํํ ์ฃผ๋ฌธ์ ์ํด ๋ฉ๋ดํ์ ์ ๊ณตํด ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
HTTP (HyperText Transfer Protocol)
• ์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ํ๋กํ ์ฝ ( ํ๋กํ ์ฝ - ๊ท์ฝ, ๊ท์น )
• ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์
์๋ ๋ฐฉ์
• ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์๋ ํญ์ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
• ๋ง์ฝ ํด๋ผ์ด์ธํธ์์ ๋ฉ์์ง๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ์ ์์๋ ํด๋น ๋ฉ์์ง๋ฅผ ์๋ต์ผ๋ก ๋๋ ค์ค๋ค.
• ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ๋ฉ์์ง๊ฐ ์์ ๊ฒฝ์ฐ์๋ ์๋ค๋ ์๋ต์ ๋ณด๋ด์ฃผ์ด์ผ ํ๋ค.
• ๋ฐ์ ์์ฒญ์ ๋ฌด์ํ ์ ์๋ค. (์๋ฌ ๋ฐ์)
๊ตฌ์ฑ
• ๊ฐ๊ฐ์ ์๋ต๊ณผ ์์ฒญ์ header์ body๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์์ฑ
• stateless
http์ ๊ฐ ์์ฒญ์ ๋ชจ๋ ๋ ๋ฆฝ์ ์ด๋ค.
๋ด๊ฐ ๋ง์ฝ ๋ฌด์ธ๊ฐ๋ฅผ ์์ฒญํ์ ๊ฒฝ์ฐ ์๋ฒ๋ ํด๋น ์์ฒญ์ ๋ํ ๊ฐ๋ง ์๋ตํ ๋ฟ
๋ด๊ฐ ์ด์ ์ ํ๋ ์์ฒญ์ ๊ทผ๊ฑฐ ์ผ์ ๋ค๋ฅธ ์๋ต์ ์ ์ํ ์ ์๋ค.
• connectionless
ํ ๋ฒ์ ์์ฒญ์ ํ ๋ฒ์ ์๋ต์ ํ ์ดํ์๋ ์ฐ๊ฒฐ์ด ๋๊ฒจ์ ๋ ์ด์ ์๋ต์ ์งํํ ์ ์๋ค.
๋ฉ์๋
• get - ์๋ฒ์ ์์์ ์์ฒญ
• post - ์๋ฒ์ ์์์ ์์ฑ
• put - ์๋ฒ์ ์์์ ์์
• delete - ์๋ฒ์ ์์์ ์ ๊ฑฐ
AJAX (Asynchronous Javascript And XML)
AJAX๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๊ฒ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ด๋ฉฐ,
์ด๋์ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด ์ ํ(ํ์ด์ง ๊น๋นก์)์ ํตํด์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ์ ํํด ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ
๋ฐ๊พธ๊ณ ์ ํ๋ ๋ถ๋ถ๋ง ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ํ์ฉํด ๋ฐ๊ฟ ์ ์๋ค.
fetch
• fetch๋ ์๋ฒ๋ก๋ถํฐ ์์์ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํจ์
fetch ๋ง๊ณ ๋ ์๋ ๊ฒ์ธ๊ฐ?
๊ฐ๋จํ๊ฒ ๋ต์ ๋จผ์ ๋งํ์๋ฉด ์๋๋ค.
์๋ฒ๋ก๋ถํฐ ์์์ ๊ฐ์ ธ์ค๋ ๊ฒ์ fetch ๋ง๊ณ ๋ ์ฌ๋ฌ ๊ฐ๊ฐ ์์ผ๋ฉฐ,
์ฌ์ง์ด fetch๋ ๊ฐ์ฅ ๋์ค์ ๋ฑ์ฅํ ์ด์ ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋ช ๊ฐ์ง๋ฅผ ์ดํด๋ณด์๋ฉด
XHR๊ณผ jQuery๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ๋ก๋ถํฐ ์์์ ๋ฐ์์ฌ ์ ์๋ ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค.
ํ์ง๋ง ์ฌ์ฉํ๋ ๊ณผ์ ์์ ๋ณต์กํจ์ ๋๋ผ๊ฒ ๋ ๊ฐ๋ฐ์๋ค์
XHR๊ณผ jQuery์ฒ๋ผ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์์ผ๋ฉด์ ์ข ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ์กฐ์์ด ๊ฐ๋ฅํ
fetch๋ฅผ ๋ฑ์ฅ์ํค๊ฒ ํ ๊ฒ์ด๋ค.
fetch ์ดํดํ๊ธฐ
fetch('http://52.78.213.9:3000/messages') // fetch์์ url์ ๋ฐ๋๋ค.
.then(function(response) { // url์์ response๋ฅผ ์ผ๋จ ๋ฐ๋๋ค.
return response.json(); // response๋ฅผ jsonํ ์ํจ๋ค.
})
.then(function(json) {
// json ํํ๋ก ์ ๋ฌ๋ฐ์ ์๋ฒ๋ก๋ถํฐ์ ์๋ต
});
fetch์ ์ฌ์ฉ๋ฒ์ ๋จผ์ fetch๋ฅผ ํตํด url์ ๋ฐ์ ๋ค์,
url์์ response๋ฅผ ๋ฐ์์จ ๋ค์ response๋ฅผ jsonํ ์์ผ์ค๋ค.
jsonํ ์์ผ์ค ๋ค์์ ๋ด๊ฐ ๋ถ๋ถ์ ์ผ๋ก ๋ฐ๊พธ๊ณ ์ ํ๋ ๋ถ๋ถ์
ํจ์ํ์ ์ ์ ํ ๋ฃ์ด์ฃผ๋ฉด ์์ฑ์ด๋ค.
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+68] ์ฝ๋ฉ ํฌ๋ฆฌ์ค๋ง์ค ๐ ๐ป (0) | 2020.12.25 |
---|---|
[D+67] Browser Security (0) | 2020.12.24 |
[D+65] ์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ fetch (0) | 2020.12.23 |
[D+65] ๋น๋๊ธฐ ํธ์ถ์ ๋ํ ๋์ ์๊ฐ (0) | 2020.12.22 |
[D+64] ๋น๋๊ธฐํธ์ถ๋ก ์์์ ์ดํ๊ธฐ (0) | 2020.12.21 |
๋๊ธ