WEB Architecture โŽฎ Browser & Server & API

NOWANDHEREยท2020๋…„ 11์›” 14์ผ
0

WEB

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

WEB Architecture

๐ŸŒป ์›น ์•„ํ‚คํ…์ฒ˜์—์„œ ๊ฐ ํ‚ค์›Œ๋“œ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฌด์—‡์ผ๊นŒ?


๋ธŒ๋ผ์šฐ์ €(Browser)


๋ธŒ๋ผ์šฐ์ €์˜ ์—ญํ• ์€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์—ญํ• ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ HTML, CSS, JavaScript๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ € ๋•๋ถ„์ด๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ž์›์„ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ž์›์˜ ์ฃผ์†Œ๋Š” URI(Uniform Resource Identifier)์— ์˜ํ•ด ์ •ํ•ด์ง„๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML๊ณผ CSS ๋ช…์„ธ์— ๋”ฐ๋ผ HTML ํŒŒ์ผ์„ ํ•ด์„ํ•ด์„œ ํ‘œ์‹œํ•˜๋Š”๋ฐ ์ด ๋ช…์„ธ๋Š” ์›น ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ W3C(World Wide Web Consortium)์—์„œ ์ •ํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„œ๋กœ ๋‹ฎ์•„ ์žˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

  • URI๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ ํ‘œ์‹œ ์ค„
  • ์ด์ „ ๋ฒ„ํŠผ๊ณผ ๋‹ค์Œ ๋ฒ„ํŠผ
  • ๋ถ๋งˆํฌ
  • ์ƒˆ๋กœ ๊ณ ์นจ ๋ฒ„ํŠผ๊ณผ ํ˜„์žฌ ๋ฌธ์„œ์˜ ๋กœ๋“œ๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ง€ ๋ฒ„ํŠผ
  • ํ™ˆ ๋ฒ„ํŠผ

๋ธŒ๋ผ์šฐ์ €์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ‘œ์ค€ ๋ช…์„ธ๊ฐ€ ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ˆ˜ ๋…„๊ฐ„ ์„œ๋กœ์˜ ์žฅ์ ์„ ๋ชจ๋ฐฉํ•˜๋ฉด์„œ ํ˜„์žฌ์— ์ด๋ฅด๊ฒŒ ๋˜์—ˆ๋‹ค. HTML5 ๋ช…์„ธ๋Š” ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ƒํƒœ ํ‘œ์‹œ์ค„, ๋„๊ตฌ ๋ชจ์Œ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์š”์†Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ ํ•„์ˆ˜ UI๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•˜๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

  1. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค - ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ, ๋ถ๋งˆํฌ ๋ฉ”๋‰ด ๋“ฑ. ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๋ถ€๋ถ„์ด๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ € ์—”์ง„ - ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ Œ๋”๋ง ์—”์ง„ ์‚ฌ์ด์˜ ๋™์ž‘์„ ์ œ์–ด.
  3. ๋ Œ๋”๋ง ์—”์ง„ - ์š”์ฒญํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œ. ์˜ˆ๋ฅผ ๋“ค์–ด HTML์„ ์š”์ฒญํ•˜๋ฉด HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•จ.
  4. ํ†ต์‹  - HTTP ์š”์ฒญ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์— ์‚ฌ์šฉ๋จ. ์ด๊ฒƒ์€ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ  ๊ฐ ํ”Œ๋žซํผ ํ•˜๋ถ€์—์„œ ์‹คํ–‰๋จ.
  5. UI ๋ฐฑ์—”๋“œ - ์ฝค๋ณด ๋ฐ•์Šค์™€ ์ฐฝ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์žฅ์น˜๋ฅผ ๊ทธ๋ฆผ. ํ”Œ๋žซํผ์—์„œ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ์„œ, OS ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉ.
  6. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰.
  7. ์ž๋ฃŒ ์ €์žฅ์†Œ - ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค. ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ž์›์„ ํ•˜๋“œ ๋””์Šคํฌ์— ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. HTML5 ๋ช…์„ธ์—๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•˜๋Š” '์›น ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค'๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.


์„œ๋ฒ„(Server)


์„œ๋ฒ„๋Š” ํ•œ๋งˆ๋””๋กœ ์ •๋ฆฌํ•˜๋ฉด ์ž์›์„ serve ํ•˜๋Š” ์ฃผ์ฒด์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋ฒ„๋Š” ์›น ์„œ๋น„์Šค์—์„œ์˜ HTTP ์›น ์„œ๋ฒ„์ด๋‹ค. WEB Server๋Š” ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด ํ˜น์€ ๋‘ ๊ฐœ ๋ชจ๋‘๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ํ•˜๋“œ์›จ์–ด ์ธก๋ฉด์—์„œ, web server๋Š” website์˜ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋“ค(HTML ๋ฌธ์„œ, images, CSS stylesheets, JavaScript files)์„ ์ €์žฅํ•˜๋Š” ์ปดํ“จํ„ฐ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํŒŒ์ผ๋“ค์„ ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ๋””๋ฐ”์ด์Šค์— ์ „๋‹ฌํ•œ๋‹ค. web server๋Š” ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , velog.io/@heeseok์™€ ๊ฐ™์€ domain name์„ ํ†ตํ•ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ์†Œํ”„ํŠธ์›จ์–ด ์ธก๋ฉด์—์„œ, web server๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ๋“ค์— ์ ‘๊ทผํ•˜๋Š”์ง€๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. web server๋ฅผ HTTP ์„œ๋ฒ„๋กœ ๊ตญํ•œํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด HTTP ์„œ๋ฒ„๋Š” URL(Web addresses)๊ณผ HTTP(๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ)๋ฅผ ์ดํ•ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์—์„œ ๋ถˆ๋ ค์ง„ ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ• ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์š”์ฒญํ•œ๋‹ค. ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅธ ์›น ์„œ๋ฒ„(ํ•˜๋“œ์›จ์–ด)์— ๋„๋‹ฌํ•˜์˜€์„ ๋•Œ, HTTP ์„œ๋ฒ„(software)๋Š” ์š”์ฒญ๋œ ๋ฌธ์„œ๋ฅผ HTTP๋ฅผ ์ด์šฉํ•ด ๋ณด๋‚ด์ฃผ๊ฒŒ ๋œ๋‹ค.

์›น ์„œ๋ฒ„๋ฅผ ์Šคํƒ€๋ฒ…์Šค์— ๋น„์œ ํ•ด๋ณด์ž.

๋จผ์ €, ์›น ์•„ํ‚คํ…์ฒ˜์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์„ฑ๋„์ด๋‹ค. ์›น ์„œ๋น„์Šค๋Š” ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ปคํ”ผ ์›๋‘๋ฅผ ์Œ๋ฃŒ๋กœ ๋งŒ๋“ค์–ด ๋จน์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ? ์ด ๋•Œ, ์Šคํƒ€๋ฒ…์Šค(์„œ๋ฒ„)๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ณ ๊ฐ(ํด๋ผ์ด์–ธํŠธ)์ด "์‚ฐ๋ฏธ ์žˆ๋Š” ์ปคํ”ผ ์ฃผ์„ธ์š”" ๋ผ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์Šคํƒ€๋ฒ…์Šค(์„œ๋ฒ„)๋Š” ์ฐฝ๊ณ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์—์„œ ์‚ฐ๋ฏธ ์žˆ๋Š” ์›๋‘๋ฅผ ๊บผ๋‚ด์˜ค๊ณ , ์Œ๋ฃŒ๋ฅผ ์ œ์กฐํ•œ๋‹ค. ์ œ์กฐํ•œ ์Œ๋ฃŒ๋ฅผ ๊ณ ๊ฐ(ํด๋ผ์ด์–ธํŠธ)์—๊ฒŒ ์ œ๊ณต(์‘๋‹ต)ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€๊ฐ€ ์Šคํƒ€๋ฒ…์Šค(์„œ๋ฒ„)์˜ ์—ญํ• ์ธ ๊ฒƒ์ด๋‹ค.

๋‹ค์‹œ ์›น ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ๋Œ์•„์™€์„œ, ํด๋ผ์ด์–ธํŠธ์—์„œ user message๋ฅผ ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ message๋ฅผ ๊บผ๋‚ด์˜ค๊ฒŒ ๋˜๊ณ , ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ทธ message๋ฅผ ์‘๋‹ตํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์„๊นŒ?


API(Application Programming Interface)


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

์ฆ‰, ์„œ๋ฒ„ ์ž์›์„ ์ž˜ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ Interface์ด๋‹ค. ์„œ๋ฒ„ ๋ถ€๋ถ„์—์„œ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ๋˜ ์Šคํƒ€๋ฒ…์Šค๋ฅผ ๋‹ค์‹œ ๋– ์˜ฌ๋ ค๋ณด๋ฉด API๋Š” ๋ฐ”๋กœ ๋ฉ”๋‰ดํŒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์›น ์•„ํ‚คํ…์ฒ˜๋กœ ๋Œ์•„์™€์„œ, ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋“ค์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ API๋ฅผ ๊ตฌ์ถ•ํ•ด๋†“์•„์•ผ ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋„ ์ด๋Ÿฌํ•œ API๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ž์›์„ ํ™œ์šฉ(์š”์ฒญ ๋ฐ ์ƒ์„ฑ ๋“ฑ)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Reference




๋ฐฐ์šฐ๋Š” ๋‹จ๊ณ„๋ผ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

profile
๐ŸŒป

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