K6 ๋ถํ ํ ์คํธ
์น์ฌ์ดํธ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ ๊ฒ์ฆ
๋นํ์ ์ด๋ฒ ๋ฌ 5ํ ๋จ์
๋ฌด๋ฃ ๊ฐ์
ํ๋ฉด ์ 20ํ
๐ ํ์๊ฐ์ ํ ์คํํ ์ ์๋ ๊ฒ์ฌ์ ๋๋ค
๋ถํ ํ ์คํธ๋ ๋์ ์๋ฒ์ ์ค์ ๋ถํ๋ ๊ณต๊ฒฉ ํจํด์ ๋ณด๋ด๋ฏ๋ก ์ฌ์ดํธ ์์ ์๋ง ์คํํ ์ ์์ต๋๋ค. ๋ฌด๋ฃ ํ์๊ฐ์ ํ ๋๋ฉ์ธ์ ๋ฑ๋กํ๊ณ ์์ ๊ถ(DNS TXT ๋๋ ํ์ผ)์ ์ธ์ฆํ๋ฉด ์คํํ ์ ์์ต๋๋ค.
โ ๏ธ Cloudflare๋ฅผ ์ฐ๋ ์ฌ์ดํธ๋ผ๋ฉด
๋ด ์ฐจ๋จยท์๋ ์ ํ์ด ๊ฒ์ฌ ์์ฒญ์ ๋ง์ ์ ์์ต๋๋ค. ๋งํ ์์ฒญ์ ์๋ฌ์จ์์ ๋นผ๊ณ ๋ฐ๋ก ํ์ํ๋ฉฐ,
์ ๋ฐ ์ด์ ๋งํ๋ฉด ๊ฒ์ฌ๋ฅผ ์ค๋จํ๊ณ ํ์๋ฅผ ๋๋ ค๋๋ฆฝ๋๋ค.
์ ํํ ์ธก์ ํ๋ ค๋ฉด Cloudflare ๋ณด์ ๊ท์น์์ ์ฌ์ฉ์ ์์ด์ ํธ
์ ํํ ์ธก์ ํ๋ ค๋ฉด Cloudflare ๋ณด์ ๊ท์น์์ ์ฌ์ฉ์ ์์ด์ ํธ
DevTeam-K6-LoadTest/1.0 ์์ฒญ์ ํ์ฉํด ์ฃผ์ธ์.
๋์ ์ ์์ ์ (10-100)
ํ
์คํธ ์ง์ ์๊ฐ (30-100์ด)
์ต๋ A๋ฑ๊ธ (90์ )
ํ์ฌ ์ค์ ๊ธฐ์ค
Think Time: 3-10์ด (๊ณ ์ ๊ฐ)
K6 ๋ถํ ํ ์คํธ๋?
K6๋ Grafana์์ ๊ฐ๋ฐํ ํ๋์ ์ธ ๋ถํ ํ
์คํธ ๋๊ตฌ๋ก, JavaScript๋ก ํ
์คํธ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ์ฌ
์น์ฌ์ดํธ๋ API์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๊ฒ์ฆํฉ๋๋ค.
๐ง ์ฃผ์ ๊ฐ๋ :
โข Virtual Users (VUs): ๋์์ ์ ์ํ๋ ๊ฐ์ ์ฌ์ฉ์ ์
โข Duration: ํ ์คํธ๋ฅผ ์ง์ํ๋ ์๊ฐ
โข Think Time: ๊ฐ ์์ฒญ ์ฌ์ด์ ๋๊ธฐ ์๊ฐ (์ค์ ์ฌ์ฉ์์ ํ๋ ํจํด ์๋ฎฌ๋ ์ด์ )
โข ์๋ฌ์จ: ๋ถํ ์ค ์คํจํ ์์ฒญ(์ค๋ฅ ์๋ตยท์ฐ๊ฒฐ ์คํจยท์๊ฐ ์ด๊ณผ)์ ๋น์จ
๐ ๋ฑ๊ธ์ ์๋ฌ์จ๋ก๋ง ์ ํฉ๋๋ค
์๋ต ์๊ฐ(P95 ๋ฑ)์ ์ฐธ๊ณ ๋ก๋ง ๋ณด์ฌ ์ค๋๋ค. ์ธก์ ์๋ฒ์์ ์ฐ ์๋ต ์๊ฐ์ ๋คํธ์ํฌ ๊ฒฝ๋ก์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๊ณ , Cloudflare ๊ฐ์ CDN์ ์ฐ๋ ์ฌ์ดํธ๋ ๊ตญ๋ด ์ผ๋ถ ํต์ ์ฌ์์ ํด์ธ๋ฅผ ๊ฑฐ์ณ ์ ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋๋ 8๊ฐ ๋ฆฌ์ ์ธก์ ์๋ฒ๊ฐ ์ฌ๋ ๊ธ๋ก๋ฒ ์๋ ๊ฒ์ฌ์์ ํ์ธํ์ธ์.
๐ฏ Think Time์ ์ญํ :
์ค์ ์ฌ์ฉ์๋ ํ์ด์ง๋ฅผ ๋ก๋ํ ํ ๋ด์ฉ์ ์ฝ๊ฑฐ๋ ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋ ์๊ฐ์ด ํ์ํฉ๋๋ค. Think Time์ ์ค์ ํ๋ฉด ๋ ํ์ค์ ์ธ ๋ถํ ํจํด์ ๋ง๋ค ์ ์์ต๋๋ค.
๐ง ์ฃผ์ ๊ฐ๋ :
โข Virtual Users (VUs): ๋์์ ์ ์ํ๋ ๊ฐ์ ์ฌ์ฉ์ ์
โข Duration: ํ ์คํธ๋ฅผ ์ง์ํ๋ ์๊ฐ
โข Think Time: ๊ฐ ์์ฒญ ์ฌ์ด์ ๋๊ธฐ ์๊ฐ (์ค์ ์ฌ์ฉ์์ ํ๋ ํจํด ์๋ฎฌ๋ ์ด์ )
โข ์๋ฌ์จ: ๋ถํ ์ค ์คํจํ ์์ฒญ(์ค๋ฅ ์๋ตยท์ฐ๊ฒฐ ์คํจยท์๊ฐ ์ด๊ณผ)์ ๋น์จ
๐ ๋ฑ๊ธ์ ์๋ฌ์จ๋ก๋ง ์ ํฉ๋๋ค
์๋ต ์๊ฐ(P95 ๋ฑ)์ ์ฐธ๊ณ ๋ก๋ง ๋ณด์ฌ ์ค๋๋ค. ์ธก์ ์๋ฒ์์ ์ฐ ์๋ต ์๊ฐ์ ๋คํธ์ํฌ ๊ฒฝ๋ก์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๊ณ , Cloudflare ๊ฐ์ CDN์ ์ฐ๋ ์ฌ์ดํธ๋ ๊ตญ๋ด ์ผ๋ถ ํต์ ์ฌ์์ ํด์ธ๋ฅผ ๊ฑฐ์ณ ์ ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋๋ 8๊ฐ ๋ฆฌ์ ์ธก์ ์๋ฒ๊ฐ ์ฌ๋ ๊ธ๋ก๋ฒ ์๋ ๊ฒ์ฌ์์ ํ์ธํ์ธ์.
๐ฏ Think Time์ ์ญํ :
์ค์ ์ฌ์ฉ์๋ ํ์ด์ง๋ฅผ ๋ก๋ํ ํ ๋ด์ฉ์ ์ฝ๊ฑฐ๋ ๋ค์ ํ๋์ ๊ฒฐ์ ํ๋ ์๊ฐ์ด ํ์ํฉ๋๋ค. Think Time์ ์ค์ ํ๋ฉด ๋ ํ์ค์ ์ธ ๋ถํ ํจํด์ ๋ง๋ค ์ ์์ต๋๋ค.
| ๋ฑ๊ธ | VU/Duration ์กฐ๊ฑด | ์๋ฌ์จ ๊ธฐ์ค |
|---|---|---|
| A+ | 100 VUs ์ด์ + 60์ด ์ด์ | ์๋ฌ์จ โค 0.1% |
| A | 50 VUs ์ด์ + 45์ด ์ด์ | ์๋ฌ์จ โค 0.5% |
| B | 30 VUs ์ด์ + 30์ด ์ด์ | ์๋ฌ์จ โค 1.0% |
| C | 20 VUs ์ด์ + 30์ด ์ด์ | ์๋ฌ์จ โค 2.0% |
| D | 10 VUs ์ด์ + 30์ด ์ด์ | ์๋ฌ์จ โค 5.0% |
| F | - | ์ ๊ธฐ์ค์ ๋ฏธ๋ฌ |
๐ ์ธ์ฆ์ ๋ฐ๊ธ ์กฐ๊ฑด:
โข ์ต์ 30 VUs + 30์ด ํ ์คํธ ํ์
โข B๋ฑ๊ธ ์ด์ ๋ฌ์ฑ
โข ๋ก๊ทธ์ธ ๋ฐ ๋๋ฉ์ธ ์์ ๊ถ ์ธ์ฆ ํ์
๐ ๋๋ฉ์ธ ์์ ๊ถ ์ธ์ฆ ๋ฐฉ๋ฒ:
1. ์ฌ์ด๋๋ฐ "๋๋ฉ์ธ" ํญ์์ ๋๋ฉ์ธ ๋ฑ๋ก
2. TXT ๋ ์ฝ๋ ๋๋ ํ์ผ ์ ๋ก๋๋ก ์์ ๊ถ ์ธ์ฆ
3. ์ธ์ฆ ์๋ฃ ํ ๋ถํ ํ ์คํธ ์คํ ๊ฐ๋ฅ
โข ์ต์ 30 VUs + 30์ด ํ ์คํธ ํ์
โข B๋ฑ๊ธ ์ด์ ๋ฌ์ฑ
โข ๋ก๊ทธ์ธ ๋ฐ ๋๋ฉ์ธ ์์ ๊ถ ์ธ์ฆ ํ์
๐ ๋๋ฉ์ธ ์์ ๊ถ ์ธ์ฆ ๋ฐฉ๋ฒ:
1. ์ฌ์ด๋๋ฐ "๋๋ฉ์ธ" ํญ์์ ๋๋ฉ์ธ ๋ฑ๋ก
2. TXT ๋ ์ฝ๋ ๋๋ ํ์ผ ์ ๋ก๋๋ก ์์ ๊ถ ์ธ์ฆ
3. ์ธ์ฆ ์๋ฃ ํ ๋ถํ ํ ์คํธ ์คํ ๊ฐ๋ฅ
์์ง ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค
ํ ์คํธ๋ฅผ ์คํํ๋ฉด ๋ถํ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์์ง ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค
ํ ์คํธ๋ฅผ ์คํํ๋ฉด Raw JSON ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๊ฒ์ฌ ๋ด์ญ์ ๋ณด๋ ค๋ฉด ๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.
๋๋ฉ์ธ ๊ด๋ฆฌ๋ ๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.
์ฑ๋ฅ ์์ญ์ ๋ค๋ฅธ ๊ฒ์ฌ
- ๊ธ๋ก๋ฒ ์๋ โ 8๊ฐ ๋ฆฌ์ TTFBยท๋ก๋ฉ ์๊ฐ
- ๋ชจ๋ฐ์ผ ์ฑ๋ฅ โ 6์ข ๊ธฐ๊ธฐ JS ์ค๋ฅยทํ๋ฉด ๋์นจ