๋กœ์ผ“๐Ÿพ
article thumbnail

 

 

k6 ๋Š” Grafana ์‚ฌ์—์„œ ์ œ๊ณต๋˜๋Š” ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ ํˆด์ž…๋‹ˆ๋‹ค. k6 ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋งˆ์น˜ ์—ฌ๋Ÿฌ ๋ช…์˜ ์œ ์ €๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Smoke Test, Load Test, Stress Test ๋“ฑ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์ฃ .

 

์•„๋ž˜๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ k6 ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
    vus: 10,
    duration: "10s",

}

export default function() {
    http.get('http://test.k6.io');
    sleep(1)
}

 

k6 run ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ๋ฉ”ํŠธ๋ฆญ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

k6 ๋ฉ”ํŠธ๋ฆญ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” "k6 ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ " ์„ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ถ”ํ›„ ๊ธ€์—์„œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๋“ฏ ์‰ฝ๊ฒŒ ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด k6 ์˜ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ๋“œ๋ฅผ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ, ํŒŒ๋“œ์˜ resources ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ์–ด๋Š ์ •๋„ ๊ฐ’์„ ์ค˜์•ผ ํ•˜๋Š” ์ง€ ๋ชจ๋ฅผ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ k6 ์˜ Load Test ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” k6 ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๊ธฐ ๋ณด๋‹จ, k6 ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ ์— ๋Œ€ํ•ด ๋งํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ๋ ›์ธ ๋‘๋”์ฝ”๋“œ~

 

 

์ฃผ์š” ์„ฑ๋Šฅ ์ง€ํ‘œ


 

ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ ํ• ๋•Œ, ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ์ฃผ์š” ์„ฑ๋Šฅ ์ง€ํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Latency(์ง€์—ฐ์‹œ๊ฐ„), Throughput(์ฒ˜๋ฆฌ๋Ÿ‰), Iterations(๋ฐ˜๋ณต) ์ž…๋‹ˆ๋‹ค.

 

์ด 3๊ฐ€์ง€ ์ง€ํ‘œ๋Š” "์‹๋‹น"์— ๋น„์œ ํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Latency

๋จผ์ € Latency(์ง€์—ฐ์‹œ๊ฐ„) ์ž…๋‹ˆ๋‹ค.

 

๊ณ ๊ฐ์ด ๋ฐฐ๋‹ฌ ์•ฑ์„ ํ†ตํ•ด ์‹๋‹น์— ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๊ณ  ๋ฌธ ์•ž๊นŒ์ง€ ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ„์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฃผ๋ฌธํ•˜๋Š”๋ฐ 1๋ถ„์ด ๊ฑธ๋ ธ๊ณ , ์š”๋ฆฌํ•˜๋Š”๋ฐ 10๋ถ„, ๋ฐฐ๋‹ฌ ์˜ค๋Š”๋ฐ 10๋ถ„ ์ด 21 ๋ถ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” 21 ๋ถ„์˜ ์ง€์—ฐ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Latency

 

์ด๋ ‡๋“ฏ ์ธํ„ฐ๋„ท์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์ „๊นŒ์ง€๋ฅผ ์ธก์ •ํ•œ ์ง€ํ‘œ๊ฐ€ Latency ์ž…๋‹ˆ๋‹ค.

 

๋‹น์—ฐํ•œ ์–˜๊ธฐ์ง€๋งŒ, Latency ๊ฐ€ ๋‚ฎ์•„์•ผ ๊ณ ๊ฐ์ด ๋” ๋นจ๋ฆฌ ์Œ์‹์„ ๋จน์„ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹์€ ์น˜ํ‚จ๋ณด๋‹ค ๋”ฐ๋œปํ•œ ์น˜ํ‚จ์ด ํ›จ์”ฌ ๋ง›์žˆ๋Š” ๋ฒ•์ด์ฃ . Latency ๊ฐ€ ๋†’๋‹ค๋ฉด ๊ณ ๊ฐ์€ ๊ธฐ๋‹ค๋ฆฌ๋Š”๋ฐ ์ง€์ณ๋ฒ„๋ฆด ๊ฒƒ์ด๊ณ , ๊ฒฐ์ฝ” ์ข‹์€ ๊ธฐ์–ต์ด ๋  ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

Throuput

Throuput(์ฒ˜๋ฆฌ๋Ÿ‰) ์ž…๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—” ํ•œ ์‹๋‹น์— 100 ๋ช…์˜ ๊ณ ๊ฐ์ด ์›จ์ดํŒ…ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Throuput ์€ ์‹๋‹น์ด 1์‹œ๊ฐ„ ๋™์•ˆ 100 ๋ช…์˜ ๊ณ ๊ฐ์—๊ฒŒ ์Œ์‹์„ ๋Œ€์ ‘ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Throuput

 

์‹๋‹น์ด ๋†’์€ Throuput ์„ ๊ฐ€์กŒ๋‹ค๋ฉด, 1์‹œ๊ฐ„ ๋™์•ˆ 100 ๋ช…์˜ ๊ณ ๊ฐ์—๊ฒŒ ๋ชจ๋‘ ์Œ์‹์„ ๋Œ€์ ‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๊ณ , ๋‚ฎ์€ Throuput ์„ ๊ฐ€์กŒ๋‹ค๋ฉด ๊ณ ๊ฐ๋“ค์€ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋‹น์—ฐํžˆ ๋†’์€ Throuput ์„ ๊ฐ€์ ธ์•ผ ๊ณ ๊ฐ๋“ค์—๊ฒŒ ์ข‹์€ ์ธ์ƒ์„ ๋‚จ๊ฒจ์ค„ ์ˆ˜ ์žˆ์ฃ .

 

 

Iterations

Iterations(๋ฐ˜๋ณต) ์ž…๋‹ˆ๋‹ค.

Iterations

 

"A ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๊ณ , ์‹๋‹น์€ ์Œ์‹์„ ์กฐ๋ฆฌํ•˜๊ณ , ๊ณ ๊ฐ์—๊ฒŒ ์Œ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค."

"B ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๊ณ , ์‹๋‹น์€ ์Œ์‹์„ ์กฐ๋ฆฌํ•˜๊ณ , ๊ณ ๊ฐ์—๊ฒŒ ์Œ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค."

"C ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๊ณ , ์‹๋‹น์€ ์Œ์‹์„ ์กฐ๋ฆฌํ•˜๊ณ , ๊ณ ๊ฐ์—๊ฒŒ ์Œ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค."

 

์ด๋ ‡๋“ฏ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ์–ผ๋งˆ๋งŒํผ ์•ˆ์ •์ ์œผ๋กœ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ง€ํ‘œ๊ฐ€ Iterations ์ž…๋‹ˆ๋‹ค.

 

 

์ฃผ์˜ํ•  ์ 


 

k6 ๋Š” ๊ฐ€์ƒ ์œ ์ €๋ฅผ ๋งŒ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์›ํ•˜๋Š” ์š”์ฒญ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์œ„์—์„œ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด,

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
    vus: 10,
    duration: "10s",

}

export default function() {
    http.get('http://test.k6.io');
    sleep(1)
}

 

10๋ช…์˜ ๊ฐ€์ƒ ์œ ์ €๊ฐ€ 10s ๋™์•ˆ http://test.k6.io ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. 

๋‚˜์ค‘์— ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ, 1๋ช…์˜ ๊ฐ€์ƒ ์œ ์ €๊ฐ€ ํ•œ๋ฒˆ๋งŒ default function ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, 10์ดˆ ๋™์•ˆ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, default function ์„ 1๋ช…์”ฉ 1๋ฒˆ ํ˜ธ์ถœํ•ด์„œ ์ด 10๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, 1๋ช…์˜ ๊ฐ€์ƒ์œ ์ €๊ฐ€ 5~10๋ฒˆ ์ •๋„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. 

 

k6 ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ง€์†์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ถ€ํ•˜๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ˆ ๋งˆ์Œ๋Œ€๋กœ ์•„๋ฌด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธ์ถœํ–ˆ๋‹ค๊ฐ„ ๋”์ฐ?ํ•œ ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ k6 ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณธ์ธ ์†Œ์œ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š๊ธฐ
  • ๋ณธ์ธ ์†Œ์œ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋„ ๋˜๋Š” ์ƒํ™ฉ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ
  • Production ํ™˜๊ฒฝ์ด ์•„๋‹Œ Dev ๋˜๋Š” Staging ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜๊ธฐ
  • ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•  ๋•Œ, ์ ˆ๋Œ€ ํ‰๊ท ๊ฐ’์œผ๋กœ ํŒ๋‹จํ•˜์ง€ ์•Š๊ธฐ (์ด์œ ๋Š” ๋ฐ”๋กœ ๋ฐ‘์—์„œ ๋‹ค๋ฃธ)
  • ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์„ ์ด์šฉํ•œ๋‹ค๋ฉด, k6 ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ Scale Up, Out ์— ์ฃผ์˜ํ•˜๊ธฐ 

 

p(90) ๊ณผ p(95) ์˜ ์˜๋ฏธ


 

์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” k6 ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์€ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ์ง€ํ‘œ

 

avg, min, med, max ์€ ํ™•๋ˆˆ์— ๋ฌด์Šจ ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ p(90) ๊ณผ p(95) ๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š” ์ง€ ๋Œ€์ถฉ์€ ์•Œ ๊ฒƒ ๊ฐ™์€๋ฐ.. ์ •ํ™•ํ•œ ๊ฐ์€ ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

p ๋Š” percentile ์„ ์˜๋ฏธํ•˜๊ณ  ๋’ค์— 90, 95 ๋Š” ๊ฐ๊ฐ 90%, 95% ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, p(90) ์€ "90%์˜ ์š”์ฒญ์ด ์ฃผ์–ด์ง„ ์ง€์—ฐ๋ณด๋‹ค ๋น ๋ฅด๊ฑฐ๋‚˜ ๋™์ผํ•œ ์‹œ๊ฐ„ ์•ˆ์— ์™„๋ฃŒ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ" ํ•˜๊ณ , p(95) ๋Š” "95%์˜ ์š”์ฒญ์ด ์ฃผ์–ด์ง„ ์ง€์—ฐ๋ณด๋‹ค ๋น ๋ฅด๊ฑฐ๋‚˜ ๋™์ผํ•œ ์‹œ๊ฐ„ ์•ˆ์— ์™„๋ฃŒ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ"ํ•ฉ๋‹ˆ๋‹ค.

 

๋ณด๋‹ค ์‰ฌ์šด ์ดํ•ด๋ฅผ ์œ„ํ•ด ์„ฑ๋Šฅ ์ง€ํ‘œ์— ๋‚˜์˜จ ๊ฒƒ์„ ๋ถ„์„ํ•ด๋ณด์ฃ .

์„ฑ๋Šฅ ์ง€ํ‘œ

 

http_req_duration ์€ ์š”์ฒญ -> ์‘๋‹ต ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ p(90) = 439.21ms ๋Š” 90% ์ด์ƒ์˜ ์š”์ฒญ์€ 439.21ms ๋‚ด์— ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๊ณ , p(95) = 783.98ms ๋Š” 95% ์ด์ƒ์˜ ์š”์ฒญ์€ 783.98ms ๋‚ด์— ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด ์ง„ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์™œ ์ด ์ง€ํ‘œ๊ฐ€ ์ค‘์š”ํ•œ๊ฑธ๊นŒ์š”? ์™œ ํ•˜ํ•„ 90๊ณผ 95 ์ผ๊นŒ์š”? 100์€ ์•ˆ๋˜๋Š” ๊ฑธ๊นŒ์š”?

 

์‹๋‹น์—์„œ 500 ๋ช…์˜ ๊ณ ๊ฐ๋“ค์ด ํ–„๋ฒ„๊ฑฐ๋ฅผ ์ฃผ๋ฌธํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

ํ–„๋ฒ„๊ฑฐ ์ฃผ๋ฌธ

 

80% ์ธ 400 ๋ช…์€ 20์ดˆ ์•ˆ์— ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›์•˜๊ณ , 20% ์ธ 100 ๋ช…์€ ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›๊ธฐ๊นŒ์ง€ 10๋ถ„ ์ด์ƒ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

 

์ด๋•Œ ํ‰๊ท ์ ์œผ๋กœ ํ•œ ๊ณ ๊ฐ์ด ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›๊ธฐ๊นŒ์ง€ ์•ฝ 4๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด 20์ดˆ ๋‚ด์— ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ‰๊ท  ์‹œ๊ฐ„์€ 4๋ถ„์œผ๋กœ ์ธก์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋ฐ›๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ด๋ ‡๋“ฏ ํ‰๊ท ์€ ์‹ค์ œ๋กœ ์ „์ฒด ์„ฑ๋Šฅ์„ ๋งํ•ด์ฃผ๊ธฐ์—” ํ•จ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ํผํฌ๋จผ์Šค ์ธก์ •์„ ์ง„ํ–‰ ํ•  ๋•Œ๋Š” ํ‰๊ท ์„ ๋ณด๋Š” ๊ฒƒ์— ์ฃผ์˜๋ฅผ ์ฃผ์–ด์•ผ ํ•˜๋ฉฐ, ํ‰๊ท ๋ณด๋‹ค๋Š” p(90) ๊ณผ p(95) ๊ฐ€ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—” 100๋งŒ ๊ฑด์˜ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ๋ชจ๋“  ์š”์ฒญ์€ 1์ดˆ ๋‚ด์— ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š”๋ฐ, ๋”ฑ ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ์ด 1๋ถ„์ด ๊ฑธ๋ ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

100 ๋งŒ ๊ฑด์˜ ์š”์ฒญ

 

๊ณผ์—ฐ ์ด ํ–‰์œ„๋Š” ์‹คํŒจํ•œ ๊ฒƒ์ผ๊นŒ์š”? ์„ฑ๊ณตํ•  ๊ฒƒ์ผ๊นŒ์š”? ์ผ๋ฐ˜์ ์ธ ๊ด€์ ์—์„œ๋Š” ์‹คํŒจ๋กœ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, Service Level Objective(SLO) ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. ์™œ๋ƒ SLO ์—์„œ 100% ๋Š” ์žˆ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

 

AWS S3 ์„œ๋น„์Šค๋งŒ ๋ด๋„ 99.999999999%์˜ ๋‚ด๊ตฌ์„ฑ๊ณผ 99.99%์˜ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 100% ๋Š” ์žˆ์„ ์ˆ˜ ์—†์ฃ .

100% ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

 

๊ทธ๋ž˜์„œ ๋ณดํ†ต "90%์˜ ์‘๋‹ต์€ ์š”์ฒญ์„ ๋ฐ›์€ ํ›„ 0.5์ดˆ ์‚ฌ์ด์— ์žˆ๋‹ค." ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ ๋‹นํ•œ ํ•ฉ์˜๋ฅผ ๋ณธ ๊ฒƒ์ด์ฃ .

 

์šฐ๋ฆฌ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๊ฑด์— ๋Œ€ํ•ด์„œ๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์†ํŽธํ•ฉ๋‹ˆ๋‹ค.

 

SLO ๊ด€์ ์œผ๋กœ ๋ณด์•˜์„ ๋•Œ 90% ๊ณผ 95% ์˜ ์ˆ˜์น˜๊ฐ€ ๊ฐ€์žฅ ๋ณดํŽธ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— k6 ์—์„œ๋Š” p(90) ๊ณผ p(95) ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ k6 ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ ์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ k6 ๋ฅผ ํ†ตํ•ด Smoke, Load, Stress Test ๋“ฑ ๋‹ค์–‘ํ•œ ํผํฌ๋จผ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€!

 

profile on loading

Loading...