๐ท๐ฝโโ๏ธ Gato GraphQL ๊ณต๊ฐ ๊ฐ๋ฐ ์ผ์ง #1 (2021๋ 3์)
ใBuilding in the Openใ ๋ด์ค๋ ํฐ์ ๊ธฐ๋ ๋น์ ์ธ ์ฒซ ๋ฒ์งธ ํธ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!
์ด ์ฑ๋์ Gato GraphQL ๊ฐ๋ฐ์ ๊ดํ ์์์ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํ๊ธฐ ์ํ ๊ฒ์ผ๋ก, ๋งค์ ์ฒซ ๋ฒ์งธ ์ฃผ์ ๋ฐ์ก๋ฉ๋๋ค.
์ด ๊ณต๊ฐ์ ํตํด ์ง๋ ํ ๋ฌ ๋์ ์ผ์ด๋ ๋ชจ๋ ์ผ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
โ
์งํํด ์จ ์์
, ์ถ์ํ ์ ๊ธฐ๋ฅ
โ
๋ค์ ๋ฌ์ ์งํํ ์์ ์ธ ์์
โ
์ฌ์ดํธ์ ์ ์
๋ ํธ๋ํฝ ์
โ
ํ๋ฌ๊ทธ์ธ ํํฉ: ๋ค์ด๋ก๋ ์, ๋ด์ค๋ ํฐ ๊ตฌ๋
์ ์, GitHub ์คํ ์
โ
์ฌ์ ์ ์ง์ ๊ฐ๋ฅ์ฑ์ ํฅํ ์ง์ฒ
โ
์๋ก ๊ณต๊ฐ๋ ๊ฐ์ด๋
โ
์ต๊ทผ ๊ฒ์๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ์์ฝ
โ
์์๋ฆฌ์น / ํ๋ฌ๊ทธ์ธ ์ธ๊ธ
โ
์ผ๋ฐ ์์
์ด ๋ด์ค๋ ํฐ๊ฐ ๋ง์์ ๋์ ๋ค๋ฉด, ์น๊ตฌ๋ถ๋ค๊ป๋ ๊ตฌ๋ ์ ๊ถํด ์ฃผ์ธ์.
์์ํ๊ฒ ์ต๋๋ค!
์๋ด: ์ด ๋ด์ค๋ ํฐ๋ ์๋ฐฉํฅ ์ํต ์ฑ๋์ ๋๋ค. ํ๊ณ ์ถ์ ๋ง์์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋๊ธ์ ์ถ๊ฐํด ์ฃผ์ธ์ (๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ๋จ์ ์์ต๋๋ค).

์ฝ๋ฉ ์์ ๋ด์ฉ
๊ฐ์ด๋๋ฅผ ๋ณด์๋ฉด ใExtending Gato GraphQLใ ์น์ ์ด ์์ง ๋ง์ด ๋น์ด ์์ต๋๋ค:

์ ์ ์ฐ์ ๊ณผ์ ๋ ์ด ๊ฐ์ด๋๋ค์ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๊ทธ์ ์์ ํ๋ฌ๊ทธ์ธ ์ฝ๋๋ฅผ ์ต๋ํ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ ์๋ก ํ์ํ ๋ฌธ์๊ฐ ์ค์ด๋ค๊ณ , ๋ ๋ง์ ์ฌ๋๋ค์ด ์ดํดํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ์๊ฐ์ ๋ฐํ์ผ๋ก Symfony์ DependencyInjection ์ปดํฌ๋ํธ๋ฅผ ์์ ํ ๊ธฐ๋ฐ์ผ๋ก ํ๋๋ก ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํต์ฌ ์์ด๋์ด๋ ํ๋ฌ๊ทธ์ธ์ ๋ํ ํ์ฅ(์ปค์คํ
TypeResolver, FieldResolver, DirectiveResolver ๋ฑ)์ ์ปจํ
์ด๋์ ์๋น์ค๋ก ์ ์ํ๊ธฐ๋ง ํ๋ฉด, ์ปดํ์ผ๋ฌ ํจ์ค๋ฅผ ํตํด ์๋น์ค๊ฐ ์๋์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ ๊ฒ์
๋๋ค.
Symfony์ ์์กด์ฑ ์ฃผ์ ์ ์์ ํ ์์กดํ๋ฉด ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค:
โ
ํ์ฅ ๊ธฐ๋ฅ์ ๋ง๋๋ ์ผ๊ด๋ ๋จ์ผ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค
โ
ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ PHP ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ๋ง ํ๋ฉด ๋ชจ๋ ์์
์ด ์๋ฃ๋๋ฏ๋ก, ๊ฐ๋ฐ์๊ฐ ์ธ๋ถ ์ฌํญ์ ํ์
ํ ํ์๊ฐ ์์ต๋๋ค
โ
Symfony์ ๋ฌธ์๋ ๋งค์ฐ ๋ฐฉ๋ํฉ๋๋ค. ๊ฐ๋ฐ์๋ฅผ ๊ทธ์ชฝ์ผ๋ก ์๋ดํจ์ผ๋ก์จ, ์ ๊ฐ ์์ฑํ ํ์๊ฐ ์๋ ๋ฌธ์๊ฐ ๋ฉ๋๋ค
์ฝ๋๊ฐ ๊ถ๊ธํ์ ๊ฐ์? ์ต๊ทผ ๋ณํฉ๋ PR๋ค์ ํ์ธํด ๋ณด์ธ์ (#453, #452, #449 ๋ฐ ๊ธฐํ ์ฌ๋ฌ ๊ฐ).
๋ง์ด๊ทธ๋ ์ด์ ์ด 100% ์๋ฃ๋์ด ๋๋ฝ๋ ๊ฐ์ด๋๋ฅผ ์์ฑํ ์ ์์ ๋๊น์ง ์์ผ๋ก ๋ช ์ฃผ๊ฐ ์ด ์ฝ๋ ์์ ์ ๊ณ์ํ ๊ฒ์ ๋๋ค.
gatographql.com ํธ๋ํฝ
ํ ๊ฐ์ง ๋ถ๋ช ํ ๋ง์๋๋ฆฌ๊ณ ์ถ์ ๊ฒ์ด ์์ต๋๋ค: ํ๋ฌ๊ทธ์ธ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ฌ๋์ ์๋, ์ผ๋ง๋ ๋ง์ ์ฌ๋๋ค์ด ํ๋ฌ๊ทธ์ธ์ ์๊ณ ์๋์ง ํ์ ํ๊ธฐ ์ํ ๋๋ฆฌ ์งํ๋ก์ ์ ์๊ฒ ์ค์ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ํ๋ณดํ ์ถฉ๋ถํ ์๊ธ์ด ์์ต๋๋ค. ์ค๋ น ์๋ค ํ๋๋ผ๋, ์คํ ์์ค์ ์ ์ ์ ๋ฐํ๊ธฐ ๋๋ฌธ์ ํ๋ณด์ ๋์ ์ฐ์ง ์์ ๊ฒ์ ๋๋ค. (์คํ ์์ค๊ฐ ๋จ์ํ ์ด๋ค ์ ํ์ด๋ ์๋น์ค๋ฅผ ํ๋ ์ฑ๋์ ๋ถ๊ณผํ๋ค๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ค๋ฅด๊ฒ ์ง๋ง, ์ ์ ๊ฒฝ์ฐ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.)
์ฆ, ํ๋ณด๋ ์ ์ ์ผ๋ก ์ ์๋ฌธ์ ์์กดํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ํ๋ฌ๊ทธ์ธ์ ๋ธ๋ก๊ทธ์ ๊ณ ํ์ง ์ฝํ ์ธ ๋ฅผ ์์ฑํ๋ ๋ฐ ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ฌ ์์ผ๋ฉฐ, ์ด ์ฝํ ์ธ ๊ฐ ๋๋ฆฌ ํผ์ ธ์ ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ฌ๊ทธ์ธ์ ๋ชฐ๋์ ์ฌ๋๋ค์๊ฒ ๋ฟ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ง๊ธ๊น์ง์ ๊ฒฐ๊ณผ์๋ ๊ฝค ๋ง์กฑํ๊ณ ์์ต๋๋ค.
์ง๋ ๋ฌ์๋ 4,500๋ช ์ ๋ฐฉ๋ฌธ์์ 6,000 ํ์ด์ง ๋ทฐ๋ฅผ ๊ธฐ๋กํ์ต๋๋ค:

์ด ํต๊ณ๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐฉ๋ฌธ์์ ๋๋ถ๋ถ์ ๋ช ๊ฐ์ ใShow HNใ ํ๋ฐํธ ํ์ด์ง์ ์ค๋ฅผ ์ ์์๋ Hacker News์์ ์ต๋๋ค. ๋ํ Reddit์์๋ ๋ฐฉ๋ฌธ์๊ฐ ์ค๋๋ฐ, ์ฃผ๋ก /r/PHP์ /r/graphql์์์ ๋๋ค (ํญ์ ๊ธ์ ๊ณต์ ํ๋ ๊ณณ์ ๋๋ค).
ใwordpress core graphqlใ ๊ฒ์ ์ Google 1์๋ฅผ ๋ฌ์ฑํ์ฌ ๋ง์ ํธ๋ํฝ์ ๊ฐ์ ธ์์ต๋๋ค. ์์ฝ๊ฒ๋ ๊ทธ๊ฒ์ ๋จ ํ ๋ฒ๋ฟ์ด์์ต๋๋ค: 24์๊ฐ ํ, ๊ฐ์๊ธฐ ๋ํ๋ ๊ฒ์ฒ๋ผ ๊ฐ์๊ธฐ ์ฌ๋ผ์ก์ต๋๋ค. ๊ทธ ์ธ ์ผ๋ฐ์ ์ธ ๋ ์๋ Google์์ 3~10๋ช ์ ๋ฐฉ๋ฌธ์๊ฐ ์ต๋๋ค.
Twitter์ Facebook์ ์๋นํ ํธ๋ํฝ์ ๊ฐ์ ธ์ค์ง๋ง, ๋๊ตฌ์๊ฒ์์ธ์ง๋ ์ ์ ์์ต๋๋ค (์ ๋ ์๋๋๋ค. ์์ ๋ฏธ๋์ด๋ฅผ ๊ทน๋๋ก ์ ๋ชปํ๊ธฐ ๋๋ฌธ์). Twitter์๋ ๊ธ์ ๊ณต์ ํ์ง๋ง ๋ฆฌํธ์๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๐๐พ Facebook์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
(์ฐธ๊ณ ๋ก, ์์ ๋ฏธ๋์ด์์ ์ ๊ธ์ ๊ณต์ ํด ์ฃผ์๋ ๋ถ๋ค, ๊ฐ์ฌํฉ๋๋ค โค๏ธ)
graphql.org์ PHP GraphQL ์๋ฒ ๋ชฉ๋ก๊ณผ dev.to์ ๊ฒ์ฌํ ๊ธ (ใgraphql execute multiple queriesใ๋ก Google ๊ฒ์ ์ 1์)์์ ์๋ฐํ์ง๋ง ๊พธ์คํ ํธ๋ํฝ์ ์ป๊ณ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ ๊ธ์ WordPress์ ์ฃผ์ ๋ด์ค๋ ํฐ(WP Owls, wpMail.me, Post Status, WP Builds, The WP Weekly ๋ฑ)์ ๊พธ์คํ ๊ฒ์ฌ๋ฉ๋๋ค. ๊ฐ ๋ด์ค๋ ํฐ๊ฐ ์ผ๋ง๋ ๋ง์ ํธ๋ํฝ์ ๊ฐ์ ธ์ค๋์ง๋ ์ ํํ ์ ์ ์์ต๋๋ค. ์ฐธ์กฐ ์ถ์ฒ๊ฐ Gmail ๋ฑ ๋ค๋ฅธ ์๋น์ค๋ก ํ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ํฉ์ฐํด์ ๋ณด๋ฉด, ์ด ๋ด์ค๋ ํฐ๋ค์ ์๋นํ ์์ ๋ฐฉ๋ฌธ์๋ฅผ ๋ง๋ค์ด๋ ๋๋ค.
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ด ๋จ์ฐ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ฝํ ์ธ ๋ก, ์ต๊ทผ 3๊ฐ์ ๊ธ(์ด ๊ธ, ์ด ๊ธ, ์ด ๊ธ)์ด ๊ฐ๊ฐ 1,000๋ช ์ด์์ ๋ฐฉ๋ฌธ์๋ฅผ ๊ธฐ๋กํ์ต๋๋ค.
์ด ์์น๋ค์ ๊ฝค ์ข์ ๋ณด์ ๋๋ค. ์น์ฌ์ดํธ๋ฅผ ์์ํ ์ง 2๊ฐ์๋ ์ฑ ๋์ง ์์ ์ ์ ๊ฐ์ํ๋ฉด ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ์๋๋๋ค: ์ดํ๋ฅ ์ด 88%๋ก ๋งค์ฐ ๋์ต๋๋ค. ์ด ๋ถ๋ถ์ ๊ฐ์ ์ด ํ์ํฉ๋๋ค.
์งํ
์ฌ์ดํธ ํธ๋ํฝ์ ํ๋ฌ๊ทธ์ธ ์ธ์ง๋๋ฅผ ์ถ์ ํ๊ธฐ ์ํ ์ฅ์์ ์ธ ์งํ์ ๋ถ๊ณผํฉ๋๋ค. ํ์ง๋ง ๋ ์ค์ํ ์ง๋ฌธ์ ์ง๋ ๋ฌ ๋์ ์ค์ ๋ก ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ธฐ ์์ํ ์ฌ๋์ด ๋ช ๋ช ์ธ๊ฐ ํ๋ ๊ฒ์ ๋๋ค.

์ง๋ ๋ฌ ํ๋ฌ๊ทธ์ธ์ ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๐ฏ ํ๋ฌ๊ทธ์ธ ๋ค์ด๋ก๋ ์: 170
โญ๏ธ GitHub ์คํ ์: 27
๋ค์ด๋ก๋ ์๋ GitHub API์์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์ง๋ ๋ฌ์ ์์ฑ๋ ๋ฆด๋ฆฌ์ค 3๊ฐ๋ง ํฌํจํ๊ธฐ ์ํด per_page=3 ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค:
curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"์ด ์์น๋ค์ ๋ํด ๊ธฐ์์ง๋ ๋ถ๋ง์ค๋ฝ์ง๋ ์์ต๋๋ค. ํ๋ฅญํ์ง๋ ์์ง๋ง (๋ ์ข์์ผ๋ฉด ํ๋ ๋ง์์ ์์ง๋ง), ์ข์ ์์์ ์ ๋๋ค.
๋ค์ด๋ก๋ ์์ ๊ด๋ จํ์ฌ, ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ์ป๋ ๊ฒ์ด ๊ฐ์ฅ ์ด๋ ค์ด ๊ณผ์ ๋ผ๊ณ ํฉ๋๋ค. ๋ช ์ฌ๋์ด ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ๊ทธ์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ ์์ํด์ผ๋ง ์ฌ์ฉ์ด ๋ ๋๋ฆฌ ํผ์ง๋๋ค. ์ ๋ ์์ง ํ์ ์ ์ธ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ค์ ์ฐพ๋ ์ด๊ธฐ ๋จ๊ณ์ ์์ต๋๋ค.
GitHub ์คํ ์์ ๋ํด์๋, ๊ฝค ํํํด ๋ณด์ธ๋ค๊ณ ๋ง์๋๋ฆด ์๋ฐ์ ์์ต๋๋ค: ํ๊ท ํ๋ฃจ์ ์ฝ 1๊ฐ์ ์คํ์ ๋๋ค. ์ด๊ฒ์ ๊ฒฐ์ฝ ํ๋ฅญํ ๊ฒ์ด ์๋๋๋ค. Gato GraphQL๋ก ๊ตฌ์ถํ๊ณ ์๋ ๊ฒ์ด ๋ง์์ ๋์๊ณ โค๏ธ ์ ์ ์ ๋ณด์ฌ์ฃผ์๋ ๊ฒ์ ๊บผ๋ฆฌ์ง ์์ผ์ ๋ค๋ฉด, GitHub์์ โญ๏ธ ์คํ ์ฃผ๋ ๊ฒ์ ๊ณ ๋ คํด ์ฃผ์ธ์.
์ฌ์ ์ ์ง์ ๊ฐ๋ฅ์ฑ
์ด๊ฒ์ด ์ด๋ ค์ด ๋ฌธ์ ์ ๋๋ค: ํ๋ก์ ํธ๋ ์ฌ์ ์ ์ผ๋ก ์ง์ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ฝ๊ฐ์ ์์ต์ ์ฐฝ์ถํ๊ฑฐ๋, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ ์ง์๋์ง ๋ชปํ ๊ฒ์ ๋๋ค.

์ ์์ ์ ์์ ์ ์ป์ ์ ์๋ค๋ฉด, ํ์ํ ํ ๊ณ์ ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ ๊ฒ ํ์ํ ์ ๋ถ์ ๋๋ค: ์์ . ์๋ฐฑ๋ง ๋ฌ๋ฌ๋ฅผ ์๊ตฌํ๋ ํฌ์์๊ฐ ๋ฌธ์ ๋๋๋ฆฌ๋ ๊ฒ์ด ์๋๋๋ค. ๋จ์ง ์ง์ธ๋ฅผ ๋ผ ์ ์๋ ์ ์์ฒ ๋ฌ๋ฌ๋ฉด ๋ฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์์ ํ ์คํ ์์ค๋ก ์ ์งํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด๋ฅผ ์ํด ํ์ฌ ๋ช๋ช ์ ์ฌ์ ์คํฐ์์๊ฒ ์ฐ๋ฝํ์ฌ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ ์๊ธ์ ์ง์ํ ์ํฅ์ด ์๋์ง ๋ฌป๊ณ ์์ต๋๋ค. ์์ธก ๋ชจ๋์๊ฒ ์ด๋์ด ๋๋ ์ํฉ์ด ๋ ๊ฒ์ ๋๋ค.
์ปค๋ฎค๋ํฐ์ ๋๊ตฌ์๊ฒ์๋ ๋ฐ์ ์ ์๋ ์ผ๋ฐ์ ์ธ ์คํฐ์์ญ์ ์์กดํ๋ ๋์ , ์ ใํฐ ์ใ ์คํฐ์์๊ฒ ์์กดํ๋ ค๊ณ ํ๋ ๊ฑธ๊น์?
๋ค, ๊ทธ๊ฒ๋ ์๋ํ๊ณ ์์ต๋๋ค: GitHub Sponsors์ ๋ฑ๋ก๋์ด ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฏธ ์์ฒ ๋ช ์ ์ฌ์ฉ์, ํ๋ก์, ๋๋ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ ๊ตฌ๋ ์๊ฐ ์์ด์ ๊ทธ๋ค์๊ฒ ์ฐ๋ฝํ์ฌ ๋ง์ ์ง์์ ๊ธฐ๋ํ ์ ์๋ ์ํฉ์ด ์๋๋ผ๋ฉด ์ค์ ๋ก๋ ์ ์๋ํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ ํ์ค 5~10๋ฌ๋ฌ๋ฅผ ์์ฒญํ๋ค๋ฉด, ์ด ๋ฐฉ์์ผ๋ก ์ ์์ ์ ์ถฉ๋นํ๋ ค๋ฉด ์๋ฐฑ ๋ช ์ ํ์์๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๊ทธ ๋จ๊ณ์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋๋ค.
ํ์ง๋ง ๋ ๋์๊ฐ์, ์ด ๋ฐฉ์์ผ๋ก ์ ๋ง๋ก ์ฑ๊ณตํ ์ ์๋ ์ฌ๋์ด ์์๊น์? Caleb Porzio (Livewire ์ ์์)๋ ์ฑ๊ณต์ ๊ฑฐ๋์๊ณ , ํ์ฌ 1,350๋ช ์ด์์ ์คํฐ์๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค! ํ์ง๋ง ๊ทธ๊ฒ์ ์์ธ์ด์ง ํ์ค์ด ์๋๋๋ค.
์๋ฅผ ๋ค์ด Composer๋ฅผ ๋ณด์ญ์์ค. Composer๋ PHP ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ฐ๊พธ์์ง๋ง, ์คํฐ์๊ฐ ๊ฒจ์ฐ 90๋ช ์ ๋์ ๋ถ๊ณผํฉ๋๋ค. ์ด๋ป๊ฒ Composer๋ณด๋ค ๋ ๋ง์ ์คํฐ์๋ฅผ ์ป์ ์ ์๋ค๊ณ ๊ธฐ๋ํ ์ ์๊ฒ ์ต๋๊น?
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ํ์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ ์ ํ๋ก์ ํธ์ ์คํฐ์๋ฅผ ์ํ๋ ์์์ ๊ธฐ์ ๋ชจ๋์๊ฒ ์ด๋์ด ๋๋ ์ํฉ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ ๋ ๊ฒ์ ๋ฐ๋๋๋ค. Gato GraphQL์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฌด๋ฃ๋ก, ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ , ์ข์ ๊ธฐ๋ฅ์ ์ ๋ฃ ์ฅ๋ฒฝ ๋ค์ ์จ๊ธธ ํ์๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
(์ด๋ป๊ฒ ์์ธก ๋ชจ๋์๊ฒ ์ด๋์ด ๋๋์ง ์๊ณ ์ถ์ผ์๋ค๋ฉด, ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์ ๋๋ DM์ ๋ณด๋ด์ฃผ์ธ์. ๊ทํ์ ํ์ฌ๋ ๊ด์ฌ์ด ์์ ์ ์์ต๋๋ค.)
์ด ์ ๊ทผ ๋ฐฉ์์ ๋ช ๋ฌ์ ์๊ฐ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฑ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฑ๊ณตํ์ง ๋ชปํ ๊ฒฝ์ฐ์๋ง ํ๋ฌ๊ทธ์ธ์ PRO ๋ฒ์ ์ ๊ฐ๋ฐํ๊ณ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ ๋ฃ ๋ฒ์ ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ ๋๋ค. (๊ทธ๋ ๊ฒ ๋๋ฉด ์ํ๊น์ธ ๊ฒ์ด๋ฏ๋ก, ๊ทธ ๋จ๊ณ๋ฅผ ํผํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.)
๋ค์ ๋ด์ค๋ ํฐ์์ ์คํฐ์๋ฅผ ํ๋ณดํ๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ ์ ์ ๋์ ์ธ ์๋ถ์ฌ์ด์ ๊ธฐ์จ์ ๋๋ค.
์๋ด: ์ฌ์ดํธ์ RSS ํผ๋๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์ จ๋์? ๋ชจ๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๋ฐ์๋ณด๋๋ก ๊ตฌ๋ ํ๊ณ , ์ข์ํ๋ ๋ฆฌ๋์์ ์ฝ์ผ์ค ์ ์์ต๋๋ค.
์ง๋ ๋ฌ์๋ ๋งค์ฃผ ๊ณ ํ์ง ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ํ๋์ฉ ๊ฒ์ํ ์ ์์์ต๋๋ค:
๐ WordPress๋ ์ฝ์ด์ GraphQL API๋ฅผ ๊ฐ์ ธ์ผ ํ ๊น์?์์๋ WP REST API๊ฐ WordPress 5.6์์ ์ ๊ธฐ๋ฅ(๋ฐฐ์น ์์ )์ ์ป์๊ธฐ ๋๋ฌธ์, GraphQL API๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ ์ ์์ผ๋ฏ๋ก WordPress๊ฐ GraphQL๋ก๋ถํฐ ํํ์ ๋ฐ์ ์ ์๋ค๋ ์ฃผ์ฅ์ ํผ์นฉ๋๋ค.
๐ฅ Gato GraphQL vs WPGraphQL: ๋๊ฒฐ!์์๋ ์ ํ๋ฌ๊ทธ์ธ๊ณผ WPGraphQL์ ๋น๊ตํ๋ฉฐ, ์ค๋ซ๋์ ๊ธฐ์ต๋ ๋๊ฒฐ๋ก ๋ณต์ฑ ํฌ๋ค์ด ๋ ๋ง์ ๊ฒ์ ์ํ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
๐ถ๐ป GraphQL๋ก WordPress ์ ์ด์ง๊ฒ ํ๊ธฐ์์๋ ํค๋๋ฆฌ์ค WordPress๋ฅผ WordPress ์ฝ๋๋ฒ ์ด์ค์์ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์ฐํ๋ฉฐ, ์ถ์ ๋ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์์ ํ๊ฑฐ๋ (์ ์ด๋ ์ฐํํ ) ๊ธฐํ๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
๐พ Gato GraphQL์ด PHP-Scoper ๋๋ถ์ ์ค์ฝํ๋์์ต๋๋ค!์์๋ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ๊ณผ์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด PHP-Scoper๋ฅผ ์ฌ์ฉํ์ฌ WordPress ํ๋ฌ๊ทธ์ธ์ ์ค์ฝํํ๋ ์ ๋ต์ ์ค๋ช ํฉ๋๋ค.
์์๋ฆฌ์น / ํ๋ฌ๊ทธ์ธ ์ธ๊ธ
ํ๋ฌ๊ทธ์ธ์ด ๋ช ๊ณณ์์ ์๊ฐ๋ ๊ฒ์ ๋งค์ฐ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
โ WordCamp India 2021์์ ใIntro to Gato GraphQLใ ๊ฐ์ฐ์ ํ๋ฉฐ ํ๋ฌ๊ทธ์ธ ๋ฐ๋ชจ๋ฅผ ์งํํ์ต๋๋ค. (๋ฐ๋ชจ์์๋ ๋ถ๊ตฌํ๊ณ ๋๋๊ฒ๋) ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์งํ๋์์ต๋๋ค! YouTube ๋์์์ ํ์ธํด ๋ณด์ธ์.
โ Joe Howard๊ฐ WPMRR ํ์บ์คํธ๋ฅผ ์ํด ์ ๋ฅผ ์ธํฐ๋ทฐํ์ต๋๋ค. ๋ น์์ ๊ณง ๊ณต๊ฐ๋ ์์ ์ ๋๋ค.
โ Chris Coyier๊ฐ CSS-Tricks ๋ด์ค๋ ํฐ #239์์ ์ ํ๋ฌ๊ทธ์ธ์ ์๊ฐํ์ต๋๋ค!

์ด๊ฒ์ ๊ฒ
์ง๋ ํ ๋ฌ ๋์ ์ผ์ด๋ ๋ค์ํ ์ผ๋ค์ ๋ํ ์ผ๋ฐ ์์์ ๋๋ค.
Jason Bahl์ WP Engine ํฉ๋ฅ
Jason์ด WP Engine์ ํฉ๋ฅํ ๊ฒ์ ์ถํํฉ๋๋ค! WPGraphQL์์ ์ง๊ธ๊น์ง ํด์จ ๊ฒ์ฒ๋ผ ์์ผ๋ก๋ ๊ณ์ ํ์ฝํด ์ฃผ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฐธ๊ณ ๋ก, ์ฐ๋ฆฌ๊ฐ ๊ฒฝ์ ๊ด๊ณ๋ผ๋ ์ฌ์ค (๋ญ, ์ ๊ฐ ๊ทธ์ ๊ฒฝ์ํ๋ ๊ฒ์ด์ง๋ง, ๊ทธ๋ ํจ์ฌ ์์ ์์ต๋๋ค)์ด ์น๊ตฌ๊ฐ ๋ ์ ์๋ค๊ฑฐ๋ ์๋ก์ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ๋ ฅํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์ค์ ๋ก ์ฐ๋ฆฌ๋ ๊ฐ์ ๋ชฉํ๋ฅผ ๊ณต์ ํฉ๋๋ค: GraphQL์ WordPress์ ๊ฐ์ ธ์ค๋ ๊ฒ (๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์คํ๋์ด์ผ ํ๋์ง์ ๋ํด์๋ ๋ค๋ฅธ ์๊ฐ์ ๊ฐ์ง๊ณ ์์ง๋ง).
ํ์ง๋ง ์ ๋ ๊ฒฝ์์ด ์ข๋ค๊ณ ์๊ฐํ๋ฉฐ, ๋ชจ๋์๊ฒ ์ ์ตํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.

WP Engine์ Atlas ์ถ์์ ํค๋๋ฆฌ์ค์ ๋ํด ๋ชจ๋ ๊ฒ์ ์๋ค๋ ์ฃผ์ฅ (์ ๋ง๋ก?)
WP Engine์ด ์๋ก์ด ํค๋๋ฆฌ์ค WordPress ์๋ฃจ์ ์ธ Atlas๋ฅผ ์ถ์ํ ๊ฒ๋ ์ถํ๋๋ฆฝ๋๋ค.
์ํ๊น๊ฒ๋, ๋ถ์ ํํ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ๊ณ ์์ต๋๋ค:
์์ ํ ํค๋๋ฆฌ์ค ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฐํธ์๋์ฉ ๋ณ๋์ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๋ฉฐ, API(WordPress REST API ๋๋ WPGraphQL ํ๋ฌ๊ทธ์ธ)๋ฅผ ํตํด ํน์ WordPress ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๊ทธ๋ ๊ตฐ์, Gato GraphQL์ ์กด์ฌํ์ง ์๋ ๊ฑฐ์ฃ ?

์ ๋ ๋ณดํต ์ด๊ฒ์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์ ํ๋ฌ๊ทธ์ธ์ ์๊ณ ์๋ค๊ณ ๊ธฐ๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ๊ทธ๋ค์ ์ ํ๋ก์ ํธ๋ฅผ ์๊ณ ์๋ค๊ณ ์๊ฐํ๋ฉฐ, ์๋์ ์ผ๋ก ๋ฌด์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ค์ด developers.wpengine.com (ยซํค๋๋ฆฌ์ค WordPress๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก, ํํ ๋ฆฌ์ผ, ๋ธ๋ก๊ทธ, ๋ฌธ์์ ์์คํฑ ํ๋ธยป)์ ์ถ์ํ ํ, ์ ๋ ๊ทธ๋ค์๊ฒ ์ฐ๋ฝํ์ต๋๋ค:
- WP Engine์ ํค๋๋ฆฌ์ค WordPress ๋ด๋น ๊ฐ๋ฐ์ ๊ด๊ณ Matt Landers, Twitter์์
- ๊ฐ๋ฐํ, ๊ทธ๋ค์ ํค๋๋ฆฌ์ค ํ๋ ์์ํฌ GitHub ์ ์ฅ์์์
- Torque (WP Engine์ด ์์ ํ ์ก์ง)์ ๋๊ตฐ๊ฐ, @TheTorqueMag์ DM์ผ๋ก
์๋ง๋ ๊ทธ๋ค์ ์ ํ๋ก์ ํธ๋ฅผ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋๋ฉด WPGraphQL์ ์์ ํ ํฌ์๋์ด ์์ด์ ๋จ์ํ ์ ๊ฒฝ ์ฐ์ง ์์์ ์๋ ์์ต๋๋ค.
์ ํ๋ฌ๊ทธ์ธ์ ์ธ๊ธํ๊ณ ์ถ์ง ์๋ค๋ฉด, ๊ทธ๊ฒ์ ๊ทธ๊ฒ๋๋ก ๊ด์ฐฎ์ต๋๋ค. ํ์ง๋ง WP REST API์ WPGraphQL์ด ์ ์ผํ ๋ ๊ฐ์ง ์ ํ์ง๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋งค์ฐ ์คํด๋ฅผ ๋ถ๋ฌ์ผ์ผํต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ ํ๋ฌ๊ทธ์ธ์ด ํผํด๋ฅผ ์ ๊ณ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๊ฐ ํผ๋์ ๊ฒช์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค, ์์งํ ๋งํด์ ์ ๋ ํ๊ฐ ๋ฉ๋๋ค. ์ด๊ฒ์ ์ ํ ์ข์ง ์์ต๋๋ค. ๊ทธ๋ค์ด ๋ถ์ ํํ ์ ๋ณด๋ฅผ ์์ ํด ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค (์ด๋ฏธ ์ด๋ฉ์ผ์ ๋ณด๋์ต๋๋ค).
๋ง๋ฌด๋ฆฌ
์ด๊ฒ์ด ์ฒซ ๋ฒ์งธ ใBuilding Gato GraphQL in the Openใ์ ๋์ ๋๋ค.
์ด๋ ์ จ๋์? ๋๊ธ๋ก ์๊ฐ์ ๊ณต์ ํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๋ง์์ ๋์ จ๋ค๋ฉด, ์น๊ตฌ๋ค๊ณผ ๋ด์ค๋ ํฐ๋ฅผ ๊ณต์ ํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค (ํน์ ๋ ์ข์ ๊ฒ์, ๊ตฌ๋ ์ ๊ถํด ์ฃผ์ธ์).
๋ค์ ๋ฌ์ ๋ต๊ฒ ์ต๋๋ค!