{"id":2761,"date":"2026-10-26T03:26:00","date_gmt":"2026-10-26T03:26:00","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=2761"},"modified":"2026-10-26T03:26:00","modified_gmt":"2026-10-26T03:26:00","slug":"%ec%9d%b4%eb%b2%a4%ed%8a%b8-%eb%a3%a8%ed%94%84-%eb%b8%94%eb%a1%9c%ed%82%b9event-loop-blocking%ec%9d%b4%eb%9e%80","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=2761","title":{"rendered":"\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9(Event Loop Blocking)\uc774\ub780?"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9(Event Loop Blocking)\uc774\ub780?<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504\ub780?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubca4\ud2b8 \ub8e8\ud504(Event Loop)\ub294 Node.js\uc5d0\uc11c \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \ud575\uc2ec \uba54\ucee4\ub2c8\uc998\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\ub294 \uae30\ubcf8\uc801\uc73c\ub85c JavaScript \ucf54\ub4dc\ub97c \ud558\ub098\uc758 \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud55c\ub2e4. \uc774\ubca4\ud2b8 \ub8e8\ud504\ub294 \uc774 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud560 \uc791\uc5c5\uc744 \uad00\ub9ac\ud558\uace0, \ube44\ub3d9\uae30 \uc791\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc744 \ub54c \uc801\uc808\ud55c \uc2dc\uc810\uc5d0 \ucf5c\ubc31\uc744 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \ub3d9\uae30 \ucf54\ub4dc\uac00 \uc2e4\ud589\ub418\ub294 \ub3d9\uc548\uc5d0\ub294 \ub2e4\uc74c JavaScript \ucf54\ub4dc\uac00 \uc2e4\ud589\ub420 \uc218 \uc5c6\ub2e4. \ub530\ub77c\uc11c \ud2b9\uc815 \uc791\uc5c5\uc774 \uc624\ub79c \uc2dc\uac04 \ub3d9\uc548 \uba54\uc778 \uc2a4\ub808\ub4dc\ub97c \uc810\uc720\ud558\uba74 \ub2e4\ub978 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud558\ub294 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ucc98\ub7fc \uc774\ubca4\ud2b8 \ub8e8\ud504\uac00 \ub2e4\uc74c \uc791\uc5c5\uc744 \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \uc624\ub7ab\ub3d9\uc548 \uc810\uc720\ub418\ub294 \ud604\uc0c1\uc744 **\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9(Event Loop Blocking)**\uc774\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc774 \ubc1c\uc0dd\ud558\ub294 \uc6d0\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\ub294 \ub124\ud2b8\uc6cc\ud06c \uc694\uccad\uc774\ub098 \ud30c\uc77c \uc785\ucd9c\ub825\uacfc \uac19\uc740 \uc791\uc5c5\uc744 \ube44\ub3d9\uae30 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4. \ud558\uc9c0\ub9cc \ubaa8\ub4e0 \uc791\uc5c5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ub3d9\uae30 \uc2e4\ud589\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JavaScript \ucf54\ub4dc \uc790\uccb4\uc5d0\uc11c \uc2e4\ud589\ud558\ub294 CPU \uc9d1\uc57d\uc801\uc778 \uc5f0\uc0b0\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \ub3d9\uae30\uc801\uc73c\ub85c \uc218\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc11c\ubc84\uac00 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \ub3c4\uc911 \ub9e4\uc6b0 \ud070 \ub370\uc774\ud130\ub97c \ubc18\ubcf5\ubb38\uc73c\ub85c \uacc4\uc0b0\ud55c\ub2e4\uace0 \uac00\uc815\ud558\uc790. \ud574\ub2f9 \uacc4\uc0b0\uc774 \ub05d\ub0a0 \ub54c\uae4c\uc9c0 \uc774\ubca4\ud2b8 \ub8e8\ud504\ub294 \ub2e4\ub978 JavaScript \ucf5c\ubc31\uc744 \uc2e4\ud589\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c \uc0c8\ub85c\uc6b4 HTTP \uc694\uccad\uc774 \ub4e4\uc5b4\uc624\ub354\ub77c\ub3c4 \uc694\uccad \ucc98\ub9ac \ucf54\ub4dc\uac00 \uc989\uc2dc \uc2e4\ud589\ub418\uc9c0 \ubabb\ud558\uace0 \ub300\uae30\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud575\uc2ec\uc740 \ube44\ub3d9\uae30 API\ub97c \uc0ac\uc6a9\ud558\ub290\ub0d0\uac00 \uc544\ub2c8\ub77c, \uba54\uc778 \uc2a4\ub808\ub4dc\uac00 \ub2e4\ub978 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud0dc\ub85c \uc5bc\ub9c8\ub098 \uc624\ub798 \uc810\uc720\ub418\ub290\ub0d0\uc774\ub2e4.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc744 \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ub300\ud45c\uc801\uc778 \uc6d0\uc778<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">CPU \uc9d1\uc57d\uc801\uc778 \uc5f0\uc0b0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ub7c9\uc758 \ubc18\ubcf5\ubb38, \ubcf5\uc7a1\ud55c \uc54c\uace0\ub9ac\uc998, \ud070 \ub370\uc774\ud130\uc758 \ub3d9\uae30\uc2dd \ubcc0\ud658 \ub4f1\uc740 \uc774\ubca4\ud2b8 \ub8e8\ud504\ub97c \ube14\ub85c\ud0b9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function calculate() {\n  let result = 0;\n\n  for (let i = 0; i &lt; 10_000_000_000; i++) {\n    result += i;\n  }\n\n  return result;\n}\n\napp.get('\/calculate', (req, res) =&gt; {\n  const result = calculate();\n\n  res.json({ result });\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \ucf54\ub4dc\ub294 \uacc4\uc0b0\uc774 \uc644\ub8cc\ub420 \ub54c\uae4c\uc9c0 \uba54\uc778 \uc2a4\ub808\ub4dc\ub97c \uc810\uc720\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacc4\uc0b0\uc774 \uc9c4\ud589\ub418\ub294 \ub3d9\uc548 \uac19\uc740 Node.js \ud504\ub85c\uc138\uc2a4\uc5d0\uc11c \ucc98\ub9ac\ud574\uc57c \ud558\ub294 \ub2e4\ub978 \uc694\uccad\ub3c4 \uc9c0\uc5f0\ub420 \uc218 \uc788\ub2e4. \ubc18\ubcf5 \ud69f\uc218\ub294 \uc608\uc2dc\uc774\uba70, \uc2e4\uc81c \uc9c0\uc5f0 \uc2dc\uac04\uc740 CPU\uc640 \uc2e4\ud589 \ud658\uacbd\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\uae30\uc2dd \ud30c\uc77c \uc785\ucd9c\ub825<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\uc758 \ub3d9\uae30\uc2dd \ud30c\uc77c API\ub3c4 \uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc758 \uc6d0\uc778\uc774 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const fs = require('node:fs');\n\napp.get('\/file', (req, res) =&gt; {\n  const data = fs.readFileSync('.\/large-file.txt', 'utf8');\n\n  res.send(data);\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>readFileSync()<\/code>\ub294 \ud30c\uc77c \uc77d\uae30\uac00 \ub05d\ub0a0 \ub54c\uae4c\uc9c0 \ud604\uc7ac JavaScript \uc2e4\ud589\uc744 \uba48\ucd98\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\uc77c \ud06c\uae30\uac00 \ud06c\uac70\ub098 \uc800\uc7a5 \uc7a5\uce58\uc758 \uc751\ub2f5\uc774 \ub290\ub9ac\uba74 \uc694\uccad \ucc98\ub9ac \uc9c0\uc5f0\uc774 \ucee4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\uba74 \ube44\ub3d9\uae30 API\ub97c \uc0ac\uc6a9\ud558\uba74 \ud30c\uc77c \uc785\ucd9c\ub825\uc774 \uc644\ub8cc\ub418\uae30\ub97c \uae30\ub2e4\ub9ac\ub294 \ub3d9\uc548 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc9c4\ud589\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const fs = require('node:fs\/promises');\n\napp.get('\/file', async (req, res, next) =&gt; {\n  try {\n    const data = await fs.readFile('.\/large-file.txt', 'utf8');\n\n    res.send(data);\n  } catch (error) {\n    next(error);\n  }\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8, <code>await<\/code>\ub97c \uc0ac\uc6a9\ud588\ub2e4\uace0 \ud574\uc11c \ubaa8\ub4e0 \uc791\uc5c5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ube14\ub85c\ud0b9\uc774 \ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. <code>await<\/code> \ub4a4\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 \ud568\uc218 \uc790\uccb4\uac00 CPU\ub97c \uc624\ub798 \uc810\uc720\ud55c\ub2e4\uba74 \uc774\ubca4\ud2b8 \ub8e8\ud504\ub294 \uc5ec\uc804\ud788 \ube14\ub85c\ud0b9\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\uae30\uc2dd \uc554\ud638\ud654\uc640 \ud574\uc2dc \uc5f0\uc0b0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ube44\ubc00\ubc88\ud638 \ud574\uc2f1\uc774\ub098 \uc554\ud638\ud654 \uc791\uc5c5\uc5d0\uc11c\ub3c4 \uc8fc\uc758\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubd80 \uc554\ud638\ud654 API\ub294 \ub3d9\uae30\uc2dd \ubc84\uc804\uc744 \uc81c\uacf5\ud55c\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub97c \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud558\uba74 \uc5f0\uc0b0\uc774 \ub05d\ub0a0 \ub54c\uae4c\uc9c0 \ub2e4\ub978 JavaScript \uc791\uc5c5\uc774 \uc9c0\uc5f0\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const crypto = require('node:crypto');\n\napp.post('\/hash', (req, res) =&gt; {\n  const hash = crypto.pbkdf2Sync(\n    req.body.password,\n    'salt',\n    600_000,\n    32,\n    'sha256'\n  );\n\n  res.json({ hash: hash.toString('hex') });\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uac80\uc99d\ub41c \ube44\ubc00\ubc88\ud638 \ud574\uc2f1 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \uc801\uc808\ud55c \ube44\ub3d9\uae30 \ucc98\ub9ac \ubc29\uc2dd\uc744 \uc120\ud0dd\ud574\uc57c \ud55c\ub2e4. \uc704 \ucf54\ub4dc\ub294 \ub3d9\uae30 \uc5f0\uc0b0\uc774 \uc774\ubca4\ud2b8 \ub8e8\ud504\ub97c \uc810\uc720\ud560 \uc218 \uc788\uc74c\uc744 \ubcf4\uc5ec \uc8fc\uae30 \uc704\ud55c \uc608\uc2dc\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud070 JSON \ub370\uc774\ud130 \ucc98\ub9ac<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>JSON.parse()<\/code>\uc640 <code>JSON.stringify()<\/code>\ub294 \ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9e4\uc6b0 \ud070 JSON \ub370\uc774\ud130\ub97c \ud30c\uc2f1\ud558\uac70\ub098 \uc9c1\ub82c\ud654\ud558\uba74 \uc774\ubca4\ud2b8 \ub8e8\ud504\uac00 \uc7a5\uc2dc\uac04 \uc810\uc720\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app.post('\/process', (req, res) =&gt; {\n  const json = JSON.stringify(req.body);\n\n  res.json({\n    length: json.length\n  });\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc791\uc740 JSON \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\ub294 \uac83\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ubb38\uc81c\uac00 \ub418\uc9c0 \uc54a\ub294\ub2e4. \uadf8\ub7ec\ub098 \ub300\uc6a9\ub7c9 \ub370\uc774\ud130\ub098 \ubcf5\uc7a1\ud55c \uc911\ucca9 \uac1d\uccb4\ub97c \ubc18\ubcf5\ud574\uc11c \ucc98\ub9ac\ud55c\ub2e4\uba74 CPU \uc0ac\uc6a9\ub7c9\uacfc \uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\uc744 \uce21\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ube44\ub3d9\uae30 \ucc98\ub9ac\uc640 \uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc758 \ucc28\uc774<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ube44\ub3d9\uae30 \ucc98\ub9ac\uc640 \ube44\ube14\ub85c\ud0b9 \ucc98\ub9ac\ub294 \uad00\ub828\uc774 \uc788\uc9c0\ub9cc \ub3d9\uc77c\ud55c \uac1c\ub150\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ub3d9\uae30 \ucc98\ub9ac:<\/strong> \uc791\uc5c5\uc774 \ub05d\ub0a0 \ub54c\uae4c\uc9c0 \ud604\uc7ac \uc2e4\ud589 \ud750\ub984\uc774 \uae30\ub2e4\ub9b0\ub2e4.<\/li>\n\n\n\n<li><strong>\ube44\ub3d9\uae30 \ucc98\ub9ac:<\/strong> \uc791\uc5c5 \uc644\ub8cc \ud6c4 \uc774\uc5b4\uc11c \uc2e4\ud589\ud560 \ucf54\ub4dc\ub97c \ub4f1\ub85d\ud558\uace0, \uc644\ub8cc \uc2dc\uc810\uc5d0 \uacb0\uacfc\ub97c \ucc98\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li><strong>\ube14\ub85c\ud0b9:<\/strong> \ud604\uc7ac \uc2a4\ub808\ub4dc\uac00 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc9c4\ud589\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \uc810\uc720\ub418\uac70\ub098 \ub300\uae30\ud558\ub294 \uc0c1\ud0dc\ub2e4.<\/li>\n\n\n\n<li><strong>\ube44\ube14\ub85c\ud0b9:<\/strong> \ud604\uc7ac \uc2a4\ub808\ub4dc\uac00 \uc791\uc5c5\uc758 \uc644\ub8cc\ub97c \uae30\ub2e4\ub9ac\ub290\ub77c \uba48\ucd94\uc9c0 \uc54a\uace0 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc9c4\ud589\ud560 \uc218 \uc788\ub294 \ubc29\uc2dd\uc774\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\uc5d0\uc11c\ub294 \ub124\ud2b8\uc6cc\ud06c \uc785\ucd9c\ub825 \uac19\uc740 \uc791\uc5c5\uc744 \ube44\ub3d9\uae30\uc801\uc73c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4. \uc77c\ubd80 \ud30c\uc77c \uc2dc\uc2a4\ud15c \uc791\uc5c5\uacfc \uc554\ud638\ud654 \uc791\uc5c5\uc740 libuv\uc758 \uc2a4\ub808\ub4dc \ud480\uc744 \ud65c\uc6a9\ud558\uae30\ub3c4 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\ub098 \uc2a4\ub808\ub4dc \ud480\uc744 \uc0ac\uc6a9\ud558\ub294 \uc791\uc5c5\uc774\ub77c\uace0 \ud574\uc11c \ube44\uc6a9\uc774 \uc0ac\ub77c\uc9c0\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. \uc2a4\ub808\ub4dc \ud480\uc758 \uc791\uc5c5\uc774 \uacfc\ub3c4\ud558\uac8c \ubab0\ub9ac\uba74 \ub2e4\ub978 \uc791\uc5c5\uc774 \ub300\uae30\ud560 \uc218 \uc788\uace0, \uc644\ub8cc\ub41c \uc791\uc5c5\uc758 \ucf5c\ubc31\uc774 \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub420 \ub54c\ub3c4 \uc2dc\uac04\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c <code>Promise<\/code>\ub098 <code>async\/await<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc0ac\uc2e4\ub9cc\uc73c\ub85c CPU \uc9d1\uc57d\uc801\uc778 \uc5f0\uc0b0\uc774 \ubcc4\ub3c4 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc774 \uc11c\ube44\uc2a4\uc5d0 \ubbf8\uce58\ub294 \uc601\ud5a5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uc694\uccad \uc751\ub2f5 \uc2dc\uac04 \uc99d\uac00<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubca4\ud2b8 \ub8e8\ud504\uac00 \uc624\ub798 \uc810\uc720\ub418\uba74 HTTP \uc694\uccad\uc744 \uc218\uc2e0\ud588\ub354\ub77c\ub3c4 \uc694\uccad \ucc98\ub9ac \ucf5c\ubc31\uc774 \uc2e4\ud589\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub824\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8 \uacb0\uacfc \ud3c9\uade0 \uc751\ub2f5 \uc2dc\uac04\ubfd0 \uc544\ub2c8\ub77c \ud2b9\uc815 \uad6c\uac04\uc758 \uc9c0\uc5f0 \uc2dc\uac04\uc778 P95, P99\ub3c4 \uc99d\uac00\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ucc98\ub9ac\ub7c9 \uac10\uc18c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js \ud504\ub85c\uc138\uc2a4\uac00 \uc77c\uc815 \uc2dc\uac04 \ub3d9\uc548 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc694\uccad \uc218\ub294 \uc81c\ud55c\ub418\uc5b4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubca4\ud2b8 \ub8e8\ud504\uac00 \uc694\uccad \ud558\ub098\uc758 CPU \uc5f0\uc0b0\uc5d0 \uc624\ub798 \ubb36\uc774\uba74 \uadf8\ub3d9\uc548 \ub2e4\ub978 \uc694\uccad\uc744 \ucc98\ub9ac\ud560 \uae30\ud68c\uac00 \uc904\uc5b4\ub4e0\ub2e4. CPU \uc9d1\uc57d\uc801\uc778 \uc694\uccad\uc774 \ub9ce\uc544\uc9c8\uc218\ub85d \uc804\uccb4 \ucc98\ub9ac\ub7c9\uc774 \uac10\uc18c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2e4\uc2dc\uac04 \ud1b5\uc2e0 \uc9c0\uc5f0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WebSocket\uc744 \uc0ac\uc6a9\ud558\ub294 \uc2e4\uc2dc\uac04 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub3c4 \uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc740 \ubb38\uc81c\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud55c \uac8c\uc784 \ubc29\uc758 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uacfc\uc815\uc5d0\uc11c \ubb34\uac70\uc6b4 \uacc4\uc0b0\uc774 \uc2e4\ud589\ub418\uba74 \uac19\uc740 \ud504\ub85c\uc138\uc2a4\uc5d0\uc11c \ucc98\ub9ac\ud558\ub294 \ub2e4\ub978 \uac8c\uc784 \ubc29\uc758 \uba54\uc2dc\uc9c0 \uc804\ub2ec\ub3c4 \uc9c0\uc5f0\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub85c \uc778\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud50c\ub808\uc774\uc5b4\uc758 \uc785\ub825 \ucc98\ub9ac \uc9c0\uc5f0<\/li>\n\n\n\n<li>\uac8c\uc784 \uc0c1\ud0dc \ub3d9\uae30\ud654 \uc9c0\uc5f0<\/li>\n\n\n\n<li>\ub9e4\uce6d \ubc0f \uc815\uc0b0 \ucc98\ub9ac \uc9c0\uc5f0<\/li>\n\n\n\n<li>\ud551\uacfc \uc751\ub2f5 \uc2dc\uac04\uc758 \ubcc0\ub3d9 \uc99d\uac00<\/li>\n\n\n\n<li>\ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc5f0\uacb0 \ud0c0\uc784\uc544\uc6c3<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc2e4\uc2dc\uac04 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub294 \uac1c\ubcc4 \uc694\uccad\uc758 \uc2e4\ud589 \uc2dc\uac04\ubfd0 \uc544\ub2c8\ub77c \uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \uad00\ucc30\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc744 \ud574\uacb0\ud558\ub294 \ubc29\ubc95<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ube44\ub3d9\uae30 API \uc0ac\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uae30\uc2dd \ud30c\uc77c \uc785\ucd9c\ub825\uc774\ub098 \ub3d9\uae30\uc2dd \ub124\ud2b8\uc6cc\ud06c \uad00\ub828 \uc791\uc5c5\uc740 \uac00\ub2a5\ud55c \ud55c \uc801\uc808\ud55c \ube44\ub3d9\uae30 API\ub85c \ub300\uccb4\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ube44\ub3d9\uae30 API\ub97c \uc120\ud0dd\ud558\ub294 \uac83\ub9cc\uc73c\ub85c CPU \uc9d1\uc57d\uc801\uc778 JavaScript \uc5f0\uc0b0\uae4c\uc9c0 \ud574\uacb0\ub418\uc9c0\ub294 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Worker Threads \ud65c\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CPU \uc9d1\uc57d\uc801\uc778 \uc5f0\uc0b0\uc740 Node.js\uc758 <code>worker_threads<\/code> \ubaa8\ub4c8\uc744 \uc774\uc6a9\ud574 \ubcc4\ub3c4 \uc2a4\ub808\ub4dc\ub85c \ubd84\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const { Worker } = require('node:worker_threads');\n\nfunction runWorker() {\n  return new Promise((resolve, reject) =&gt; {\n    const worker = new Worker('.\/worker.js');\n\n    worker.once('message', resolve);\n    worker.once('error', reject);\n\n    worker.once('exit', (code) =&gt; {\n      if (code !== 0) {\n        reject(new Error(`Worker exited: ${code}`));\n      }\n    });\n  });\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubc29\uc2dd\uc5d0\uc11c\ub294 \ubb34\uac70\uc6b4 \uc5f0\uc0b0\uc744 <code>worker.js<\/code>\uc5d0\uc11c \uc218\ud589\ud558\ub3c4\ub85d \uad6c\uc131\ud560 \uc218 \uc788\ub2e4. \uba54\uc778 \uc2a4\ub808\ub4dc\ub294 \ud574\ub2f9 \uc5f0\uc0b0\uc758 \uc2e4\ud589\uc744 \uae30\ub2e4\ub9ac\ub290\ub77c \uc9c1\uc811 \uc810\uc720\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uad6c\ud604\uc5d0\uc11c\ub294 \uc791\uc5c5\ub7c9\uc774 \ub9ce\uc744 \ub54c\ub9c8\ub2e4 Worker\ub97c \uc0c8\ub85c \uc0dd\uc131\ud558\uae30\ubcf4\ub2e4 Worker \ud480\uc744 \uc6b4\uc601\ud558\ub294 \ubc29\uc2dd\uc744 \uace0\ub824\ud560 \uc218 \uc788\ub2e4. \uc791\uc5c5 \ubd84\ubc30, \uacb0\uacfc \uc804\ub2ec, \uc608\uc678 \ucc98\ub9ac, \uc885\ub8cc \uad00\ub9ac \ub4f1\uc758 \ube44\uc6a9\ub3c4 \ud568\uaed8 \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc791\uc5c5 \ubd84\ud560<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud070 \uc791\uc5c5\uc744 \uc791\uc740 \ub2e8\uc704\ub85c \ub098\ub204\uace0 \uac01 \ub2e8\uc704 \uc0ac\uc774\uc5d0 \uc774\ubca4\ud2b8 \ub8e8\ud504\uac00 \ub2e4\ub978 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uae30\ud68c\ub97c \uc81c\uacf5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function processBatch(items, batchSize = 100) {\n  let index = 0;\n\n  function processNextBatch() {\n    const end = Math.min(index + batchSize, items.length);\n\n    while (index &lt; end) {\n      processItem(items&#91;index]);\n      index++;\n    }\n\n    if (index &lt; items.length) {\n      setImmediate(processNextBatch);\n    }\n  }\n\n  processNextBatch();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \ucf54\ub4dc\ub294 \uc791\uc5c5\uc744 \uc5ec\ub7ec \ubb36\uc74c\uc73c\ub85c \ub098\ub204\ub294 \uac1c\ub150\uc744 \ubcf4\uc5ec \uc900\ub2e4. <code>processItem()<\/code> \uc790\uccb4\uac00 \uc9c0\ub098\uce58\uac8c \ubb34\uac81\ub2e4\uba74 \ubb36\uc74c \ud06c\uae30\ub97c \ub354 \uc904\uc774\uac70\ub098 Worker Threads\ub85c \ubd84\ub9ac\ud574\uc57c \ud55c\ub2e4. \uc2e4\uc81c \uc801\uc6a9\uc5d0\uc11c\ub294 \uc624\ub958 \ucc98\ub9ac\uc640 \uc644\ub8cc \ud1b5\uc9c0, \ucde8\uc18c, \ub3d9\uc2dc \uc2e4\ud589 \uc81c\ud55c\ub3c4 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ub370\uc774\ud130 \ucc98\ub9ac\ub7c9 \uc81c\ud55c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uccad \ud55c \ubc88\uc5d0 \uc9c0\ub098\uce58\uac8c \ud070 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc81c\ud55c\ud558\ub294 \uac83\ub3c4 \ud6a8\uacfc\uc801\uc774\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc694\uccad \ubcf8\ubb38 \ud06c\uae30 \uc81c\ud55c<\/li>\n\n\n\n<li>\ud398\uc774\uc9c0\ub124\uc774\uc158 \uc801\uc6a9<\/li>\n\n\n\n<li>\ub300\uc6a9\ub7c9 \ud30c\uc77c\uc758 \uc2a4\ud2b8\ub9ac\ubc0d \ucc98\ub9ac<\/li>\n\n\n\n<li>\ubc30\uce58 \uc791\uc5c5\uc758 \ud06c\uae30 \uc81c\ud55c<\/li>\n\n\n\n<li>CPU \uc9d1\uc57d\uc801\uc778 API\uc758 \ub3d9\uc2dc \uc2e4\ud589 \uc81c\ud55c<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7ec\ud55c \ubc29\ubc95\uc740 \ubd88\ud544\uc694\ud55c \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9\uacfc \uae34 \ub3d9\uae30 \uc2e4\ud589 \uc2dc\uac04\uc744 \uc904\uc774\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud504\ub85c\uc138\uc2a4\uc640 \uc791\uc5c5 \ubd84\ub9ac<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CPU \uc9d1\uc57d\uc801\uc778 \uc791\uc5c5\uc744 \ubcc4\ub3c4\uc758 \uc11c\ube44\uc2a4\ub098 \uc791\uc5c5 \ucc98\ub9ac \ud504\ub85c\uc138\uc2a4\ub85c \ubd84\ub9ac\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc2e4\uc2dc\uac04 \uac8c\uc784 \uc11c\ubc84\ub294 \ud50c\ub808\uc774\uc5b4 \uc785\ub825\uacfc \uac8c\uc784 \uc0c1\ud0dc \ub3d9\uae30\ud654\uc5d0 \uc9d1\uc911\ud558\uace0, \ud1b5\uacc4 \uc9d1\uacc4\ub098 \ub300\uaddc\ubaa8 \ub370\uc774\ud130 \ubd84\uc11d\uc740 \ubcc4\ub3c4\uc758 \uc791\uc5c5 \ucc98\ub9ac \uc2dc\uc2a4\ud15c\uc73c\ub85c \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 \uc2e4\uc2dc\uac04 \uc694\uccad \ucc98\ub9ac\uc640 \ubb34\uac70\uc6b4 \uacc4\uc0b0 \uc791\uc5c5 \uc0ac\uc774\uc758 \uc790\uc6d0 \uacbd\uc7c1\uc744 \uc904\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0 \uce21\uc815\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc744 \uc608\ubc29\ud558\ub824\uba74 \uc2e4\uc81c\ub85c \uc9c0\uc5f0\uc774 \ubc1c\uc0dd\ud558\ub294\uc9c0 \uce21\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\ub294 <code>perf_hooks<\/code> \ubaa8\ub4c8\uc758 <code>monitorEventLoopDelay()<\/code>\ub97c \ud1b5\ud574 \uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\uc744 \uad00\ucc30\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const {\n  monitorEventLoopDelay\n} = require('node:perf_hooks');\n\nconst histogram = monitorEventLoopDelay({\n  resolution: 20\n});\n\nhistogram.enable();\n\nsetInterval(() =&gt; {\n  console.log({\n    meanMs: histogram.mean \/ 1e6,\n    maxMs: histogram.max \/ 1e6,\n    p99Ms: histogram.percentile(99) \/ 1e6\n  });\n\n  histogram.reset();\n}, 10_000);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ucf54\ub4dc\ub294 \uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\uc758 \ud3c9\uade0, \ucd5c\ub313\uac12, P99\ub97c \ubc00\ub9ac\ucd08 \ub2e8\uc704\ub85c \ucd9c\ub825\ud55c\ub2e4. \uce21\uc815\uac12\uc740 \ud574\ub2f9 \uad00\ucc30 \uad6c\uac04\uc5d0\uc11c \uc218\uc9d1\ud55c \uc9c0\uc5f0 \ud1b5\uacc4\uc774\uba70, \uc2e4\uc81c \uc694\uccad \uc9c0\uc5f0 \uc2dc\uac04\uacfc \uc644\uc804\ud788 \ub3d9\uc77c\ud55c \uac12\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b4\uc601 \ud658\uacbd\uc5d0\uc11c\ub294 \ub2e4\uc74c \ud56d\ubaa9\uc744 \ud568\uaed8 \uad00\ucc30\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\uc758 \ud3c9\uade0\uacfc P99<\/li>\n\n\n\n<li>CPU \uc0ac\uc6a9\ub960<\/li>\n\n\n\n<li>\uc694\uccad \ucc98\ub9ac \uc2dc\uac04\uc758 P95\uc640 P99<\/li>\n\n\n\n<li>\ucc98\ub9ac\ub7c9\uacfc \uc624\ub958\uc728<\/li>\n\n\n\n<li>Worker \uc2a4\ub808\ub4dc \ubc0f \uc2a4\ub808\ub4dc \ud480\uc758 \uc791\uc5c5 \ub300\uae30<\/li>\n\n\n\n<li>\uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9\uacfc \uac00\ube44\uc9c0 \uceec\ub809\uc158\uc73c\ub85c \uc778\ud55c \uc9c0\uc5f0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc9c0\ud45c\ub4e4\uc744 \ud568\uaed8 \ubd84\uc11d\ud558\uba74 \uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9\uc774 \uc2e4\uc81c \uc11c\ube44\uc2a4 \uc9c0\uc5f0\uc758 \uc6d0\uc778\uc778\uc9c0 \ud310\ub2e8\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ucc38\uace0 \uc790\ub8cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/nodejs.org\/en\/learn\/asynchronous-work\/dont-block-the-event-loop\">Node.js \uacf5\uc2dd \ubb38\uc11c &#8211; Don&#8217;t Block the Event Loop<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nodejs.org\/en\/learn\/asynchronous-work\/event-loop-timers-and-nexttick\">Node.js \uacf5\uc2dd \ubb38\uc11c &#8211; Event Loop<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nodejs.org\/api\/worker_threads.html\">Node.js \uacf5\uc2dd \ubb38\uc11c &#8211; Worker Threads<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nodejs.org\/api\/perf_hooks.html\">Node.js \uacf5\uc2dd \ubb38\uc11c &#8211; perf_hooks<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774\ubca4\ud2b8 \ub8e8\ud504 \ube14\ub85c\ud0b9(Event Loop Blocking)\uc774\ub780? \uc774\ubca4\ud2b8 \ub8e8\ud504\ub780? \uc774\ubca4\ud2b8 \ub8e8\ud504(Event Loop)\ub294 Node.js\uc5d0\uc11c \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \ud575\uc2ec \uba54\ucee4\ub2c8\uc998\uc774\ub2e4. Node.js\ub294 \uae30\ubcf8\uc801\uc73c\ub85c JavaScript \ucf54\ub4dc\ub97c \ud558\ub098\uc758 \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud55c\ub2e4. \uc774\ubca4\ud2b8 \ub8e8\ud504\ub294 \uc774 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud560 \uc791\uc5c5\uc744 \uad00\ub9ac\ud558\uace0, \ube44\ub3d9\uae30 \uc791\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc744 \ub54c \uc801\uc808\ud55c \uc2dc\uc810\uc5d0 \ucf5c\ubc31\uc744 \uc2e4\ud589\ud55c\ub2e4. \uc77c\ubc18\uc801\uc778 \ub3d9\uae30 \ucf54\ub4dc\uac00 \uc2e4\ud589\ub418\ub294 \ub3d9\uc548\uc5d0\ub294 \ub2e4\uc74c JavaScript \ucf54\ub4dc\uac00 \uc2e4\ud589\ub420 \uc218 \uc5c6\ub2e4. \ub530\ub77c\uc11c \ud2b9\uc815 \uc791\uc5c5\uc774 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2761","post","type-post","status-publish","format-standard","hentry","category-dev-logs"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2761"}],"version-history":[{"count":1,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2761\/revisions"}],"predecessor-version":[{"id":2762,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2761\/revisions\/2762"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}