๋ง์ฝ ์๋ฒ ์์ด ์ฑ ์์ ๋ชจ๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ์ด๋จ๊น? ์ ๋ณด๊ฐ ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค ์ฑ์ ์ ๋ฐ์ดํธํด์ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํด์ค์ผ ํ๊ณ , ๊ฒฐ์ ๊ฐ ํ์ํ ์ฑ์ด๋ผ๋ฉด ๊ฒฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ธฐ์ ๊ฒฐ์ ์ญ์ ๋ถ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์ด ์ฑ์ฒ๋ผ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ๋ ๊ณณ(์๋ฒ)๊ณผ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ณณ(์ฑ)์ ๋ถ๋ฆฌํ ๊ฒ์ 2-Tier Architecture, ํด๋ผ์ด์ธํธ ์๋ฒ ์ํคํ ์ฒ๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์๋ฉด, ์๋(ํด๋ผ์ด์ธํธ)๊ณผ ์ง์(์๋ฒ)์ผ๋ก ์๊ฐํ๋ฉด ์๋์ด ์์์ ์ฃผ๋ฌธ(์์ฒญ)ํ๋ฉด ์ง์์ด ์์(์๋ต)์ ์๋นํ๋ฏ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ๋ ์ฌ์ด์ด๋ค.
์ฌ์ค ์๋ฒ๋ ๋ณดํต ๋ฆฌ์์ค๋ง ์ ๋ฌํ์ง ๋ฆฌ์์ค๋ ๋์ฒด๋ก ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ค.
์ด์ฒ๋ผ 2-Tier ์ํคํ
์ฒ์ DB๊ฐ ์ถ๊ฐ๋ ๊ฒ์ 3-Tier ์ํคํ
์ณ๋ผ๊ณ ํ๊ณ , ์๋ฒ์์ ์์ฒญํ๋ฉด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์๋ตํ๋ ์์ผ๋ก ํต์ ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ด์ผ ์๋ฒ๊ฐ ์๋ตํ๋ ์์ด๋ค.
ํ์ง๋ง ์์ฒญํ ๋ ์ง์ผ์ผํ๋ ์ฝ์์ด ๋ช ์๋๋ฐ ์ด๋ฅผ ํต์ ๊ท์ฝ(Protocol)์ด๋ผ ํ๋ฉฐ,
์น ์ฑ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ HTTP์ด๊ณ , HTTP๋ฅผ ์ด์ฉํด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง๋ฅผ HTTP Message๋ผ๊ณ ํ๋ค.
์ด๋ฐ ํ๋กํ ์ฝ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ ์ ๋์ด ์์ง ์๊ณ ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์์ผ๋ฉฐ, ์ด ๋ค์ํ ํ๋กํ ์ฝ๋ค์ด ์ง์ผ์ผํ ๊ฐ๊ฐ์ ๊ท์ฝ์ด ์กด์ฌํ๋ค.
์๋ฅผ ๋ค๋ฉด, ๋ฒ๊ฑฐํน์๊ฐ์ ํต์์ฐ ์ํผ๋ฅผ ์ํฌ๋ ์ง์์๊ฒ ์ง์ ์ฃผ๋ฌธํ๋ ์ง, ํค์ค์คํฌ๋ก ์ฃผ๋ฌธํ๋ ์ง ๋ฐฉ๋ฒ๋ง ๋ค๋ฅผ ๋ฟ, ํต์์ฐ ์ํผ๋ฅผ ์ฃผ๋ฌธํ๋ค๋ ๊ฒ ์์ฒด๋ ๋์ผํ๋ฏ์ด ํ๋กํ ์ฝ๋ ๊ฐ์ ์ผ์ ํ๊ธฐ ์ํด ๋ค์ํ ํ๋กํ ์ฝ์ด ์กด์ฌ ํ ์ ์๋ ๊ฒ์ด๋ค.
๋ช๊ฐ์ง ์ฃผ์ ํ๋กํ ์ฝ์ ์ด๋ ๊ฒ์ด ์๊ณ OSI 7 Layer ์ค ์ด๋ ๊ณ์ธต์ ์๋์ง ์๊ฐํ์๋ฉด,
ํ๋กํ ์ฝ ์ด๋ฆ | ์ค๋ช |
---|---|
TCP | HTTP, FTP ํต์ ๋ฑ์ ๊ทผ๊ฐ์ด ๋๋ ์๋ฐฉํฅ ์ธํฐ๋ท ํ๋กํ ์ฝ |
UDP | TCP์ ๋ค๋ฅด๊ฒ ํจ์ฌ ๋ ๋จ์ํ๊ณ ๋น ๋ฅด์ง๋ง, ์ ๋ขฐ์ฑ์ด ๋ฎ์ ๋จ๋ฐฉํฅ ์ธํฐ๋ท ํ๋กํ ์ฝ |
ํ๋กํ ์ฝ ์ด๋ฆ | ์ค๋ช |
---|---|
HTTP | ์น์์ HTML, JSON ๋ฑ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ |
HTTPS | HTTP์์ ๋ณด์์ด ๊ฐํ๋ ํ๋กํ ์ฝ |
FTP | ํ์ผ ์ ์ก ํ๋กํ ์ฝ |
SMTP | ๋ฉ์ผ์ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ |
SSH | CLI ํ๊ฒฝ์ ์๊ฒฉ ์ปดํจํฐ์ ์ ์ํ๊ธฐ ์ํ ํ๋กํ ์ฝ |
RDP | Windows ๊ณ์ด์ ์๊ฒฉ ์ปดํจํฐ์ ์ ์ํ๊ธฐ ์ํ ํ๋กํ ์ฝ |
WebSocket | ์ค์๊ฐ ํต์ , Push ๋ฑ์ ์ง์ํ๋ ํ๋กํ ์ฝ |
์ปดํจํฐ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋ ์ ํํ ์ฃผ๋ฌธ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ์ผ ํ๋๋ฐ ์๋ฒ๊ฐ ์ด๋ค ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋์ง ๋ชจ๋ฅด๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ์ ์๋ค.
๋ง์น ์๋น์ ๋ฉ๋ดํ์ฒ๋ผ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์ ํ์ฉํ ์ ์๊ฒ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๊ฐ ๋ฐ๋ก API์ด๋ค.
API๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฆฌ์์ค ์ข
๋ฅ๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ ์๋ฑํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์ง ์๊ฒ ๋์์ค๋ค.
์ด API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ด API๋ฅผ ์ด์ฉํด ์๋ง์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ์ ์๋๋ก API๋ฅผ ๊ตฌ์ถํด๋์ผ ํด๋ผ์ด์ธํธ๊ฐ API๋ฅผ ์ด์ฉํ ์ ์์ผ๋ฉฐ ๋ณดํต ์ธํฐ๋ท ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ HTTPํ๋กํ ์ฝ๋ก URL, URI ๋ฑ์ ์ฃผ์๋ฅผ ํตํด ์ ๊ทผ ํ ์ ์๋ค.
์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์ ํํ์ผ๋ฉด ?๋ก ์์ฑ(Parameters)์ ์ฌ์ฉํ๊ณ ๋ณต์์ ์์ฑ์ ํ ๋ฆฌ์์ค์ ์ ์ฉ์ํค๋ ค๋ฉด &๋ก ์ด์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ HTTP API ๋์์ธ์๋ ๋ง์น CRUD์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋(POST
, GET
, PUT
(PATCH
), DELETE
)๊ฐ ์กด์ฌํ๋ฉฐ ๊ฐ๊ฐ Create - POST
, Read - GET
, Update - PUT
(PATCH
), Delete - DELETE
์ ํด๋นํ๋ค.
URL์ Uniform Resource Locater์ ์ฝ์๋ก ๋คํธ์ํฌ ์ ํ์ผ์ ์์น๋ฅผ ๋ํ๋ธ๋ค.
URL์ scheme
, hosts
, url-path
๋ก ๊ตฌ๋ถํ ์ ์๋ค.
scheme
์ ํ๋กํ ์ฝ์ ๊ฒฐ์ ํ๋ค.hosts
๋ก๋ ์น์๋ฒ์ ์ด๋ฆ์ด๋ ๋๋ฉ์ธ IP๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ค์ง์ ์ธ ์ฃผ์๋ฅผ ๋ํ๋ธ๋ค.url-path
๋ ์น์๋ฒ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ถํฐ ํ์ผ์ ์์น๋ฅผ ๋ํ๋ธ๋ค.URI๋ URL์ ์ธ ๊ตฌ์ฑ์ query string ( = query )์ bookmark๋ฅผ ์ถ๊ฐํ ๊ตฌ์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
query
๋ ์น์๋ฒ์ ๋ณด๋ด๋ ์ถ๊ฐ์ ์ธ ์์ฒญ์ด๋ค.๋ธ๋ผ์ฐ์ ์ ๊ฒ์์ฐฝ์ ํด๋ฆญํ๋ฉด ๋ํ๋๋ ์ฃผ์๊ฐ ์๋ฐํ ๋งํ์๋ฉด URI ์ด๋ฉฐ, URI๊ฐ URL์ ํฌํจํ๋ ์์์ ๊ฐ๋
์ด๋ค. ๊ณ ๋ก URL๋ URI์ด๋ค
๋ ์ฐธ
์ด์ง๋ง, URI๋ URL์ด๋ค
๋ ๊ฑฐ์ง
์ด๋ค.
IP์ ํฌํธ๋ ์ํํธ์ ๋๋ก๋ช ์ฃผ์์ ๋ช ํธ์ค ์ ๋๋ก ๋น๊ตํ๋ฉด ์ผ์ถ ๋ง์ ๊ฒ ๊ฐ์๋ฐ, ํฌํธ์ ๊ฒฝ์ฐ ํด๋น ํฌํธ๊ฐ ์ฌ์ฉ ์ค์ด๋ฉด ํด๋น ํฌํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํฌํธ๋ 0๋ถํฐ 65,355๊น์ง ์ซ์๋ฅผ ์ฌ์ฉํ๋ฉฐ 0 ~ 1024๋ ์ฃผ์ ํต์ ์ ์ํ ๊ท์ฝ์ผ๋ก ์ด๋ฏธ ์ ํด์ ธ์๋ค.
๊ทธ ์ค ์ ๋ช
ํ ํฌํธ๋ก๋ 22: SSH, 80: HTTP, 443: HTTPS ๋ฑ์ด ์์ผ๋ฉฐ, ๋ ๋ง์ ํฌํธ๋ ์ฌ๊ธฐ์ ํ์ธ ๊ฐ๋ฅํ๋ค.
๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ์ ์ ์ํ ๋ IP ๋์ ์ฌ์ฉํ๋ ์ฃผ์๋ฅผ ๋๋ฉ์ธ์ด๋ผ ํ๋ค.
์์ IP๊ฐ ๋๋ก๋ช
์ฃผ์๋ผ๊ณ ๋น์ ํ์๋๋ฐ, DNS๋ ์ํธ๋ช
์ด๋ ๊ฑด๋ฌผ๋ช
์ ๋๋ก ์๊ฐํ๋ฉด ๋ ๋ฏ ํ๋ค.
'๋จ์ฐ ํ์๋ก ๊ฐ์ฃผ์ธ์.'์ '๋จ์ฐ๊ณต์๊ธธ 105๋ก ๊ฐ์ฃผ์ธ์.'๋ ๋งํ๋๊ฑด ๋ค๋ฅด์ง๋ง ์ด์จ๋ ๋จ์ฐ ํ์๋ก ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ชจ๋ IP ์ฃผ์๊ฐ ๋๋ฉ์ธ์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ๋ ์๋๊ณ ๋๋ฉ์ธ์ ์ผ์ ๊ธฐ๊ฐ ๋์ฌํด ์ฌ์ฉํ๊ธฐ์ ๋๋ฉ์ธ์ ์ฐ๊ฒฐ๋๋ IP๊ฐ ๋ฐ๋ ์ ์๋ค.
์ด ๊ฒฝ์ฐ ๋๋ฉ์ธ๊ณผ IP๋ฅผ ๋งค์นญ์์ผ์ฃผ๋ ๋คํธ์ํฌ ์๋ฒ๊ฐ DNS(Domain Network System)์ด๋ค.
DNS๋ ํธ์คํธ์ ๋๋ฉ์ธ์ IP์ ๋งค์นญํ๊ฑฐ๋ ๊ทธ ์ญ์ผ๋ก IP์ ๋๋ฉ์ธ์ ๋งค์นญํ๋ DB ์์คํ
์ด๋ค.
๋ง์ฝ ๋ด๊ฐ ํฌ๋กฌ์ด๋ผ๋ ํด๋ผ์ด์ธํธ
์ ๊ฒ์์ฐฝ์ naver.com
์ ์
๋ ฅํ๋ฉด DNS๊ฐ ์ฐ๊ฒฐ๋ IP์ฃผ์์ธ 125.209.222.141
์ ์ฐพ์ ํด๋น ์ฃผ์์ ํด๋นํ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ ํด๋ผ์ด์ธํธ - ์๋ฒ ํต์ ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฌ์ค ์ด๊ฑฐ๋ณด๋ค ๋ ๋ณต์กํ์ง๋ง ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ์กฐํ๋ฉด ๋ ์์ธํ ์ ์ ์์ ๊ฒ์ด๋ค.
Ajax๋ ๋น๋๊ธฐ์ ์ธ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ์ด๋ค.
ํ์ด์ง ์ ์ฒด๋ฅผ ๋ฆฌ๋ ๋ ํ๋ ๊ฒ์ด ์๋ ์ ๋ณด๊ฐ ๋ฐ๋๋ ๋ถ๋ถ๋ง ๋ ๋๋ง ํ๊ธฐ ์ํด JavaScript์ DOM์ ์ฌ์ฉํ๊ณ , ์๋ฒ์์ ์์ ๋ก์ด ํต์ ์ ์ํด XMLHttpRequest ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์ด ๊ฒ๋ค์ ํฉ์ณ์ AJAX๋ผ ํ๋ค.
๊ธฐ์ ์ AJAX๊ฐ ๋์์๋์ ๋นํด ์ ์ ๋ฐ์ ํด์ ์ต์ ๊ธฐ์ ์ fetch API ์ด๋๋ผ๋ XHL์ ์ฌ์ ํ ๋ง์ด ์ฐ์ด๋ฉฐ XML ๋์ JSON์ ์ฌ์ฉํ๋๋ผ๋ ์ด๋ฌํ ์๋ฒ ํต์ ํํ๋ฅผ AJAX๋ผ ํ๋ค.
SSR์ Server Side Rendering์ ์ฝ์๋ก ์นํ์ด์ง๋ฅผ ์๋ฒ์์ ๋ ๋๋งํด์ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด๊ณ , DB์ ์ ๋ณด๊ฐ ํ์ํด๋ ํด๋น ๋ด์ฉ์ ์๋ฒ์์ ๋ ๋ํ ํ ๋ธ๋ผ์ฐ์ ์ ์๋ต์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
๋ง์ฝ ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ฒ ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ค์ ์๋ฒ์ ์ ์ ํ์ผ์ ์์ฒญํ๊ฒ ๋๋ค.
CSR๋ Client Side Rendering์ ์ฝ์๋ก ์ด๋ฆ ๊ทธ๋๋ก ์น ํ์ด์ง๋ฅผ ํด๋ผ์ด์ธํธ์์ ๋ ๋ํ๋ค.
๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ์นํ์ด์ง์ ๊ณจ๊ฒฉ๊ณผ jsํ์ผ์ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ํ์ผ๋ค์ ์ด์ฉํด ์น ํ์ด์ง๋ฅผ ๋ ๋ํ๋ค.
DB์๋ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค๋ฉด API๋ฅผ ์ฌ์ฉํด์ ๋ฆฌ์์ค๋ฅผ ๋ฐ์์จ๋ค.
๋ง์ฝ ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ฒ ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์ฒญํ ๊ฒฝ๋ก์ ๋ฐ๋ผ ํด๋น ํ์ด์ง๋ฅผ ๋ ๋ํ๋๋ฐ, ์ฒ์ ๋ฐ์ ๊ณจ๊ฒฉ๊ณผ jsํ์ผ์ ์ ๋ณด๊ฐ ์๊ธฐ์ ์๋ฒ๋ ๋ ๋๋ง์ ๊ด์ฌํ์ง ์๋๋ค.
CORS๋ ์ ์ ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๋ธ๋ผ์ฐ์ ์ ๋ณด์์กฐ์น์ด๋ค.
์์ ์ ๊ฐ๋จํ ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ ์์ฒญ์ ํ๋ฝ๋ฐ๋ ์์ฒญ์ ๋ณด๋ธ๋ค.
์ด๋ฅผ ๋ฉ์ธ ์์ฒญ ์ด์ ์ ๋ ์๊ฐ๋ค๊ณ ํด์ preflight request
๋ผ๊ณ ํ๋ค.
simple request์ preflight request๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์.
์ ์ค๋์ ํ๋ฃจ์ข ์ผ ์ฑํฐ๋ง ์์๋๋ฐ ํ์์ ์๊ณ ๋ฆฌ์ฆ ๋๋ฆด๋ ์ฌ์ฉํ๋ ๋จธ๋ฆฌ์ ์ข ๋ค๋ฅธ ๋จธ๋ฆฌ์ธ ๊ธฐ์ตํ๋ ๋จธ๋ฆฌ๋ฅผ ์ค๋๋ง์ ๋๋ ค์ ๋ตํ๋ค.
๋ด์ผ ๊ณผ์ฐ 7์์ ์ผ์ด๋ ์ ์์ ๊ฒ์ธ๊ฐ.
์ผ์ด๋ฌ์๋ ์ค๋ ์ ์ ๊ฑธ ์ผ๋ง๋ ๋ด๊ณ ์์ ๊ฒ์ธ๊ฐ.
5ํ ๊ธฐ์ตํ๋ฉด ์ฑ๊ณตํ๊ฒ ์๋๊น ๐
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
https://codestates.com
https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EB%A1%9C%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)