๐Ÿ”™๋’ค๋กœ๊ฐ€๊ธฐ

GraphQL๊ณผ REST๋Š” ๋ชจ๋‘ ์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ†ต์‹  ํŒจํ„ด์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋‘ ํ†ต์‹  ํŒจํ„ด์€ ์„ค๊ณ„ ์›์น™๊ณผ ๊ธฐ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ค๋ฅด๋‹ค.

REST

REST(Representational State Transfer)๋Š” ์›น์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” API ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๊ฐ ๋ฆฌ์†Œ์Šค๋Š” URL๋กœ ์‹๋ณ„๋˜๊ณ  HTTP ๋ฉ”์†Œ๋“œ(GET, POST, PUT, DELETE ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. REST๋Š” ์ƒํƒœ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”(stateless) ํ†ต์‹ ์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๊ฐ ์š”์ฒญ์„ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

REST์˜ ์žฅ์ 

  1. ๋‹จ์ˆœํ•จ: REST๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•˜๋‹ค.
  2. ๋ฒ”์šฉ์„ฑ: REST๋Š” HTTP ์œ„์— ๊ตฌ์ถ•๋˜์–ด ์žˆ์–ด, ์–ด๋–ค ํ”Œ๋žซํผ์—์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

REST์˜ ๋‹จ์ 

  1. ์˜ค๋ฒ„ํŽ˜์นญ(Over-fetching): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์ •๋ณด ์ค‘ ์ด๋ฆ„๋งŒ ํ•„์š”ํ•œ๋ฐ ์ „์ฒด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ์ด๋‹ค.
  2. ์–ธ๋”ํŽ˜์นญ(Under-fetching): ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ•˜๊ณ , ์ถ”๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
  3. ๋ฒ„์ „ ๊ด€๋ฆฌ: API์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋ฒ„์ „์„ ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

GraphQL

GraphQL์€ Facebook์ด ๊ฐœ๋ฐœํ•˜๊ณ  2015๋…„์— ๊ณต๊ฐœํ•œ ๋ฐ์ดํ„ฐ ์งˆ์˜ ์–ธ์–ด์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์ง€์ •ํ•˜๊ณ , ์„œ๋ฒ„๋Š” ์ •ํ™•ํžˆ ํ•ด๋‹น ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

GraphQL์˜ ์žฅ์ 

  1. ๋ฐ์ดํ„ฐ ํšจ์œจ์„ฑ: ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์˜ค๋ฒ„ํŽ˜์นญ๊ณผ ์–ธ๋”ํŽ˜์นญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋‹จ์ผ ์š”์ฒญ: ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  3. ํƒ€์ž… ์‹œ์Šคํ…œ: GraphQL์€ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ž์ฒด ๋ฌธ์„œํ™”: GraphQL ์Šคํ‚ค๋งˆ๋Š” API์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ž์ฒด ๋ฌธ์„œํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

GraphQL์˜ ๋‹จ์ 

  1. ํ•™์Šต ๊ณก์„ : ์ƒˆ๋กœ์šด ์งˆ์˜ ์–ธ์–ด์ด๋ฏ€๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด๋ฅผ ์ตํžˆ๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.