{"id":1733,"date":"2026-07-10T22:16:48","date_gmt":"2026-07-10T22:16:48","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1733"},"modified":"2026-08-31T07:32:52","modified_gmt":"2026-08-31T07:32:52","slug":"artillery-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1733","title":{"rendered":"Artillery \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Artillery\ub294 <strong>\uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc API, WebSocket \ub4f1\uc758 \uc11c\ubc84\ub97c \ubd80\ud558 \ud14c\uc2a4\ud2b8\ud558\ub294 \uc624\ud508\uc18c\uc2a4 \ub3c4\uad6c<\/strong>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uac1c\ubc1c\uc744 \ud558\ub2e4 \ubcf4\uba74 \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub294 \uac83\uacfc \ub9ce\uc740 \uc694\uccad\uc744 \ub3d9\uc2dc\uc5d0 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uac83\uc740 \ubcc4\uac1c\uc758 \ubb38\uc81c\ub2e4. \ud3c9\uc18c\uc5d0\ub294 \uc815\uc0c1\uc801\uc73c\ub85c \uc751\ub2f5\ud558\ub358 API\ub3c4 \uc0ac\uc6a9\uc790\uac00 \ubab0\ub9ac\uba74 \uc751\ub2f5 \uc2dc\uac04\uc774 \uae09\uaca9\ud788 \uc99d\uac00\ud558\uac70\ub098, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uac70\ub098, \uc11c\ubc84 \uc790\uccb4\uac00 \ub2e4\uc6b4\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 \uc774\ub7f0 \uc0c1\ud669\uc744 \uc758\ub3c4\uc801\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc11c \uc11c\ubc84\uac00 \uc5b4\ub290 \uc815\ub3c4\uc758 \ubd80\ud558\uae4c\uc9c0 \ubc84\ud2f8 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ub370 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870 \uc790\uccb4\ub294 \ub2e8\uc21c\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; HTTP \/ WebSocket \uc694\uccad -&gt; Server -&gt; Response -&gt; Metrics \/ Report<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uac00 \uc5ec\ub7ec \uac00\uc0c1 \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4e4\uc5b4 \uc694\uccad\uc744 \ubc1c\uc0dd\uc2dc\ud0a4\uace0, \uadf8 \uacb0\uacfc\ub97c \uce21\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubd80\ud558 \ud14c\uc2a4\ud2b8\uac00 \ud544\uc694\ud55c \uc774\uc720<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uc758 \uc131\ub2a5\uc740 \ub2e8\uc21c\ud788 &#8220;\uc694\uccad \ud558\ub098\ub97c \uba87 ms\uc5d0 \ucc98\ub9ac\ud558\ub294\uac00&#8221;\ub9cc\uc73c\ub85c \ud310\ub2e8\ud558\uae30 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 API \ud558\ub098\uac00 \ud3c9\uade0 20ms\uc5d0 \uc751\ub2f5\ud55c\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\uac00 1\uba85\uc77c \ub54c\ub294 \ubb38\uc81c\uac00 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7f0\ub370 \ub3d9\uc2dc\uc5d0 1,000\uba85\uc774 \uc694\uccad\uc744 \ubcf4\ub0b4\uba74 \uc0c1\ud669\uc774 \ub2ec\ub77c\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc0ac\uc6a9\uc790 \uc99d\uac00 -&gt; Request \uc99d\uac00 -&gt; CPU \/ Memory \/ Connection \uc99d\uac00 -&gt; Queue \uc99d\uac00 -&gt; Response Latency \uc99d\uac00 -&gt; Timeout \/ Error \ubc1c\uc0dd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ub2e8\uc21c\ud55c \uc751\ub2f5 \uc18d\ub3c4\ubfd0 \uc544\ub2c8\ub77c <strong>\ubd80\ud558\uac00 \uc99d\uac00\ud588\uc744 \ub54c \uc2dc\uc2a4\ud15c\uc774 \uc5b4\ub5bb\uac8c \ubcc0\ud558\ub294\uc9c0<\/strong>\ub97c \ud655\uc778\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 \uc774 \uacfc\uc815\uc744 \uc790\ub3d9\ud654\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Artillery\uc758 \uae30\ubcf8 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery \ud14c\uc2a4\ud2b8\ub294 \ubcf4\ud1b5 YAML \uc124\uc815 \ud30c\uc77c\ub85c \uc791\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac04\ub2e8\ud55c HTTP \ubd80\ud558 \ud14c\uc2a4\ud2b8\ub294 \ub2e4\uc74c\ucc98\ub7fc \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>config:\n  target: \"http:\/\/localhost:3000\"\n  phases:\n    - duration: 60\n      arrivalRate: 10\n\nscenarios:\n  - flow:\n      - get:\n          url: \"\/users\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc911\uc694\ud55c \ubd80\ubd84\uc740 \ud06c\uac8c \uc138 \uac00\uc9c0\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>config -&gt; target \/ phases\nscenarios -&gt; flow<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>target<\/code>\uc740 \ud14c\uc2a4\ud2b8 \ub300\uc0c1 \uc11c\ubc84\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>phases<\/code>\ub294 \uc5bc\ub9c8\ub098 \ub9ce\uc740 \ubd80\ud558\ub97c \uc5b4\ub5a4 \ubc29\uc2dd\uc73c\ub85c \ubc1c\uc0dd\uc2dc\ud0ac\uc9c0\ub97c \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>scenarios<\/code>\ub294 \uac00\uc0c1 \uc0ac\uc6a9\uc790\uac00 \uc2e4\uc81c\ub85c \uc5b4\ub5a4 \uc694\uccad\uc744 \uc218\ud589\ud560\uc9c0\ub97c \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Virtual User<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uc758 \ubd80\ud558 \ud14c\uc2a4\ud2b8\ub97c \uc774\ud574\ud560 \ub54c <strong>Virtual User<\/strong> \uac1c\ub150\uc744 \uc7a1\uc544\ub450\uba74 \uc88b\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc0ac\uc6a9\uc790\uac00 \uc9c1\uc811 \uc811\uc18d\ud558\ub294 \ub300\uc2e0 Artillery\uac00 \uac00\uc0c1\uc758 \uc0ac\uc6a9\uc790\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; User 1 \/ User 2 \/ User 3 -&gt; Server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc0c1 \uc0ac\uc6a9\uc790\ub294 \uc2dc\ub098\ub9ac\uc624\uc5d0 \uc815\uc758\ub41c \ud589\ub3d9\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac8c\uc784 \ub85c\uadf8\uc778 API\ub77c\uba74,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Login -&gt; Get Character -&gt; Get Inventory -&gt; Start Game<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ud750\ub984\uc744 \ud558\ub098\uc758 \uc2dc\ub098\ub9ac\uc624\ub85c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud788 \ud2b9\uc815 API\uc5d0 \uc694\uccad\uc744 \uacc4\uc18d \ubcf4\ub0b4\ub294 \uac83\ubcf4\ub2e4 \uc2e4\uc81c \uc0ac\uc6a9\uc790\uc758 \ud589\ub3d9\uc5d0 \uac00\uae4c\uc6b4 \ubd80\ud558\ub97c \ub9cc\ub4e4\uc5b4\ub0bc \uc218 \uc788\ub2e4\ub294 \uac83\uc774 \uc7a5\uc810\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Arrival Rate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \uac1c\ub150\uc774 <code>arrivalRate<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>phases:\n  - duration: 60\n    arrivalRate: 10<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc124\uc815\uc740 \uc77c\uc815 \uc2dc\uac04 \ub3d9\uc548 <strong>\ucd08\ub2f9 \uc0c8\ub85c\uc6b4 \uac00\uc0c1 \uc0ac\uc6a9\uc790\ub97c 10\uba85\uc529 \uc0dd\uc131\ud558\ub294 \ud615\ud0dc\uc758 \ubd80\ud558<\/strong>\ub97c \uc758\ubbf8\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc911\uc694\ud55c \uac83\uc740 <code>arrivalRate<\/code>\uac00 &#8220;\ub3d9\uc2dc\uc5d0 \uc874\uc7ac\ud558\ub294 \uc0ac\uc6a9\uc790 \uc218&#8221;\uac00 \uc544\ub2c8\ub77c <strong>\uc0c8\ub85c\uc6b4 Virtual User\uac00 \uc2dc\uc791\ub418\ub294 \uc18d\ub3c4<\/strong>\ub77c\ub294 \uc810\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud55c \uc0ac\uc6a9\uc790\uc758 \uc2dc\ub098\ub9ac\uc624\uac00 5\ucd08 \ub3d9\uc548 \uc2e4\ud589\ub41c\ub2e4\uba74,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ucd08\ub2f9 10\uba85 \uc2dc\uc791 -&gt; 5\ucd08 \ub3d9\uc548 \uc2e4\ud589 -&gt; \ub3d9\uc2dc\uc5d0 \uc2e4\ud589\ub418\ub294 \uc0ac\uc6a9\uc790\ub294 \ub300\ub7b5 50\uba85 \uc218\uc900<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \ub3d9\uc2dc \uc2e4\ud589\ub7c9\uc774 \uacb0\uc815\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \ub3d9\uc2dc \uc0ac\uc6a9\uc790 \uc218\ub294 \uc2dc\ub098\ub9ac\uc624 \uc2e4\ud589 \uc2dc\uac04\uacfc \uc751\ub2f5 \uc2dc\uac04 \ub4f1\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c0\uae30 \ub54c\ubb38\uc5d0 <code>arrivalRate = 100<\/code>\uc774\ub77c\uace0 \ud574\uc11c \uc815\ud655\ud788 \ub3d9\uc2dc \uc0ac\uc6a9\uc790 100\uba85\uc774\ub77c\ub294 \uc758\ubbf8\ub294 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubd80\ud558\ub97c \uc810\uc9c4\uc801\uc73c\ub85c \uc99d\uac00\uc2dc\ud0a4\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ucc98\uc74c\ubd80\ud130 \uc5c4\uccad\ub09c \ubd80\ud558\ub97c \ub123\uae30\ubcf4\ub2e4 \ubd80\ud558\ub97c \ub2e8\uacc4\uc801\uc73c\ub85c \uc99d\uac00\uc2dc\ud0a4\ub294 \ubc29\uc2dd\uc774 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>phases:\n  - duration: 60\n    arrivalRate: 10\n\n  - duration: 60\n    arrivalRate: 50\n\n  - duration: 60\n    arrivalRate: 100<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 \ubd80\ud558\ub97c \uc99d\uac00\uc2dc\ud0a4\uba74\uc11c \uc11c\ubc84 \uc0c1\ud0dc\uac00 \uc5b4\ub5bb\uac8c \ubcc0\ud558\ub294\uc9c0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 users\/s -&gt; 50 users\/s -&gt; 100 users\/s -&gt; Latency \/ Error Rate \ubcc0\ud654 \ud655\uc778<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 \uad6c\uac04\ubd80\ud130 \uc751\ub2f5 \uc2dc\uac04\uc774 \uae09\uaca9\ud558\uac8c \uc99d\uac00\ud55c\ub2e4\uba74 \uadf8 \uc9c0\uc810\uc774 \uc11c\ubc84\uc758 \ubcd1\ubaa9 \uad6c\uac04\uc77c \uac00\ub2a5\uc131\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ramp-up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd80\ud558\ub97c \uac11\uc790\uae30 \uc99d\uac00\uc2dc\ud0a4\ub294 \ub300\uc2e0 \uc77c\uc815\ud55c \uc18d\ub3c4\ub85c \uc99d\uac00\uc2dc\ud0a4\ub294 \ud14c\uc2a4\ud2b8\ub3c4 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc11c\ubc84\uc5d0 \ud2b8\ub798\ud53d\uc774 \uc11c\uc11c\ud788 \uc99d\uac00\ud558\ub294 \uc0c1\ud669\uc744 \uc7ac\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 req\/s -&gt; 20 req\/s -&gt; 30 req\/s -&gt; ... -&gt; 100 req\/s<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ud14c\uc2a4\ud2b8\ub294 \uc11c\ubc84\uac00 \uc5b4\ub290 \uc21c\uac04\ubd80\ud130 \uc131\ub2a5 \uc800\ud558\ub97c \ubcf4\uc774\ub294\uc9c0 \ucc3e\ub294 \ub370 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scenario<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Scenario\ub294 \uac00\uc0c1 \uc0ac\uc6a9\uc790\uac00 \uc218\ud589\ud560 \ud589\ub3d9\uc744 \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 API \uc11c\ubc84\uc5d0\uc11c \ub85c\uadf8\uc778 \ud6c4 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uc870\ud68c\ud558\ub294 \ud750\ub984\uc744 \ud14c\uc2a4\ud2b8\ud55c\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>scenarios:\n  - flow:\n      - post:\n          url: \"\/login\"\n          json:\n            username: \"test\"\n            password: \"test\"\n\n      - get:\n          url: \"\/users\/me\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \uac00\uc0c1 \uc0ac\uc6a9\uc790\uac00 \ub2e4\uc74c\uacfc \uac19\uc740 \uc694\uccad\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/login -&gt; GET \/users\/me<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ubc29\uc2dd\uc73c\ub85c \uc2e4\uc81c \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc694\uccad \ud750\ub984\uc5d0 \uac00\uae4c\uc6b4 \ud14c\uc2a4\ud2b8\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc77c API\uc758 \ucc98\ub9ac\ub7c9\ub9cc \ud655\uc778\ud558\uace0 \uc2f6\ub2e4\uba74 \ub2e8\uc21c\ud55c \uc694\uccad \ud558\ub098\ub97c \ubc18\ubcf5\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \uc2e4\uc81c \uc11c\ube44\uc2a4 \ud750\ub984\uc744 \ud14c\uc2a4\ud2b8\ud558\uace0 \uc2f6\ub2e4\uba74 \uc5ec\ub7ec \uc694\uccad\uc744 \ud558\ub098\uc758 Scenario\ub85c \uad6c\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">HTTP API \ud14c\uc2a4\ud2b8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uc758 \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \uc0ac\uc6a9\ucc98\ub294 HTTP API\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 API\ub97c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users -&gt; POST \/login -&gt; GET \/characters -&gt; POST \/match -&gt; GET \/inventory<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 API\uc758 \ucc98\ub9ac\ub7c9\uacfc \uc751\ub2f5 \uc2dc\uac04, \uc5d0\ub7ec\uc728 \ub4f1\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc5d0\uc11c \ud754\ud788 \ubcf4\ub294 \uac12\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request Rate -&gt; Response Time \/ Latency -&gt; Error Rate -&gt; Throughput<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \ud3c9\uade0\uac12\ub9cc \ubcf4\ub294 \uac83\uc740 \uc704\ud5d8\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Percentile<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ud3c9\uade0 \uc751\ub2f5 \uc2dc\uac04\ubcf4\ub2e4 <strong>Percentile<\/strong>\uc744 \uac19\uc774 \ubcf4\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uacb0\uacfc\uac00 \ub2e4\uc74c\uacfc \uac19\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Average : 40ms\nP50     : 25ms\nP95     : 80ms\nP99     : 500ms<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud3c9\uade0\ub9cc \ubcf4\uba74 40ms\uc774\uae30 \ub54c\ubb38\uc5d0 \uc0c1\ub2f9\ud788 \ube60\ub978 \uc11c\ubc84\ucc98\ub7fc \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc P99\uac00 500ms\ub77c\uba74 \uc77c\ubd80 \uc694\uccad\uc740 \uc0c1\ub2f9\ud788 \ub290\ub9ac\ub2e4\ub294 \uc758\ubbf8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc774\ub7f0 Tail Latency\uac00 \ubb38\uc81c\uac00 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \ubd80\ud558 \ud14c\uc2a4\ud2b8 \uacb0\uacfc\ub97c \ubcfc \ub54c\ub294 \ubcf4\ud1b5 \ub2e4\uc74c\uacfc \uac19\uc774 \ud655\uc778\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>P50 \/ P90 \/ P95 \/ P99<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uac00 \ubd80\ud558\ub97c \ubc1b\uc558\uc744 \ub54c \uc751\ub2f5 \uc2dc\uac04\uc774 \uc5b4\ub514\uae4c\uc9c0 \ud280\ub294\uc9c0 \ubcf4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WebSocket \ud14c\uc2a4\ud2b8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 HTTP\ubfd0 \uc544\ub2c8\ub77c WebSocket \uae30\ubc18 \uc2dc\uc2a4\ud15c\uc758 \ubd80\ud558 \ud14c\uc2a4\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\ub098 \uc2e4\uc2dc\uac04 \uc11c\ube44\uc2a4\ub77c\uba74 HTTP API\ubcf4\ub2e4 WebSocket \uc5f0\uacb0 \uc790\uccb4\uac00 \uc911\uc694\ud55c \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; Client 1 \/ Client 2 \/ Client 3 -&gt; WebSocket Server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub9ce\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ub3d9\uc2dc\uc5d0 \uc811\uc18d\ud558\uace0 \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub294 \uc0c1\ud669\uc744 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Connect -&gt; Send Message -&gt; Receive Message -&gt; Repeat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ud14c\uc2a4\ud2b8\ub97c \ud1b5\ud574 \uc5f0\uacb0 \uc218\uac00 \uc99d\uac00\ud588\uc744 \ub54c \uc11c\ubc84\uc758 CPU, \uba54\ubaa8\ub9ac, \ub124\ud2b8\uc6cc\ud06c \uc0ac\uc6a9\ub7c9\uacfc \uba54\uc2dc\uc9c0 \ucc98\ub9ac \uc9c0\uc5f0 \ub4f1\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\ub97c \uac1c\ubc1c\ud55c\ub2e4\uba74 HTTP API \ubd80\ud558 \ud14c\uc2a4\ud2b8\uc640 WebSocket \ubd80\ud558 \ud14c\uc2a4\ud2b8\ub97c \ubd84\ub9ac\ud574\uc11c \uc0dd\uac01\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Artillery\uc640 \uc11c\ubc84 \ubaa8\ub2c8\ud130\ub9c1\uc758 \uad00\uacc4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 \ubd80\ud558\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ub3c4\uad6c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \ub0b4\ubd80 \uc0c1\ud0dc\ub97c \uc790\uc138\ud558\uac8c \uad00\ucc30\ud558\ub294 \uc5ed\ud560\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c Prometheus\uc640 \uac19\uc774 \uc0ac\uc6a9\ud558\uba74 \ud6e8\uc52c \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; Load Generation -&gt; Server -&gt; Artillery Result \/ Prometheus Metrics -&gt; Grafana<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uc5d0\uc11c\ub294 \uc694\uccad \uc131\uacf5\ub960\uacfc \uc751\ub2f5 \uc2dc\uac04 \ub4f1\uc744 \ubcf4\uace0,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prometheus\uc5d0\uc11c\ub294 \uc11c\ubc84 \ub0b4\ubd80\uc758 \uc0c1\ud0dc\ub97c \ubcf8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ubd80\ud558\ub97c \uc99d\uac00\uc2dc\ucf30\ub354\ub2c8 P99 Latency\uac00 \uc99d\uac00\ud588\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8 \uc790\uccb4\ub85c\ub294 &#8220;\uc11c\ubc84\uac00 \ub290\ub824\uc84c\ub2e4&#8221;\ub294 \uc0ac\uc2e4\ub9cc \uc54c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prometheus\ub97c \uac19\uc774 \ubcf4\uace0 \uc788\ub2e4\uba74 \uac19\uc740 \uc2dc\uac04\ub300\uc5d0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU       95%\nMemory    82%\nDB Pool   100%\nNetwork   70%<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ubcc0\ud654\uac00 \uc788\uc5c8\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud574\uc57c \ubcd1\ubaa9 \uc6d0\uc778\uc744 \ucc3e\uae30\uac00 \uc26c\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubd80\ud558 \ud14c\uc2a4\ud2b8\uc640 \ubaa8\ub2c8\ud130\ub9c1\uc740 \uc5ed\ud560\uc774 \ub2e4\ub974\ub2e4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub458\uc744 \uc11e\uc5b4\uc11c \uc774\ud574\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; \ubd80\ud558 \uc0dd\uc131\nPrometheus -&gt; \uc11c\ubc84 \uc0c1\ud0dc \uc218\uc9d1\nGrafana -&gt; \uc218\uc9d1\ub41c \uc0c1\ud0dc \uc2dc\uac01\ud654\nAlertmanager -&gt; \ud2b9\uc815 \uc870\uac74\uc758 \uc54c\ub9bc \uad00\ub9ac<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud14c\uc2a4\ud2b8 \uc2dc\ub098\ub9ac\uc624\ub294 \ub2e4\uc74c\ucc98\ub7fc \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; 100 req\/s -&gt; API Server -&gt; CPU \/ Memory \/ DB \/ Network -&gt; Prometheus -&gt; Grafana<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub9cc \uc2e4\ud589\ud558\uba74 \uc11c\ubc84\uac00 \uc5bc\ub9c8\ub098 \ub9ce\uc740 \uc694\uccad\uc744 \ucc98\ub9ac\ud588\ub294\uc9c0\ub294 \uc54c \uc218 \uc788\uc9c0\ub9cc, \uc65c \ub290\ub824\uc84c\ub294\uc9c0\ub294 \uc54c\uae30 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c Prometheus\ub9cc \uac00\uc9c0\uace0 \uc788\uc73c\uba74 \uc11c\ubc84 \uc0c1\ud0dc\ub294 \ubcfc \uc218 \uc788\uc9c0\ub9cc \uc758\ub3c4\uc801\uc73c\ub85c \uc77c\uc815\ud55c \ubd80\ud558\ub97c \ub9cc\ub4e4\uc5b4\ub0b4\uae30\ub294 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub458\uc744 \uac19\uc774 \uc0ac\uc6a9\ud558\uba74 \uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc758 \uc758\ubbf8\uac00 \ud6e8\uc52c \uba85\ud655\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Load Test, Stress Test, Spike Test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd80\ud558 \ud14c\uc2a4\ud2b8\ub77c\uace0 \ud574\ub3c4 \ubaa9\uc801\uc5d0 \ub530\ub77c \ubc29\uc2dd\uc774 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Load Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc0c1\ub418\ub294 \uc815\uc0c1\uc801\uc778 \ud2b8\ub798\ud53d\uc744 \ubc1c\uc0dd\uc2dc\ud0a8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Expected Traffic -&gt; Server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc0c1 \uc0ac\uc6a9\uc790 \uc218\uc5d0\uc11c \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stress Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uac00 \uac10\ub2f9\ud560 \uc218 \uc788\ub294 \ud55c\uacc4\ub97c \ucc3e\uae30 \uc704\ud574 \ubd80\ud558\ub97c \uacc4\uc18d \uc99d\uac00\uc2dc\ud0a8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100 -&gt; 200 -&gt; 500 -&gt; 1000 -&gt; 2000 -&gt; Server Limit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5b4\ub290 \uc9c0\uc810\ubd80\ud130 latency\ub098 error rate\uac00 \uae09\uaca9\ud558\uac8c \uc99d\uac00\ud558\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spike Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9e7\uc740 \uc2dc\uac04 \ub3d9\uc548 \ud2b8\ub798\ud53d\uc744 \uae09\uaca9\ud558\uac8c \uc99d\uac00\uc2dc\ud0a8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100 req\/s -&gt; 1000 req\/s<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac11\uc791\uc2a4\ub7ec\uc6b4 \uc774\ubca4\ud2b8\ub098 \uc811\uc18d \ud3ed\uc8fc \uc0c1\ud669\uc744 \uac00\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Soak Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc624\ub79c \uc2dc\uac04 \ub3d9\uc548 \uc77c\uc815\ud55c \ubd80\ud558\ub97c \uc720\uc9c0\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100 req\/s -&gt; \uc5ec\ub7ec \uc2dc\uac04 \ub3d9\uc548 \uc720\uc9c0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9e7\uc740 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ubc1c\uacac\ud558\uae30 \uc5b4\ub824\uc6b4 \uba54\ubaa8\ub9ac \ub204\uc218\ub098 \uc5f0\uacb0 \uad00\ub9ac \ubb38\uc81c \ub4f1\uc744 \ud655\uc778\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uacb0\uacfc\ub97c \uc5b4\ub5bb\uac8c \ubd10\uc57c \ud558\ub294\uac00<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd80\ud558 \ud14c\uc2a4\ud2b8\ub97c \ub3cc\ub9ac\uace0 &#8220;\ucd08\ub2f9 \uba87 \uc694\uccad \ucc98\ub9ac\ud588\ub2e4&#8221;\ub9cc \ubcf4\ub294 \uac83\uc740 \ubd80\uc871\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd5c\uc18c\ud55c \ub2e4\uc74c \uc815\ub3c4\ub294 \uac19\uc774 \ud655\uc778\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Throughput \/ Latency \/ P95 \/ P99 \/ Error Rate \/ CPU \/ Memory \/ Network \/ Database<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100 req\/s\nP99 = 80ms\nError = 0%\nCPU = 55%<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uba74 \uc5b4\ub290 \uc815\ub3c4 \uc5ec\uc720\uac00 \uc788\ub294 \uc0c1\ud0dc\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100 req\/s\nP99 = 2.5s\nError = 8%\nCPU = 98%<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uba74 \ub2e8\uc21c\ud788 &#8220;100 req\/s \ucc98\ub9ac \uac00\ub2a5&#8221;\uc774\ub77c\uace0 \ud310\ub2e8\ud574\uc11c\ub294 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub9ac\ub294 \ud558\uace0 \uc788\uc9c0\ub9cc \uc774\ubbf8 \uc131\ub2a5 \ud55c\uacc4\uc5d0 \uac00\uae4c\uc6cc\uc84c\uac70\ub098 \ucd08\uacfc\ud55c \uc0c1\ud0dc\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc758 \ubaa9\uc801\uc740 \ucd5c\uace0 \uae30\ub85d\uc744 \ub9cc\ub4dc\ub294 \uac83\uc774 \uc544\ub2c8\ub77c <strong>\uc11c\ube44\uc2a4\uac00 \uc5b4\ub5a4 \ubd80\ud558\uc5d0\uc11c \uc5b4\ub5a4 \uc0c1\ud0dc\uac00 \ub418\ub294\uc9c0 \ud30c\uc545\ud558\ub294 \uac83<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Artillery\ub97c \uc0ac\uc6a9\ud560 \ub54c \uc0dd\uac01\ud574\uc57c \ud560 \uac83<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd80\ud558 \ud14c\uc2a4\ud2b8 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ud574\uc11c \uc2e4\uc81c \uc11c\ube44\uc2a4\uc758 \ubaa8\ub4e0 \ud2b8\ub798\ud53d\uc744 \uc815\ud655\ud558\uac8c \uc7ac\ud604\ud560 \uc218 \uc788\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc2dc\ub098\ub9ac\uc624\uac00 \uc2e4\uc81c \uc0ac\uc6a9 \ud328\ud134\uacfc \ub2e4\ub974\uba74 \uacb0\uacfc\ub3c4 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ubaa8\ub4e0 \uac00\uc0c1 \uc0ac\uc6a9\uc790\uac00 \uac19\uc740 API\ub9cc \ud638\ucd9c\ud55c\ub2e4\uba74 \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ubd80\ud558\uc640\ub294 \uc0c1\ub2f9\ud788 \ub2e4\ub978 \uacb0\uacfc\uac00 \ub098\uc62c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \ud14c\uc2a4\ud2b8 \ub300\uc0c1 \uc11c\ubc84\ubfd0 \uc544\ub2c8\ub77c \ub2e4\uc74c \uc694\uc18c\ub3c4 \uc601\ud5a5\uc744 \uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Load Generator \/ Network \/ Server \/ Database \/ Cache \/ External API<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \ubd80\ud558 \uc0dd\uc131\uae30 \uc790\uccb4\uac00 \ubcd1\ubaa9\uc774 \ub420 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uac00 \ucda9\ubd84\ud55c \uc694\uccad\uc744 \ub9cc\ub4e4\uc5b4\ub0b4\uc9c0 \ubabb\ud55c\ub2e4\uba74 \uc11c\ubc84\uac00 \uc544\ub2c8\ub77c Artillery \uc2e4\ud589 \ud658\uacbd\uc758 \uc131\ub2a5 \ud55c\uacc4\ub97c \uce21\uc815\ud558\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ud070 \uaddc\ubaa8\uc758 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ubd80\ud558 \uc0dd\uc131\uae30 \uc790\uccb4\uc758 CPU, Memory, Network \uc0ac\uc6a9\ub7c9\ub3c4 \ud655\uc778\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prometheus\uc640 Artillery\ub97c \uac19\uc774 \ub193\uace0 \ubcf4\uba74<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub458\uc758 \uad00\uacc4\ub97c \ud55c \ubc88\uc5d0 \uc815\ub9ac\ud558\uba74 \uc774\ud574\ud558\uae30 \ud3b8\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; Load -&gt; Server -&gt; CPU \/ DB \/ Network -&gt; Prometheus -&gt; Grafana<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 \uc11c\ubc84\uc5d0 \ubd80\ud558\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ucabd\uc774\uace0, Prometheus\ub294 \uc11c\ubc84\ub97c \uad00\ucc30\ud558\ub294 \ucabd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\uac00 \ub9cc\ub4e4\uc5b4\ub0b8 \ubd80\ud558\uc640 Prometheus\uac00 \uc218\uc9d1\ud55c \uc11c\ubc84 \uc0c1\ud0dc\ub97c \uc2dc\uac04\ucd95\uc73c\ub85c \ube44\uad50\ud558\uba74 \ubcd1\ubaa9\uc744 \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc694\uccad\ub7c9\uc774 \uc99d\uac00\ud558\ub294 \uc21c\uac04 DB Connection Pool\uc774 \ud3ec\ud654\ub418\uace0 P99 Latency\uac00 \uac19\uc774 \uc99d\uac00\ud55c\ub2e4\uba74, \ubb38\uc81c\uc758 \uc6d0\uc778\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 CPU\uac00 \uc544\ub2c8\ub77c DB \uc5f0\uacb0 \uc790\uc6d0\uc77c \uac00\ub2a5\uc131\uc744 \uc758\uc2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc2dd\uc73c\ub85c <strong>\ubd80\ud558\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uace0, Metric\uc744 \uad00\ucc30\ud558\uace0, \ubcd1\ubaa9\uc744 \ucc3e\uace0, \uc218\uc815\ud55c \ub4a4 \ub2e4\uc2dc \ud14c\uc2a4\ud2b8\ud558\ub294 \uacfc\uc815<\/strong>\uc774 \uc131\ub2a5 \ud14c\uc2a4\ud2b8\uc758 \uae30\ubcf8\uc801\uc778 \ud750\ub984\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Artillery\ub294 \uc11c\ubc84\uc5d0 \ubd80\ud558\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 <strong>Load Testing \ub3c4\uad6c<\/strong>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec \uac1c\ub150\uc740 \ud06c\uac8c \ubcf5\uc7a1\ud558\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Target -&gt; \ud14c\uc2a4\ud2b8 \ub300\uc0c1 \uc11c\ubc84\nVirtual User -&gt; \uac00\uc0c1\uc758 \uc0ac\uc6a9\uc790\nScenario -&gt; \uc0ac\uc6a9\uc790\uac00 \uc218\ud589\ud560 \uc694\uccad \ud750\ub984\nPhase -&gt; \ubd80\ud558\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ubc29\uc2dd\nMetrics -&gt; \ud14c\uc2a4\ud2b8 \uacb0\uacfc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP API\ubfd0 \uc544\ub2c8\ub77c WebSocket \uac19\uc740 \uc2e4\uc2dc\uac04 \ud1b5\uc2e0 \uc2dc\uc2a4\ud15c\ub3c4 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uace0, \ub2e8\uc21c\ud55c \uc694\uccad\ub7c9 \ud14c\uc2a4\ud2b8\ubd80\ud130 \uc810\uc9c4\uc801\uc778 \ubd80\ud558 \uc99d\uac00, \uc21c\uac04\uc801\uc778 \ud2b8\ub798\ud53d \ud3ed\uc99d, \uc7a5\uc2dc\uac04 \ubd80\ud558 \uc720\uc9c0\uae4c\uc9c0 \uc5ec\ub7ec \uc0c1\ud669\uc744 \uc7ac\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc2e4\uc81c \uc131\ub2a5 \ubd84\uc11d\uc5d0\uc11c\ub294 Artillery \ud558\ub098\ub9cc \ubcf4\ub294 \uac83\ubcf4\ub2e4 Prometheus\uc640 Grafana\ub97c \uac19\uc774 \uad6c\uc131\ud558\ub294 \ud3b8\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artillery -&gt; \ubd80\ud558 \uc0dd\uc131\nServer -&gt; \ubd80\ud558 \ucc98\ub9ac\nPrometheus -&gt; \uc11c\ubc84 \uc0c1\ud0dc \uc218\uc9d1\nGrafana -&gt; \uc0c1\ud0dc \uc2dc\uac01\ud654\nArtillery Result -&gt; \uc694\uccad \uad00\uc810\uc758 \uc131\ub2a5 \ubd84\uc11d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d Artillery\uc758 \uc5ed\ud560\uc740 <strong>\uc11c\ubc84\uac00 \uc5bc\ub9c8\ub098 \ube60\ub978\uc9c0 \uce21\uc815\ud558\ub294 \uac83<\/strong>\uc5d0\uc11c \ub05d\ub098\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5b4\ub290 \uc815\ub3c4\uc758 \ubd80\ud558\uc5d0\uc11c latency\uac00 \uc99d\uac00\ud558\ub294\uc9c0, \uc5b8\uc81c error\uac00 \ubc1c\uc0dd\ud558\ub294\uc9c0, \uc11c\ubc84\uc758 \uc5b4\ub290 \uc790\uc6d0\uc774 \uba3c\uc800 \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud558\ub294\uc9c0\ub97c \ucc3e\uc544\ub0b4\ub294 \uac83\uc774 \uc2e4\uc81c \uc0ac\uc6a9 \ubaa9\uc801\uc774\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Artillery\ub294 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc API, WebSocket \ub4f1\uc758 \uc11c\ubc84\ub97c \ubd80\ud558 \ud14c\uc2a4\ud2b8\ud558\ub294 \uc624\ud508\uc18c\uc2a4 \ub3c4\uad6c\ub2e4. \uc11c\ubc84 \uac1c\ubc1c\uc744 \ud558\ub2e4 \ubcf4\uba74 \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub294 \uac83\uacfc \ub9ce\uc740 \uc694\uccad\uc744 \ub3d9\uc2dc\uc5d0 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uac83\uc740 \ubcc4\uac1c\uc758 \ubb38\uc81c\ub2e4. \ud3c9\uc18c\uc5d0\ub294 \uc815\uc0c1\uc801\uc73c\ub85c \uc751\ub2f5\ud558\ub358 API\ub3c4 \uc0ac\uc6a9\uc790\uac00 \ubab0\ub9ac\uba74 \uc751\ub2f5 \uc2dc\uac04\uc774 \uae09\uaca9\ud788 \uc99d\uac00\ud558\uac70\ub098, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uac70\ub098, \uc11c\ubc84 \uc790\uccb4\uac00 \ub2e4\uc6b4\ub420 \uc218 \uc788\ub2e4. Artillery\ub294 \uc774\ub7f0 \uc0c1\ud669\uc744 \uc758\ub3c4\uc801\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc11c \uc11c\ubc84\uac00 \uc5b4\ub290 \uc815\ub3c4\uc758 \ubd80\ud558\uae4c\uc9c0 \ubc84\ud2f8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[],"class_list":["post-1733","post","type-post","status-publish","format-standard","hentry","category-tools"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1733","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=1733"}],"version-history":[{"count":3,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1733\/revisions"}],"predecessor-version":[{"id":2011,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1733\/revisions\/2011"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}