๋ธ”๋กœ๊ทธ

๐Ÿ™…โ€โ™€๏ธ GraphQL์„ WordPress ์ฝ”์–ด์— ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ด์œ 

Leonardo Losoviz
์ž‘์„ฑ์ž: Leonardo Losoviz ยท

์—…๋ฐ์ดํŠธ 01/05/2024: Gato GraphQL vs WP REST API ๋น„๊ต๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

๋„ค, ์ œ๋ชฉ์„ ์ •ํ™•ํ•˜๊ฒŒ ์ฝ์œผ์…จ์Šต๋‹ˆ๋‹ค. ์ € ์ž์‹ ์ด WordPress์šฉ GraphQL ์„œ๋ฒ„์˜ ์ œ์ž‘์ž์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , WordPress๊ฐ€ GraphQL์„ ๊ธฐ๋ณธ ํƒ‘์žฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ์ €๋Š” GraphQL์ด WordPress ์ฝ”์–ด์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ธฐ์—ฌ์ž๋“ค์ด WP REST API๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ(๋ฐฐ์น˜ ์ž‘์—… ๋“ฑ) ๊ตฌํ˜„์— ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์Ÿ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” GraphQL์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ์— ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์ ‘ํ•˜๊ณ  ๋‹ค์‹œ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ์ด์ œ๋Š” ์ถ”๊ฐ€๋˜๋Š” ์œ„ํ—˜์„ฑ ๋•Œ๋ฌธ์— WordPress๊ฐ€ GraphQL์„ ๊ธฐ๋ณธ ํƒ‘์žฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

GraphQL์„ WordPress ์ฝ”์–ด์—? ๐Ÿ˜

๋‹ค์Œ์€ ๊ทธ ์ด์œ ๋“ค์ž…๋‹ˆ๋‹ค.

1. 80/20 ๋ฒ•์น™์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค

์—ญ์‚ฌ์ ์œผ๋กœ, ํŠน์ • ๊ธฐ๋Šฅ์ด WordPress ์ฝ”์–ด์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์€ 80/20 ๋ฒ•์น™์„ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž์˜ 80% ์ด์ƒ์ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GraphQL์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–จ๊นŒ์š”? WordPress 4.7์— WP REST API๊ฐ€ ๋„์ž…๋œ ์ „๋ก€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณด๋ฉด, ๋‹ต์€ "์•„๋‹ˆ์˜ค"๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

K. Adam White(WP REST API ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋ฐ ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๋ฆฌ๋“œ)๋Š” ๊ทธ์˜ ๊ฐ•์—ฐ WordPress as Data, 5 Years In์—์„œ, ๊ธฐ์—ฌ์ž๋“ค์€ REST API๊ฐ€ ์ฝ”์–ด์™€ ํ•จ๊ป˜ ์ถœ์‹œ๋˜๋ฉด ๋„๋ฆฌ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฐ ์ผ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด์ „๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ WordPress ์‚ฌ์ดํŠธ๋ฅผ ๊ณ„์† ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ, "ํ—ค๋“œ๋ฆฌ์Šค"๋‚˜ REST API์—๋Š” ๊ฑฐ์˜ ์ฃผ๋ชฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์ด ๋ฐ”๋€ ๊ฒƒ์€ ๋‚˜์ค‘์—, WordPress 5.0์—์„œ REST API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Gutenberg ํŽธ์ง‘๊ธฐ๊ฐ€ ๋„์ž…๋˜์—ˆ์„ ๋•Œ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Gutenberg๊ฐ€ GraphQL์„ WordPress ์ฝ”์–ด์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

REST API๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ๋Œ€๋˜๋Š” ๋ฏธ๋ž˜. K. Adam White์˜ ๊ฐ•์—ฐ ์Šคํฌ๋ฆฐ์ƒท

2. ํ—ค๋“œ๋ฆฌ์Šค๋Š” ์ด๋ฏธ REST API๋กœ ์ถฉ์กฑ๋˜๊ณ  ์žˆ๋‹ค

WordPress ํŽธ์ง‘๊ธฐ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ GraphQL ์„œ๋ฒ„๋กœ ๊ฐ•ํ™”๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ธ”๋ก ๊ฐœ๋ฐœ์ž๋“ค์ด (๊ธฐ์กด REST API์— ๋”ํ•˜์—ฌ) GraphQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ…Œ๋งˆ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด GraphQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด ๋‚ด๋ถ€ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ GraphQL์„ WordPress ์ฝ”์–ด์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ WordPress์—๋Š” ์ด๋ฏธ REST API๊ฐ€ ์žˆ์œผ๋ฉฐ, GraphQL๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์€ REST๋กœ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. REST์— ๋”ํ•˜์—ฌ GraphQL์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ Toyota๋ฅผ ์šด์ „ํ•˜๊ณ  ์žˆ๋Š”๋ฐ BMW๋ฅผ ์‚ฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชฉ์ ์ง€์— ๋” ๋นจ๋ฆฌ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๊ณ , ์šด์ „ ๊ฒฝํ—˜๋„ ๋” ๋งค๋ ฅ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‘ ์ฐจ ๋ชจ๋‘ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ๋ฐ๋ ค๋‹ค ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

GraphQL์€ API์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋‚ด์ง€๋Š” ์•Š๋Š”๋‹ค

3. WordPress ํ…Œ๋งˆ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ webonyx/graphql-php๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

๊ณต๊ฐœ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด WPGraphQL์ด๋‚˜ Gato GraphQL์„ ์„ค์น˜ํ•˜๋„๋ก ์›น์‚ฌ์ดํŠธ์— ์š”๊ตฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž ์žฌ์ ์ธ ๋„๋‹ฌ ๋ฒ”์œ„๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฐœ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ GraphQL์— ์˜์กดํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ด๊ฒƒ์€ ์ •๋ง ์•„์‰ฌ์šด ์ผ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊นŠ์ด ๊ณ ๋ฏผํ•˜์—ฌ ์ž ์žฌ์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ GraphQL API Private์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ž์ฒด ์šฉ๋„๋กœ ๋‚ด์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝํ˜• GraphQL ์—”์ง„์œผ๋กœ, Composer ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. (์ด ํ”„๋กœ์ ํŠธ๋Š” ์•„์ง ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฐ๋ฐ ๋ช‡ ์ฃผ ํ›„, GraphQL ๊ธฐ๋ฐ˜์˜ WordPress ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. WPGraphQL์ด๋‚˜ Gato GraphQL์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„๊นŒ์š”? ๊ทธ๋ž˜์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ–ˆ๋”๋‹ˆ, ์ง์ ‘ webonyx/graphql-php๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šด ํ•ด๊ฒฐ์ฑ…์œผ๋กœ, ์•ฝ๊ฐ„์˜ ๋…ธ๋ ฅ์œผ๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ˜„์žฌ๋„ ํ…Œ๋งˆ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์œ„ํ•ด GraphQL์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ GraphQL์„ ์‚ฌ์šฉํ•˜์—ฌ WordPress(๊ฒŒ์‹œ๋ฌผ, ์‚ฌ์šฉ์ž, ๋Œ“๊ธ€ ๋“ฑ)์˜ ๋ฐ์ดํ„ฐ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์•„๋‹Œ ์ž์ฒด ๋ฐ์ดํ„ฐ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ WPGraphQL๊ณผ Gato GraphQL(๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ์—๋Š” GraphQL API Private)์ด ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ WordPress ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ํฌํ•จํ•˜๋Š” GraphQL ์Šคํ‚ค๋งˆ๋ฅผ ์žฌ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ, webonyx/graphql-php์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

webonyx/graphql-php๋Š” 'GraphQL ์ฐธ์กฐ ๊ตฌํ˜„์˜ PHP ํฌํŠธ'์ž…๋‹ˆ๋‹ค

4. GraphQL์—๋Š” ์ถ”๊ฐ€์ ์ธ ์œ„ํ—˜์ด ์žˆ๋‹ค

์œ„์˜ ์„ธ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ๋ชจ๋‘ GraphQL์ด WordPress๋ฅผ ๊ฐ•ํ™”ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ๊นŒ์ง€ ์„ค๋“๋ ฅ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ด€์ ์—์„œ ๋ณด๋ฉด, ์—ฌ์ „ํžˆ GraphQL์„ WordPress ์ฝ”์–ด์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋กœ๋ถ€ํ„ฐ ํ˜œํƒ์„ ๋ฐ›๊ฑฐ๋‚˜ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋„ค ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” GraphQL์ด WordPress์— ํฐ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ถ”๊ฐ€์ ์ธ ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

GraphQL์€ (๋‹ค๋ฅธ ๊ฒƒ๋“ค ์ค‘์—์„œ๋„) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต๊ฒฉ ๋ฒกํ„ฐ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค:

  • ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์›น์‚ฌ์ดํŠธ์˜ ๋ชจ๋“  ์ •๋ณด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๋น„๊ณต๊ฐœ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฟผ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์›น ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ๋ฎคํ…Œ์ด์…˜์„ ๋‹จ์ผ ์ฟผ๋ฆฌ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๋ฅผ ๋‹จ์ผ ์š”์ฒญ์—์„œ ํ•จ๊ป˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋งŽ์€ ์‚ฌ์šฉ์ž ์ด๋ฆ„/๋น„๋ฐ€๋ฒˆํ˜ธ ์กฐํ•ฉ์„ ์‹œ๋„ํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์ ‘๊ทผ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์€ ์ •๋ง ์‹ฌ๊ฐํ•œ ํ”ผํ•ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ด๋ฒ„๋ณด์•ˆ ์—ฐ๊ตฌ์› Dolev Farhi๋Š” ๋ฐœํ‘œ Damn GraphQL - Defending and Attacking APIs์—์„œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋ฐฐ์น˜๋กœ WPGraphQL ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ณต๊ฒฉํ•˜์—ฌ 30์ดˆ ์ด๋‚ด์— WordPress ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์šด์‹œํ‚ค๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

WPGraphQL ํŒ€์€ ์ฆ‰์‹œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์–ด๋–ป๊ฒŒ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? (WPGraphQL๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Gato GraphQL๋„ ํฌํ•จํ•˜์—ฌ)

์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์€ GraphQL์—์„œ๋Š” ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, REST์—์„œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด GraphQL์ด REST๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. REST์—์„œ๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์‚ฌ์ „์— ์ •์˜๋˜์–ด ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€๋งŒ, GraphQL์—์„œ๋Š” (persisted queries๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ) ๋Ÿฐํƒ€์ž„์— ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ์—”๋“œํฌ์ธํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋‚˜ ๋…ธ์ถœ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์†Œํ™€ํ•˜๋ฉด ๋‚˜์œ ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” WordPress์˜ ์ธ๊ธฐ๋ฅผ ๊ฐ์•ˆํ•˜๋ฉด, ๋‚˜์œ ์ผ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค.

GraphQL ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ณต๊ฒฉํ•˜์—ฌ WordPress ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์šด์‹œํ‚ค๋Š” ๊ณผ์ •. Dolev Farhi์˜ ๊ฐ•์—ฐ ์Šคํฌ๋ฆฐ์ƒท

๋งˆ๋ฌด๋ฆฌ

ํ™•์‹คํžˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ, ์ €๋Š” WordPress์—์„œ GraphQL์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค(๋ฌผ๋ก  ๊ทธ๋Ÿฐ ๋ง์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค!). ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ GraphQL์„ ์‚ฌ์šฉํ•˜์ž๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. GraphQL์€ ๊ฐ•๋ ฅํ•˜๋ฉฐ, ๊ทธ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. GraphQL์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ž์‹ ์ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GraphQL์„ WordPress ์ฝ”์–ด์— ํƒ‘์žฌํ•˜๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ์†์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ , ๊ทธ ์ค‘ ๋งŽ์€ ์ด๋“ค์€ ๊ทธ ์œ„ํ—˜์„ฑ์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ ์ ˆํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ž ์žฌ์ ์ธ ์žฌ์•™์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ง€๊ธˆ ์ €์˜ ์˜๊ฒฌ์œผ๋กœ๋Š”, ์ด๋ฅผ ํ”ผํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋‰ด์Šค๋ ˆํ„ฐ ๊ตฌ๋…ํ•˜๊ธฐ

Gato GraphQL์˜ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋ฅผ ๋†“์น˜์ง€ ๋งˆ์„ธ์š”.