๐Ÿ“š CS [ComputerScience]/๐Ÿ“˜ ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ [ComputerNetwork]

[Network] Application Architecture

Dbswnstjd 2022. 4. 28. 15:58

Application architecture์—๋Š” ์˜ˆ์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด ์˜ค๋˜ client server architecture์™€ pc์™€ n/w์— ํ–ฅ์ƒ์ด ์žˆ๋Š” peer-to-peer ((P2P) architecture, ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ชจ๋ธ์˜ Hybrid ํ˜•ํƒœ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Client/Server architecture๋ž€?

์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ณณ์„ ์„œ๋ฒ„๋ผ๊ณ  ํ•˜๋ฉฐ ์ด์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๋ถ„๋ฆฌ์‹œํ‚จ ๊ตฌ์กฐ๋ฅผ client/server architecture ((2-tier-architecture)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Client

ํด๋ผ์ด์–ธํŠธ๋Š” ๋ณดํ†ต ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

  • ์›น ํ”Œ๋žซํผ ((๋ธŒ๋ผ์šฐ์ €) : client == ์›น์‚ฌ์ดํŠธ / ์›น ์—ก

  • ์Šค๋งˆํŠธํฐ/๋ฐ์Šคํฌํƒ‘ ํ”Œ๋žซํผ ((iOS, ์œˆ๋„์šฐ) : client == ์•ฑ

Server

์„œ๋ฒ„๋Š” ์—ญํ• ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ์„œ๋ฒ„ : ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ์•ฑ

  • ์›น ์„œ๋ฒ„ : ์›น์‚ฌ์ดํŠธ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์•ฑ

  • ๋ฉ”์ผ ์„œ๋ฒ„ : ๋ฉ”์ผ์„ ์ฃผ๊ณ ๋ฐ›์„์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์•ฑ

์ตœ๊ทผ์—๋Š” 2-tier-architecture์—์„œ Database๊ฐ€ ์ถ”๊ฐ€๋œ 3-tier-architecture๊ฐ€ ๋“ฑ์žฅํ–ˆ๊ณ  ์ด๋•Œ ์„œ๋ฒ„๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ •๋ณด์˜ ์ €์žฅ์„ ๋งก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Client์™€ Server ๊ฐ„์˜ HTTP ํ”„๋กœํ† ์ฝœ

์›ํ•˜๋Š” ์ •๋ณด๋ฅผ client๊ฐ€ ์–ป๊ธฐ์œ„ํ•ด์„œ๋Š” server๋กœ ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด client์™€ server๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด client๋Š” ์„œ๋กœ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” XML ํ˜น์€ JSON ํ˜•์‹์œผ๋กœ ์„œ๋ฒ„์— request๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ฐ›์€ server๋Š” request๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ทธ์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ฅผ response ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๋‚ ์”จ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด ๋ด…์‹œ๋‹ค. ๋งŒ์•ฝ ์„œ์šธ์˜ ๋‚ ์”จ ์ •๋ณด๋ฅผ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด client๋Š” server์— request๋ฅผ ๋ณด๋‚ผ๋•Œ “์„œ์šธ” ์ด๋ผ๋Š” ์žฅ์†Œ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๊ฐ™์ด ์ง€์ •ํ•˜์—ฌ ๋ณด๋‚ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

server๋Š” request๋ฅผ ํ•ด์„ํ•˜์—ฌ “์„œ์šธ”์˜ ๋‚ ์”จ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ response๋กœ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

 

HTTP ํ”„๋กœํ† ์ฝœ

HTTP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— ์›นํŽ˜์ด์ง€์— ์กด์žฌํ•˜๋Š” object์ด๋ž€ ๋‹จ์–ด์— ๋Œ€ํ•œ ์˜๋ฏธ๋ฅผ ๋จผ์ € ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์›นํŽ˜์ด์ง€์˜ base HTML-file์€ ์—ฌ๋Ÿฌ objects๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. object๋Š” HTML file, JPEG image, audio file ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ object๋Š” URL์„ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. client๋Š” object์„ ๋ฐ›๊ธฐ์œ„ํ•ด ์›ํ•˜๋Š” object์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” URL์„ ํฌํ•จํ•œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ object๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.


HTTP((Hypertext Transfer Protocol)๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ client/server ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

Application level ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ TCP/IP์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘์†ํ•˜๋ฉฐ HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ๋™์˜์ƒ, ์˜ค๋””์˜ค ๋“ฑ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP์—๋Š” ์—ฐ๊ฒฐ ์œ ์ง€์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ๋‘๊ฐ€์ง€ ๋ฒ„์ „์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 1.0์€ ๋น„์ง€์† HTTP connection, ๋ฒ„์ „ 1.1์€ ์ง€์† HTTP connection์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Non-persistent HTTP ((๋น„์ง€์†)

๋น„์ง€์† HTTP๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ , ์š”์ฒญํ•œํ›„ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ www.someSchool.edu/someDepartment/home.index๋ผ๋Š” URL์— ์ ‘์†ํ•˜๊ณ ์ž ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. + ์„œ๋ฒ„์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 80์ž…๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์€ ์ž์› ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์ด ๋งŒ๋“ค์–ด ์ง€๋ฉด์„œ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„์ง€์† HTTP๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ๋‹จ์ ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

Pro)

  • ๋ถˆํŠน์ • ๋‹ค์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค์— ์ ํ•ฉํ•˜๋‹ค.
  • ๋งŽ์€ ์ธ์›์ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ ‘์† ์œ ์ง€๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•˜๋ฏ€๋กœ ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ๋‹ค.

Cons)

  • ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ object ๋ฐ–์— TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ „์†กํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ object๋‹น 2 RTT๊ฐ€ ์š”๊ตฌ๋œ๋‹ค.
  • ๋งค TCP ์—ฐ๊ฒฐ๋งˆ๋‹ค OS์— overhead ๋ฐœ์ƒ

RTT ((Return Transfer Time) : ํ•˜๋‚˜์˜ ํŒจํ‚ท์ด client์—์„œ server๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ client๊นŒ์ง€ ๋Œ์•„์˜ค๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Persistent HTTP ((์ง€์†)

์ง€์† HTTP์—์„œ server๋Š” response๋ฅผ ๋ณด๋‚ด๊ณ  ๋‚˜์„œ๋„ client์™€์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ TCP์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ objects๋“ค์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ object์— ๋Œ€ํ•œ GET ๋ฉ”์„ธ์ง€๋Š” ๋ณ‘๋ ฌ๋กœ ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

HTTP request message

General format

1) Method

๋ฉ”์„œ๋“œ๋Š” ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์„œ๋ฒ„์— ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • GET : ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ ((SELECT)
  • POST : ์ •๋ณด๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ ((INSERT)
  • PUT : ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ ((UPDATE)
  • DELETE : ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ ((DELETE)
  • OPTIONS : ์‘๋‹ต ๊ฐ€๋Šฅํ•œ HTTP method ์š”์ฒญ
  • HEAD : HTTP Header ์ •๋ณด๋งŒ ์ˆ˜์‹ 
  • TRACE : Request์˜ loop back ํ…Œ์ŠคํŠธ
  • CONNECT : ํ„ฐ๋„๋ง์˜ ๋ชฉ์ ์œผ๋กœ ์—ฐ๊ฒฐ์š”์ฒญ

์‚ฌ์‹ค GET, POST ๋งŒ์œผ๋กœ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”์—†์ด ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

+ POST method VS GET method

POST ์™€ GET ๋ฉ”์†Œ๋“œ๋Š” HTTP ํ”„๋กœํ† ์ฝœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ client์—์„œ server๋กœ ์ „์†กํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์กด์žฌํ•˜์ง€๋งŒ ๋ถ„๋ช…ํ•œ ์ฐจ์ด์  ๋˜ํ•œ ์กด์žฌํ•˜๋ฉฐ ์ƒํ™ฉ์— ์•Œ๋งž๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

2) URL

์š”์ฒญํ•˜๋Š” ์ž์›์˜ ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

3) Version

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

1.0 : non-persistent HTTP connection 1.1 : persistent HTTP connection

HTTP response message

  • ํ”„๋กœํ† ์ฝœ๊ณผ ์‘๋‹ต์ฝ”๋“œ : ((HTTP/1.1 200 OK)
  • ๋‚ ์งœ : ((Sun, 28 Aug 2017 08:56:53 GMT)
  • ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์ •๋ณด : ((Apache/2.4.27 LinuxLinux) ์‘๋‹ตํ—ค๋”์—๋Š” ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…์ธ  ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ
  • ์บ์‹œ ์ œ์–ด ๋ฐฉ์‹
  • ์ปจํ…์ธ  ๊ธธ์ด
  • Keep-Alive ๊ธฐ๋Šฅ ์„ค์ •

์ฝ”๋“œ๋ฒˆํ˜ธ์„ค๋ช…๋น„๊ณ 

200 ์„ฑ๊ณต ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.
301 ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™ํ–ˆ๋‹ค ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ Location enUSen−US ํ—ค๋”์— ์ฃผ์–ด์ง„ URL๋กœ ์™„์ „ํžˆ ์˜ฎ๊ฒจ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
400 ์ž˜๋ชป๋œ ์š”์ฒญ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ๋ฉ”์„ธ์ง€๋ฅผ ํ•ด์„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
403 ๊ธˆ์ง€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค.
404 ์ฐพ์„ ์ˆ˜ ์—†์Œ ์š”์ฒญํ•œ ์ž์›์ด ์„œ๋ฒ„์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
505 ์ง€์›ํ•˜์ง€ ์•Š๋Š” HTTP ๋ฒ„์ „ ํ•ด๋‹น ๋ฒ„์ „์˜ HTTP๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค