๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
CS/CS

์ฟ ํ‚ค์™€ ์„ธ์…˜

by DevIseo 2022. 10. 13.

๋“ค์–ด๊ฐ€๊ธฐ ์ „! (HTTP์˜ ํŠน์ง•)

HTTP(HyperText Transfer Protocol)

  • ์ธํ„ฐ๋„ท ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š” ํ†ต์‹ ๊ทœ์•ฝ
  • ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless) & ๋น„์ƒํƒœ์„ฑ(Stateless)
  • ์„œ๋ฒ„์˜ ์ž์›์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๋งˆ๋‹ค ์—ฐ๊ฒฐ๊ณผ ํ•ด์ œ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ณ , ์—ฐ๊ฒฐ ํ•ด์ œ ํ›„์— ์ƒํƒœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๋Š” ๊ฒƒ
  • ์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์–ด์„œ ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•˜๋”๋ผ๋„ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋กœ ์ธ์‹ํ•˜๋Š” ๋‹จ์ 

๐Ÿช์ฟ ํ‚ค, ์„ธ์…˜์„ ์™œ ์“ฐ๋‚˜์š”?

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด
๋กœ๊ทธ์ธ์„ ํ•œ ๋ฒˆ ํ•˜๊ณ ๋‚˜๋ฉด ๊ทธ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•  ํ•„์š” ์—†์ด
์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ  
์‹ฌ์ง€์–ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ ‘์†ํ–ˆ์„ ๋•Œ๋„ 
๊ทธ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ๊ณผ ๋น„์ƒํƒœ์„ฑ์„ ๋ณด์™„ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ฒŒ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉ!

๐Ÿช์ฟ ํ‚ค๊ฐ€ ๋ญ”๊ฐ€์š”?

โœจ๊ฐœ๋…

  • ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•  ๋•Œ ๋งˆ๋‹ค ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ
  • ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด์€ ์ž„์‹œ ํŒŒ์ผ
  • ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ์— ์ €์žฅ๋˜๋Š” Key-Value์Œ์˜ ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ (Stringํ˜•ํƒœ)

๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค๊ฐ€ ๋‹ค๋ฆ„! ํฌ๋กฌ์œผ๋กœ ๋‚จ๊ธด ์ฟ ํ‚ค๋Š” ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ์–ด์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์„œ๋ฒ„์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹

โœจ์ฟ ํ‚ค์˜ ์‚ฌ์šฉ ๋ชฉ์  ๋ฐ ์˜ˆ์‹œ

  • ์ฟ ํ‚ค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฟ ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ ์ฃผ์–ด์•ผ ํ•จ
**### ์ฟ ํ‚ค ์‚ฌ์šฉ ๋ชฉ์ **
**1.์„ธ์…˜ ๊ด€๋ฆฌ(Session Management)** 
๋กœ๊ทธ์ธ, ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„, ์ ‘์† ์‹œ๊ฐ„, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ์˜ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์•ผํ•  ์ •๋ณด๋“ค์„ ์ €์žฅ
**2.๊ฐœ์ธํ™”(Personalization)** 
์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ทธ ์‚ฌ๋žŒ์— ์ ์ ˆํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ
**3.ํŠธ๋ž˜ํ‚น(Tracking)** 
์‚ฌ์šฉ์ž์˜ ํ–‰๋™๊ณผ ํŒจํ„ด์„ ๋ถ„์„ํ•˜๊ณ  ๊ธฐ๋ก
  • ์‚ฌ์šฉ ์˜ˆ์‹œ
    • ID์ €์žฅ, ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€
    • ์ผ์ฃผ์ผ ๊ฐ„ ๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ
    • ์ตœ๊ทผ ๊ฒ€์ƒ‰ํ•œ ์ƒํ’ˆ๋“ค์„ ๊ด‘๊ณ ์—์„œ ์ถ”์ฒœ
    • ์‡ผํ•‘๋ชฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ

โœจ ์ฟ ํ‚ค์˜ ๋™์ž‘ ์ˆœ์„œ

1.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘๊ทผ)
2.์›น ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
3.์ƒ์„ฑํ•œ ์ฟ ํ‚ค์— ์ •๋ณด๋ฅผ ๋‹ด์•„ HTTP ํ™”๋ฉด์„ ๋Œ๋ ค์ค„ ๋•Œ, ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ค€๋‹ค.
4.๋„˜๊ฒจ๋ฐ›์€ ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€(๋กœ์ปฌ PC์— ์ €์žฅ) ๋‹ค์‹œ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.
5.๋™์ผ ์‚ฌ์ดํŠธ ์žฌ๋ฐฉ๋ฌธ ์‹œ ํด๋ผ์ด์–ธํŠธ์˜ PC์— ํ•ด๋‹น ์ฟ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์š”์ฒญ ํŽ˜์ด์ง€์™€ ํ•จ๊ป˜ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.

โœจ์ฟ ํ‚ค์˜ ๋‹จ์ 

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

๐Ÿช์„ธ์…˜์ด ๋ญ”๊ฐ€์š”?

โœจ๊ฐœ๋…

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์œ ์ง€ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ 

โœจ์„ธ์…˜์˜ ํŠน์ง•

  • ์›น ๋ธŒ๋ผ์šฐ์ € ๋‹น 1๊ฐœ์”ฉ ์ƒ์„ฑ๋˜์–ด ์›น ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์†Œ๋ฉธ
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋งŒ ์„ธ์…˜์„ ์ƒ์„ฑ ํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ
  • ๋กœ๊ทธ์•„์›ƒ ์‹œ์—๋„ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋กœ ์ธ์‹ํ•ด ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ
    • ์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ๋Š” ๋‚ด ์›น๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์•„์›ƒ ์œ ๋ฌด์™€ ๊ด€๊ณ„์—†์ด ์‚ญ์ œํ•˜์ง€ ์•Š์œผ๋ฉด ์œ ์ง€
  • ID, ๋‹‰๋„ค์ž„ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์„ธ์…˜์— ๋‹ด์•„๋‘๋ฉด ์š”์ฒญ์•„ ์žˆ์„ ๋•Œ ๋งˆ๋‹ค, DB์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†์–ด์„œ ํšจ์œจ์ !
  • ์‚ฌ์šฉ์ž๋‚˜ ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋…ธ์ถœ๋˜๋ฉด ์•ˆ๋˜๋Š” ์ •๋ณด๋“ค์€ ์„ธ์…˜์œผ๋กœ ์„œ๋น„์Šค ์ œ๊ณต์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌ

โœจ์„ธ์…˜์˜ ๋™์ž‘ ์ˆœ์„œ

1.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€์— ์š”์ฒญํ•œ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘๊ทผ)
2.์„œ๋ฒ„๋Š” ์ ‘๊ทผํ•œ ํด๋ผ์ด์–ธํŠธ์˜ Request-Header ํ•„๋“œ์ธ Cookie๋ฅผ ํ™•์ธํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น session-id๋ฅผ ๋ณด๋ƒˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
3.session-id๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์„œ๋ฒ„๋Š” session-id๋ฅผ ์ƒ์„ฑํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ค€๋‹ค.
4.์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋Œ๋ ค์ค€ session-id๋ฅผ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— ์ €์žฅํ•œ๋‹ค.
5.ํด๋ผ์ด์–ธํŠธ๋Š” ์žฌ์ ‘์† ์‹œ, ์ด ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด session-id ๊ฐ’์„ ์„œ๋ฒ„์— ์ „๋‹ฌ

โœจ์„ธ์…˜์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ

  • ํ™”๋ฉด์„ ์ด๋™ํ•ด๋„ ๋กœ๊ทธ์ธ์ด ํ’€๋ฆฌ์ง€ ์•Š๊ณ  ๋กœ๊ทธ์•„์›ƒํ•˜๊ธฐ ์ „๊นŒ์ง€ ์œ ์ง€ํ•  ๋•Œ

โœจ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€๋ฐ ์™œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๊นŒ?

์„ธ์…˜์ด ์ฟ ํ‚ค์— ๋น„ํ•ด ๋ณด์•ˆ์ด ๋†’์€ ํŽธ์ด์ง€๋งŒ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”

์„ธ์…˜์€ ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š”๋ฐ, ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์„œ๋ฒ„ ์ž์›์— ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ ,

์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์›๊ด€๋ฆฌ ์ฐจ์›์—์„œ ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์ ์ ˆํ•œ ์š”์†Œ ๋ฐ ๊ธฐ๋Šฅ์— ๋ณ‘ํ–‰ํ•ด ์‚ฌ์šฉ

์„œ๋ฒ„ ์ž์›์˜ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•ด ์›น ์‚ฌ์ดํŠธ์˜ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Œ!

๐Ÿช์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด๋Š” ์–ด๋–ค ์ ์ด ์žˆ์„๊นŒ์š”?

  • ์ €์žฅ ์œ„์น˜
    • ์ฟ ํ‚ค๋Š” ๋กœ์ปฌ์—,
    • ์„ธ์…˜์€ ๋กœ์ปฌ๊ณผ ์„œ๋ฒ„์— ์ €์žฅ
  • ๋ณด์•ˆ
    • ์ฟ ํ‚ค๋Š” ํƒˆ์ทจ์™€ ๋ณ€์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,
    • ์„ธ์…˜์€ ID๊ฐ’๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์„œ๋ฒ„์—๋„ ์ €์žฅ์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ „
  • Lifecycle
    • ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ํŒŒ์ผ๋กœ ๋‚จ์•„์žˆ์ง€๋งŒ,
    • ์„ธ์…˜์€ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์„ธ์…˜์„ ์‚ญ์ œ
  • ์†๋„
    • ์ฟ ํ‚ค๋Š” ํŒŒ์ผ์—์„œ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๊ณ ,
    • ์„ธ์…˜์€ ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๋А๋ฆผ

Reference

[WEB] ์ฟ ํ‚ค, ์„ธ์…˜์ด๋ž€?

[web] ์ฟ ํ‚ค(cookie)์™€ ์„ธ์…˜(session)์˜ ๊ฐœ๋…/์ฐจ์ด/์šฉ๋„/์ž‘๋™๋ฐฉ์‹

์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session)์˜ ์ฐจ์ด (+์บ์‹œ(Cache))

๋Œ“๊ธ€