๋ธ”๋กœ๊ทธ

๐Ÿš€ Gato GraphQL v18.0 ์ถœ์‹œ: ํŒŒ์‹ฑ๋œ ์ฟผ๋ฆฌ ์บ์‹ฑ, ๊ฐ•ํ™”๋œ ๋ณด์•ˆ, ์ƒˆ๋กœ์šด Gemini ๋ฒˆ์—ญ ๊ณต๊ธ‰์ž

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

Gato GraphQL v18.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๐ŸŽ‰

์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋Š” ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋นจ๋ผ์ง€๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ์ค„์—ˆ์œผ๋ฉฐ, ๋ฐ˜๋ณต์ ์ธ ํŒŒ์‹ฑ ๋ฐ ์ปดํŒŒ์ผ ์ž‘์—…์„ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ์œ„ํ•ด ํŒŒ์‹ฑ๋œ GraphQL ์ฟผ๋ฆฌ๋ฅผ ๋””์Šคํฌ์— ์บ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Email SenderยทHTTP ClientยทEnvironment Variable ํ•„๋“œ์˜ ๊ธฐ๋ณธ capability ๊ฒ€์‚ฌ๊ฐ€ ๊ฐ•ํ™”๋˜๊ณ , ์—ฌ๋Ÿฌ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๋ณด์•ˆ ํŒจ์น˜๊ฐ€ ํฌํ•จ๋˜์—ˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด Gemini ๋ฒˆ์—ญ ๊ณต๊ธ‰์ž์™€ ๋ฒˆ์—ญ์šฉ ์„ค์ • ๊ฐ€๋Šฅํ•œ Request ๋ฐ Connection ํƒ€์ž„์•„์›ƒ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด์„ธ์š”.

โšก ํŒŒ์‹ฑ๋œ GraphQL ์ฟผ๋ฆฌ๋ฅผ ๋””์Šคํฌ์— ์บ์‹œ

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

Settings ํŽ˜์ด์ง€์˜ Server Configuration > Caching > Cache parsed GraphQL queries? ์—์„œ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Settings์—์„œ ํŒŒ์‹ฑ๋œ GraphQL ์ฟผ๋ฆฌ ์บ์‹œ ํ™œ์„ฑํ™”ํ•˜๊ธฐ
Settings์—์„œ ํŒŒ์‹ฑ๋œ GraphQL ์ฟผ๋ฆฌ ์บ์‹œ ํ™œ์„ฑํ™”ํ•˜๊ธฐ

์ด๊ฒƒ์€ ์ฟผ๋ฆฌ์˜ ์ค€๋น„ ์ฒ˜๋ฆฌ(ํŒŒ์‹ฑ ๋ฐ ์ปดํŒŒ์ผ)๋ฅผ ์บ์‹œํ•˜๋Š” ๊ฒƒ์ด์ง€, ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‘๋‹ต์˜ HTTP ์บ์‹ฑ์— ๋Œ€ํ•ด์„œ๋Š” HTTP ์บ์‹ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒŒ์ผ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋”์— ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ์บ์‹œ ์ €์žฅ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์บ์‹œ ํด๋” ์žฌ์ •์˜ํ•˜๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

โžก๏ธ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์‹ฑ๋œ GraphQL ์ฟผ๋ฆฌ ์บ์‹ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

โšก ์ „๋ฐ˜์ ์ธ ๊ณ ์†ํ™” ๋ฐ ๊ฒฝ๋Ÿ‰ํ™”

ํŒŒ์‹ฑ๋œ ์ฟผ๋ฆฌ ์บ์‹œ ์™ธ์—๋„, v18์—์„œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ๊ฐ€ ์ „๋ฉด์ ์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ๋ชจ๋“  GraphQL ์š”์ฒญ์ด ๋ˆˆ์— ๋„๊ฒŒ ๋นจ๋ผ์ง€๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐœ์„ ์€ ์ „์ฒด์ ์œผ๋กœ ์ ์šฉ๋˜์–ด ๋ชจ๋“  ์ฟผ๋ฆฌ, ๋ชจ๋“  ๋””๋ ‰ํ‹ฐ๋ธŒ, ๋ชจ๋“  persisted query์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ์Šคํ‚ค๋งˆ, ๊ธด ์ฟผ๋ฆฌ, ํŽ˜์ด์ง€๋‹น ๋งŽ์€ GraphQL ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์ดํŠธ(์˜ˆ: ํ—ค๋“œ๋ฆฌ์Šค WordPress, ๋‚ด๋ถ€ API)์—์„œ ๋‘๋“œ๋Ÿฌ์ง„ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „์— PHP ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์— ๋ถ€๋”ชํžˆ๊ฑฐ๋‚˜ ์‘๋‹ต์ด ๋А๋ ธ๋˜ ๋Œ€๊ทœ๋ชจ ์‚ฌ์ดํŠธ์—์„œ๋Š” ์„ค์ • ๋ณ€๊ฒฝ ์—†์ด ์‹ค์งˆ์ ์ธ ์ฐจ์ด๋ฅผ ๋А๋‚„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค โ€” ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”’ ๋ณด์•ˆ ๊ธฐ๋ณธ๊ฐ’ ๊ฐ•ํ™”

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ์˜์—ญ์—์„œ ๊ธฐ๋ณธ ์„ค์ •์ด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Email Sender โ€” ํ•„์š”ํ•œ capability

_sendEmail mutation์€ ์ด์ œ Plugin Configuration > Email Sender์—์„œ ์„ค์ •๋œ ํŠน์ • WordPress capability๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Email Sender์˜ ํ•„์š”ํ•œ capability ์„ค์ •ํ•˜๊ธฐ
Email Sender์˜ ํ•„์š”ํ•œ capability ์„ค์ •ํ•˜๊ธฐ

๊ธฐ๋ณธ๊ฐ’์€ manage_options์ด๋ฏ€๋กœ ๊ตฌ๋…์ž๊ฐ€ mutation์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์˜ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ŠคํŒธ์„ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด **(any logged-in user)**๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

HTTP Client โ€” ๋‚ด๋ถ€ URL ์ ‘๊ทผ์— ํ•„์š”ํ•œ capability

์ผ๋ถ€ URL์€ ๋‚ด๋ถ€ ์ฃผ์†Œ(127.0.0.1, ๋งํฌ-๋กœ์ปฌ ๋ฒ”์œ„, ํด๋ผ์šฐ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—”๋“œํฌ์ธํŠธ ๋“ฑ)๋กœ ํ•ด์„๋˜์–ด ์ ‘๊ทผ ์‹œ ๋‚ด๋ถ€ ์„œ๋น„์Šค๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Plugin Configuration > HTTP Client์˜ ์ƒˆ ์„ค์ •์„ ํ†ตํ•ด ํ•ด๋‹น ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํŠน์ • WordPress capability๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๋ถ€ URL ์ ‘๊ทผ์— ํ•„์š”ํ•œ capability ์„ค์ •ํ•˜๊ธฐ
๋‚ด๋ถ€ URL ์ ‘๊ทผ์— ํ•„์š”ํ•œ capability ์„ค์ •ํ•˜๊ธฐ

๊ธฐ๋ณธ๊ฐ’์€ manage_options์ด๋ฏ€๋กœ ๋น„๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๊ฐ€ HTTP Client ํ•„๋“œ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด **(any logged-in user)**๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

Environment Variables โ€” ๋น„๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ denylist

_env ํ•„๋“œ๋Š” ์ด๋ฏธ ๋ช…์‹œ์ ์ธ allow-list๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฉฐ, ํ•ด๋‹น ๋ชฉ๋ก์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. v18์—์„œ๋Š” ๋น„๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ์•ˆ์ „๋ง์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ์ด๋Ÿฌํ•œ ์ด๋ฆ„์ด ์„ค์ •์˜ allow-list์— ํฌํ•จ๋˜์–ด ์žˆ๋”๋ผ๋„ ์ ‘๊ทผ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ฑฐ๋ถ€๋จ (WordPress ์‹œํฌ๋ฆฟ):

AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT, DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_CHARSET, DB_COLLATE.

๋˜ํ•œ ๊ฑฐ๋ถ€๋จ โ€” ์ด๋ฆ„์— ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ๋ณ€์ˆ˜: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.

๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๋Š” ๊ณ„์†ํ•ด์„œ ์ „์ฒด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

โžก๏ธ ์ „์ฒด ๋ชฉ๋ก์€ ๋ฌธ์„œ์˜ ๋ณด์•ˆ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐ŸŒ ๋ฒˆ์—ญ: ์ƒˆ๋กœ์šด Gemini ๊ณต๊ธ‰์ž

@strTranslate ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter ๋ฐ ์…€ํ”„ ํ˜ธ์ŠคํŒ… LLM๊ณผ ํ•จ๊ป˜ ๋ฒˆ์—ญ ๊ณต๊ธ‰์ž๋กœ Google Gemini๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  String ํ•„๋“œ๋ฅผ ์›ํ•˜๋Š” ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

{
  posts {
    title @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
 
    content @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
  }
}

๋‹ค์Œ Gemini ๋ชจ๋ธ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค:

  • Gemini 2.0 Flash (gemini-2.0-flash)
  • Gemini 2.0 Flash-Lite (gemini-2.0-flash-lite)
  • Gemini 2.5 Flash (gemini-2.5-flash)
  • Gemini 2.5 Flash-Lite (gemini-2.5-flash-lite)
  • Gemini 2.5 Pro (gemini-2.5-pro)
  • Gemini 3.1 Flash-Lite (gemini-3.1-flash-lite)

Google API ํ‚ค๋ฅผ ์„ค์ •ํ•˜๊ณ (Settings, wp-config.php, ๋˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด), ๋ชจ๋ธ์„ ์„ ํƒํ•˜๋ฉด ๋ฒˆ์—ญ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

โžก๏ธ Gemini ๋ฒˆ์—ญ ๋ ˆํผ๋Ÿฐ์Šค ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

โฑ๏ธ ๋ฒˆ์—ญ: Request ๋ฐ Connection ํƒ€์ž„์•„์›ƒ

๊ธด ๋ฌธ์„œ๋ฅผ ์„œ๋“œํŒŒํ‹ฐ ๊ณต๊ธ‰์ž๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญํ•˜๋Š” ๋ฐ๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—…์ŠคํŠธ๋ฆผ์ด ์‘๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด PHP๊ฐ€ ์š”์ฒญ์„ ๊ฐ•์ œ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ PHP ์›Œ์ปค๊ฐ€ ์ ์œ ๋˜์–ด ์ผ๋ฐ˜์ ์ธ HTTP 502/504 ์˜ค๋ฅ˜๋‚˜ ๋นˆ ใ€ŒMaximum execution time exceededใ€ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

v18์—์„œ๋Š” Plugin Configuration > Translation์— ๋‘ ๊ฐ€์ง€ ํƒ€์ž„์•„์›ƒ ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • Request timeout: ๋ฒˆ์—ญ ๊ณต๊ธ‰์ž๋กœ๋ถ€ํ„ฐ ์ „์ฒด ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„(์ดˆ ๋‹จ์œ„).
  • Connection timeout: ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•  ๋•Œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„(์ดˆ ๋‹จ์œ„).
๋ฒˆ์—ญ์šฉ Request timeout ๋ฐ Connection timeout ์„ค์ •ํ•˜๊ธฐ
๋ฒˆ์—ญ์šฉ Request timeout ๋ฐ Connection timeout ์„ค์ •ํ•˜๊ธฐ

์„œ๋ฒ„์˜ ์ผ๋ฐ˜ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์‹  ๋ฒˆ์—ญ์ด ์ค‘๋‹จ๋  ๋•Œ ๋กœ๊ทธ์— ์ œ์–ด๋œ ์˜ค๋ฅ˜๋กœ ๊ธฐ๋ก๋˜๋„๋ก, ๋‘ ๊ฐ’ ๋ชจ๋‘ ์„œ๋ฒ„์˜ max_execution_time๋ณด๋‹ค ์•ฝ๊ฐ„ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜์„ธ์š”. ๋ฒˆ์—ญ์ด ์ž์ฃผ ํƒ€์ž„์•„์›ƒ๋˜๋Š” ๊ฒฝ์šฐ, ๋‘ ๊ฐ’๊ณผ ์„œ๋ฒ„์˜ max_execution_time์„ ํ•จ๊ป˜ ๋†’์ด์„ธ์š”.

๐Ÿ› ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๋ณด์•ˆ ํŒจ์น˜

์œ„์˜ ์ƒˆ ๊ธฐ๋Šฅ ์™ธ์—๋„, v18.0์—๋Š” ์—ฌ๋Ÿฌ ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๋ช‡ ๊ฐ€์ง€ ๋ณด์•ˆ ์ทจ์•ฝ์  ํŒจ์น˜๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ v18๋กœ ์—…๋ฐ์ดํŠธํ•˜์‹ค ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ

๋ฆด๋ฆฌ์Šค๋Š” ํ˜„์žฌ WordPress ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๊ณ ๊ฐ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ์ค‘์ž…๋‹ˆ๋‹ค. WordPress ๊ด€๋ฆฌ์ž ํ™”๋ฉด(ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ ์—…๋ฐ์ดํŠธ)์—์„œ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ๊ณ„์ •์—์„œ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ changelog๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

v18์„ ์ฆ๊ฒจ ์‚ฌ์šฉํ•˜์„ธ์š”! ๐ŸŽ‰


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

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