TIL - 21.07.29 ๐Ÿ‘จโ€๐Ÿ’ป - Network, HTTP

์„ฑํ›ˆยท2021๋…„ 7์›” 29์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
42/59
post-thumbnail

TIL - 21.07.29 ๐Ÿ‘จโ€๐Ÿ’ป


Client Server Architecture ( 2-Tier Architecture )

๋งŒ์•ฝ ์„œ๋ฒ„ ์—†์ด ์•ฑ ์•ˆ์— ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ์ •๋ณด๊ฐ€ ์—…๋ฐ์ดํŠธ ๋ ๋•Œ๋งˆ๋‹ค ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•ด์„œ ์ •๋ณด๋ฅผ ๊ฐฑ์‹  ํ•ด์ค˜์•ผ ํ•˜๊ณ , ๊ฒฐ์ œ๊ฐ€ ํ•„์š”ํ•œ ์•ฑ์ด๋ผ๋ฉด ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์—†๊ธฐ์— ๊ฒฐ์ œ ์—ญ์‹œ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค.

์ด ์•ฑ์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ณณ(์„œ๋ฒ„)๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ(์•ฑ)์„ ๋ถ„๋ฆฌํ•œ ๊ฒƒ์„ 2-Tier Architecture, ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์†๋‹˜(ํด๋ผ์ด์–ธํŠธ)๊ณผ ์ง์›(์„œ๋ฒ„)์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์†๋‹˜์ด ์Œ์‹์„ ์ฃผ๋ฌธ(์š”์ฒญ)ํ•˜๋ฉด ์ง์›์ด ์Œ์‹(์‘๋‹ต)์„ ์„œ๋น™ํ•˜๋“ฏ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ์‚ฌ์ด์ด๋‹ค.


3-Tier Architecture

์‚ฌ์‹ค ์„œ๋ฒ„๋Š” ๋ณดํ†ต ๋ฆฌ์†Œ์Šค๋งŒ ์ „๋‹ฌํ•˜์ง€ ๋ฆฌ์†Œ์Šค๋Š” ๋Œ€์ฒด๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ๋‹ค.
์ด์ฒ˜๋Ÿผ 2-Tier ์•„ํ‚คํ…์ฒ˜์— DB๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ 3-Tier ์•„ํ‚คํ…์ณ๋ผ๊ณ  ํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ์š”์ฒญํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ์‘๋‹ตํ•˜๋Š” ์‹์œผ๋กœ ํ†ต์‹ ์„ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.


ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ํ†ต์‹ ๊ณผ API

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์žˆ์–ด์•ผ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ์‹์ด๋‹ค.
ํ•˜์ง€๋งŒ ์š”์ฒญํ• ๋•Œ ์ง€์ผœ์•ผํ•˜๋Š” ์•ฝ์†์ด ๋ช‡ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ํ†ต์‹  ๊ทœ์•ฝ(Protocol)์ด๋ผ ํ•˜๋ฉฐ,
์›น ์•ฑ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€ HTTP์ด๊ณ , HTTP๋ฅผ ์ด์šฉํ•ด ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฉ”์„ธ์ง€๋ฅผ HTTP Message๋ผ๊ณ  ํ•œ๋‹ค.
์ด๋Ÿฐ ํ”„๋กœํ† ์ฝœ์€ ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ๋“ค์ด ์ง€์ผœ์•ผํ•  ๊ฐ๊ฐ์˜ ๊ทœ์•ฝ์ด ์กด์žฌํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ฒ„๊ฑฐํ‚น์—๊ฐ€์„œ ํ†ต์ƒˆ์šฐ ์™€ํผ๋ฅผ ์‹œํ‚ฌ๋•Œ ์ง์›์—๊ฒŒ ์ง์ ‘ ์ฃผ๋ฌธํ•˜๋“ ์ง€, ํ‚ค์˜ค์Šคํฌ๋กœ ์ฃผ๋ฌธํ•˜๋“ ์ง€ ๋ฐฉ๋ฒ•๋งŒ ๋‹ค๋ฅผ ๋ฟ, ํ†ต์ƒˆ์šฐ ์™€ํผ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค๋Š” ๊ฒƒ ์ž์ฒด๋Š” ๋™์ผํ•˜๋“ฏ์ด ํ”„๋กœํ† ์ฝœ๋„ ๊ฐ™์€ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์ด ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๋ช‡๊ฐ€์ง€ ์ฃผ์š” ํ”„๋กœํ† ์ฝœ์— ์–ด๋Š ๊ฒƒ์ด ์žˆ๊ณ  OSI 7 Layer ์ค‘ ์–ด๋Š ๊ณ„์ธต์— ์žˆ๋Š”์ง€ ์†Œ๊ฐœํ•˜์ž๋ฉด,

  • OSI 7 Layer๋Š” ๊ฐœ๋ฐฉํ˜• ์‹œ์Šคํ…œ ์ƒํ˜ธ์—ฐ๊ฒฐ ๋ชจ๋ธ์˜ ํ‘œ์ค€์ด๋ฉฐ 7๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
  1. ๋ฌผ๋ฆฌ ๊ณ„์ธต, 2. ๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต, 3. ๋„คํŠธ์›Œํฌ ๊ณ„์ธต, 4. ์ „์†ก ๊ณ„์ธต, 5. ์„ธ์…˜ ๊ณ„์ธต, 6. ํ‘œํ˜„ ๊ณ„์ธต, 7. ์‘์šฉ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
  • ์ „์†ก ๊ณ„์ธต์˜ ๋Œ€ํ‘œ์  ํ”„๋กœํ† ์ฝœ
ํ”„๋กœํ† ์ฝœ ์ด๋ฆ„์„ค๋ช…
TCPHTTP, FTP ํ†ต์‹ ๋“ฑ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ์–‘๋ฐฉํ–ฅ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ
UDPTCP์™€ ๋‹ค๋ฅด๊ฒŒ ํ›จ์”ฌ ๋” ๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฅด์ง€๋งŒ,
์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์€ ๋‹จ๋ฐฉํ–ฅ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ

  • ์‘์šฉ ๊ณ„์ธต์˜ ๋Œ€ํ‘œ์  ํ”„๋กœํ† ์ฝœ
ํ”„๋กœํ† ์ฝœ ์ด๋ฆ„์„ค๋ช…
HTTP์›น์—์„œ HTML, JSON ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ
HTTPSHTTP์—์„œ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ํ”„๋กœํ† ์ฝœ
FTPํŒŒ์ผ ์ „์†ก ํ”„๋กœํ† ์ฝœ
SMTP๋ฉ”์ผ์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ
SSHCLI ํ™˜๊ฒฝ์˜ ์›๊ฒฉ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ
RDPWindows ๊ณ„์—ด์˜ ์›๊ฒฉ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ
WebSocket์‹ค์‹œ๊ฐ„ ํ†ต์‹ , Push ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

API

์ปดํ“จํ„ฐ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ• ๋• ์ •ํ™•ํ•œ ์ฃผ๋ฌธ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ผ์•ผ ํ•˜๋Š”๋ฐ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์—†๋‹ค.
๋งˆ์น˜ ์‹๋‹น์˜ ๋ฉ”๋‰ดํŒ์ฒ˜๋Ÿผ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ฐ”๋กœ API์ด๋‹ค.

  • ์ธํ„ฐํŽ˜์ด์Šค(Interface) - ์˜์‚ฌ์†Œํ†ต ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์ ‘์ .

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 vs URI

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, Port

IP์™€ ํฌํŠธ๋Š” ์•„ํŒŒํŠธ์˜ ๋„๋กœ๋ช… ์ฃผ์†Œ์™€ ๋ช‡ ํ˜ธ์‹ค ์ •๋„๋กœ ๋น„๊ตํ•˜๋ฉด ์–ผ์ถ” ๋งž์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ํฌํŠธ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด๋ฉด ํ•ด๋‹น ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

ํฌํŠธ๋Š” 0๋ถ€ํ„ฐ 65,355๊นŒ์ง€ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ 0 ~ 1024๋Š” ์ฃผ์š” ํ†ต์‹ ์„ ์œ„ํ•œ ๊ทœ์•ฝ์œผ๋กœ ์ด๋ฏธ ์ •ํ•ด์ ธ์žˆ๋‹ค.
๊ทธ ์ค‘ ์œ ๋ช…ํ•œ ํฌํŠธ๋กœ๋Š” 22: SSH, 80: HTTP, 443: HTTPS ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, ๋” ๋งŽ์€ ํฌํŠธ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.


๋„๋ฉ”์ธ, DNS

๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ• ๋•Œ IP ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๋„๋ฉ”์ธ์ด๋ผ ํ•œ๋‹ค.
์•ž์„œ IP๊ฐ€ ๋„๋กœ๋ช… ์ฃผ์†Œ๋ผ๊ณ  ๋น„์œ ํ–ˆ์—ˆ๋Š”๋ฐ, DNS๋Š” ์ƒํ˜ธ๋ช…์ด๋‚˜ ๊ฑด๋ฌผ๋ช… ์ •๋„๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋  ๋“ฏ ํ•˜๋‹ค.
'๋‚จ์‚ฐ ํƒ€์›Œ๋กœ ๊ฐ€์ฃผ์„ธ์š”.'์™€ '๋‚จ์‚ฐ๊ณต์›๊ธธ 105๋กœ ๊ฐ€์ฃผ์„ธ์š”.'๋Š” ๋งํ•˜๋Š”๊ฑด ๋‹ค๋ฅด์ง€๋งŒ ์–ด์จŒ๋“  ๋‚จ์‚ฐ ํƒ€์›Œ๋กœ ๊ฐ€๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ชจ๋“  IP ์ฃผ์†Œ๊ฐ€ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ๋„๋ฉ”์ธ์€ ์ผ์ •๊ธฐ๊ฐ„ ๋Œ€์—ฌํ•ด ์‚ฌ์šฉํ•˜๊ธฐ์— ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐ๋˜๋Š” IP๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.
์ด ๊ฒฝ์šฐ ๋„๋ฉ”์ธ๊ณผ IP๋ฅผ ๋งค์นญ์‹œ์ผœ์ฃผ๋Š” ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„๊ฐ€ DNS(Domain Network System)์ด๋‹ค.
DNS๋Š” ํ˜ธ์ŠคํŠธ์˜ ๋„๋ฉ”์ธ์„ IP์™€ ๋งค์นญํ•˜๊ฑฐ๋‚˜ ๊ทธ ์—ญ์œผ๋กœ IP์™€ ๋„๋ฉ”์ธ์„ ๋งค์นญํ•˜๋Š” DB ์‹œ์Šคํ…œ์ด๋‹ค.

๋งŒ์•ฝ ๋‚ด๊ฐ€ ํฌ๋กฌ์ด๋ผ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒ€์ƒ‰์ฐฝ์— naver.com์„ ์ž…๋ ฅํ•˜๋ฉด DNS๊ฐ€ ์—ฐ๊ฒฐ๋œ IP์ฃผ์†Œ์ธ 125.209.222.141์„ ์ฐพ์•„ ํ•ด๋‹น ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
์‚ฌ์‹ค ์ด๊ฑฐ๋ณด๋‹ค ๋” ๋ณต์žกํ•˜์ง€๋งŒ ์ด ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋” ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.


HTTP


AJAX (Asynchronous JavaScript And XML)

Ajax๋Š” ๋น„๋™๊ธฐ์ ์ธ ์›น ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์ด๋‹ค.
ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋ฆฌ๋ Œ๋” ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋ง ํ•˜๊ธฐ ์œ„ํ•ด JavaScript์™€ DOM์„ ์‚ฌ์šฉํ•˜๊ณ , ์„œ๋ฒ„์™€์˜ ์ž์œ ๋กœ์šด ํ†ต์‹ ์„ ์œ„ํ•ด XMLHttpRequest ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ด ๊ฒƒ๋“ค์„ ํ•ฉ์ณ์„œ AJAX๋ผ ํ•œ๋‹ค.

๊ธฐ์ˆ ์€ AJAX๊ฐ€ ๋‚˜์™”์„๋•Œ์— ๋น„ํ•ด ์ ์  ๋ฐœ์ „ํ•ด์„œ ์ตœ์‹  ๊ธฐ์ˆ ์€ fetch API ์ด๋”๋ผ๋„ XHL์€ ์—ฌ์ „ํžˆ ๋งŽ์ด ์“ฐ์ด๋ฉฐ XML ๋Œ€์‹  JSON์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ด๋Ÿฌํ•œ ์„œ๋ฒ„ ํ†ต์‹  ํ˜•ํƒœ๋ฅผ AJAX๋ผ ํ•œ๋‹ค.


๊ตฌ์„ฑ์š”์†Œ

  • ์›นํŽ˜์ด์ง€ ํ‘œํ˜„์„ ์œ„ํ•œ HTML, CSS
  • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๋ฐ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•˜๋Š” DOM
  • ๋ฐ์ดํ„ฐ ๊ตํ™˜์— ์‚ฌ์šฉ๋˜๋Š” XML, JSON
  • ์›น ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ์  ํ†ต์‹ ์„ ์œ„ํ•œ XMLHttpRequest ๊ฐ์ฒด
  • JavaScript

SSR vs CSR

  • SSR์€ Server Side Rendering์˜ ์•ฝ์ž๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋งํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด๊ณ , DB์˜ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ด๋„ ํ•ด๋‹น ๋‚ด์šฉ์„ ์„œ๋ฒ„์—์„œ ๋ Œ๋”ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €์— ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค.
    ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์‹œ ์„œ๋ฒ„์— ์ •์ ํŒŒ์ผ์„ ์š”์ฒญํ•˜๊ฒŒ ๋œ๋‹ค.

    • SSR์˜ ์žฅ์ 
    1. ๊ฒ€์ƒ‰ ์—”์ง„์— ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ ์ผ ๊ฒฝ์šฐ ์œ ๋ฆฌํ•˜๋‹ค.
    2. ๋น ๋ฅธ ์ฒซ ํ™”๋ฉด ๋ Œ๋”๊ฐ€ ํ•„์š”ํ• ๋•Œ ์œ ๋ฆฌํ•˜๋‹ค.
    3. ์›น ํŽ˜์ด์ง€์™€ ์œ ์ €๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์ด ์ ์„๋•Œ ์œ ๋ฆฌํ•˜๋‹ค.
  • CSR๋Š” Client Side Rendering์˜ ์•ฝ์ž๋กœ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”ํ•œ๋‹ค.
    ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์›นํŽ˜์ด์ง€์˜ ๊ณจ๊ฒฉ๊ณผ jsํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ ์ด์šฉํ•ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”ํ•œ๋‹ค.
    DB์žˆ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

    ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญํ•œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”ํ•˜๋Š”๋ฐ, ์ฒ˜์Œ ๋ฐ›์€ ๊ณจ๊ฒฉ๊ณผ jsํŒŒ์ผ์— ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ์— ์„œ๋ฒ„๋Š” ๋ Œ๋”๋ง์— ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • CSR์˜ ์žฅ์ 
    1. ์›น ํŽ˜์ด์ง€์— ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์„๋•Œ CSR์ด ๋น ๋ฅธ ๋ผ์šฐํŒ…์œผ๋กœ ๋” ๋‚˜์€ UX๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

CORS - Cross-Origin Resource Sharing


CORS๋Š” ์œ ์ €๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ณด์•ˆ์กฐ์น˜์ด๋‹ค.
์š”์ ์€ ๊ฐ„๋‹จํ•œ ์š”์ฒญ์ด ์•„๋‹ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋™์ž‘ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ์š”์ฒญ์„ ํ—ˆ๋ฝ๋ฐ›๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
์ด๋ฅผ ๋ฉ”์ธ ์š”์ฒญ ์ด์ „์— ๋‚ ์•„๊ฐ„๋‹ค๊ณ  ํ•ด์„œ preflight request๋ผ๊ณ  ํ•œ๋‹ค.

simple request์™€ preflight request๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์ž.


TO DO ๐Ÿ”ฅ

  • Promise ๊ฐ์ฒด ์ˆ™๋ จ
  • ์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ๋งจ์ •์‹ ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด๊ธฐ

Retrospect ๐Ÿง

์™€ ์˜ค๋Š˜์€ ํ•˜๋ฃจ์ข…์ผ ์ฑ•ํ„ฐ๋งŒ ์žˆ์—ˆ๋Š”๋ฐ ํ‰์†Œ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ๋ฆด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋จธ๋ฆฌ์™€ ์ข€ ๋‹ค๋ฅธ ๋จธ๋ฆฌ์ธ ๊ธฐ์–ตํ•˜๋Š” ๋จธ๋ฆฌ๋ฅผ ์˜ค๋žœ๋งŒ์— ๋Œ๋ ค์„œ ๋ตํ–ˆ๋‹ค.

๋‚ด์ผ ๊ณผ์—ฐ 7์‹œ์— ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ๊ฐ€.
์ผ์–ด๋‚ฌ์„๋•Œ ์˜ค๋Š˜ ์ ์€ ๊ฑธ ์–ผ๋งˆ๋‚˜ ๋‹ด๊ณ  ์žˆ์„ ๊ฒƒ์ธ๊ฐ€.

5ํ•  ๊ธฐ์–ตํ•˜๋ฉด ์„ฑ๊ณตํ•œ๊ฒŒ ์•„๋‹๊นŒ ๐Ÿ˜‡

Reference ๐Ÿ™‡

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)

profile
์–ด๋–ป๊ฒŒ ์ด๊ฑธ ํ’€์–ด๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ

0๊ฐœ์˜ ๋Œ“๊ธ€