| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- ์ฐ๋ถํฌdb
- ํ๋ก์ด๋์์
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ์ฃผ๊ธฐ์ ํธ
- i-type
- ์ฝ๋ฉํ ์คํธ์ค๋น
- IEEE 802
- git merge
- ๊ฐ๋ฐ์์ทจ์
- ๋ฉํฐํ๋ ์ฑ
- 99ํด๋ฝ
- mariadb
- ์ค๋ ๋
- ์ค๋ฅ์ ์ด
- ํ๋ ์ ๊ตฌ์กฐ
- tcp ์ธ๊ทธ๋จผํธ
- ํ ํฐ ๋ฒ์ค
- ํญํด99
- ๋ฐ์ดํฐ ์ ์ก
- ๋น์ฃผ๊ธฐ์ ํธ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- xv6
- ์์๋ฒํธ
- ์ค๋ธ์
- well known ํฌํธ
- ์ค๋ฅ๊ฒ์ถ
- reducible
- til
- java thread
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
Unfazedโ๏ธ๐ฏ
์ฑ๋ฅ ํ ์คํธ(์ข ๋ฅ, ์งํ, ๋๊ตฌ) ๋ณธ๋ฌธ
์ฑ๋ฅ ํ ์คํธ(์ข ๋ฅ, ์งํ, ๋๊ตฌ)
9taetae9 2025. 7. 28. 23:37์ฑ๋ฅ ํ ์คํธ๋ ์ํํธ์จ์ด์ ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ธฐ๋ฅ ํ ์คํธ์ ๋ฌ๋ฆฌ, ํน์ ์์ ๋ถํ(Workload) ํ์์ ์์คํ ์ ์๋ต์ฑ, ์์ ์ฑ, ๊ทธ๋ฆฌ๊ณ ์์ ์ฌ์ฉ๋ฅ ๊ณผ ๊ฐ์ ๋น๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์ ์ธก์ ํ๊ณ ํ๊ฐํ๋ ํ ์คํธ ์ ํ์ ๋๋ค. ์ฑ๋ฅ ํ ์คํธ์ ์ฃผ๋ ๋ชฉํ๋ ๋จ์ํ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์๋๋ผ, ์์คํ ์ ์ฑ๋ฅ ์ ํ ์ง์ , ์ฆ ๋ณ๋ชฉ(Bottleneck)์ ์๋ณํ๊ณ ์ ๊ฑฐํ๋ ๋ฐ ์์ต๋๋ค.
1. ์ฑ๋ฅ ํ ์คํธ์ ์ข ๋ฅ
์ฑ๋ฅ ํ ์คํธ๋ ํ๋์ ๊ฐ๋ ์ด ์๋, ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง ์ฌ๋ฌ ํ ์คํธ์ ์งํฉ์ ๋๋ค. '์๋ก ์ง์ ๋ค๋ฆฌ์ ์์ ์ฑ์ ๊ฒ์ฌํ๋ค'๋ ์ํฉ์ ํตํด ๊ฐ ํ ์คํธ์ ๋ชฉํ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
- ๋ถํ ํ
์คํธ (Load Testing): ์ถํด๊ทผ ์๊ฐ๋์ ๊ตํต๋ ํ
์คํธ
- ๋ชฉํ: ์์คํ ์ด ์์๋๋ ์ต๋์น์ ์ ์์ ์ธ ๋ถํ(์: ํผํฌ ํ์ ํธ๋ํฝ)๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์์คํ ์ด ์ฌ์ ์ ์ ์๋ ์ฑ๋ฅ ๋ชฉํ์น(์๋ต ์๊ฐ, ์ฒ๋ฆฌ๋ ๋ฑ)๋ฅผ ๋ง์กฑํ๋์ง ๊ฒ์ฆํ๋ ๊ฒ์ด ์ฃผ๋ชฉ์ ์ ๋๋ค.
- ex: ์ด ๋ค๋ฆฌ๊ฐ ํ์ผ ์คํ 5์์ ์ถํด๊ทผ ์๊ฐ๋ ๊ตํต๋์ ์ ์ฒด ์์ด ์ํํ ์ ์๋๊ฐ?
- ์คํธ๋ ์ค ํ
์คํธ (Stress Testing): ๋ค๋ฆฌ๊ฐ ๊ฒฌ๋ ์ ์๋ ํ๊ณ ํธ๋ญ ๋์ ํ
์คํธ
- ๋ชฉํ: ์์คํ ์ ํ๊ณ์ ์ ํ์ ํ๊ธฐ ์ํด ์๋์ ์ผ๋ก ์ ์ ์ฒ๋ฆฌ ์ฉ๋์ ์ด๊ณผํ๋ ๋งค์ฐ ๋์ ๋ถํ๋ฅผ ๊ฐํฉ๋๋ค. ์์คํ ์ด ์ธ์ , ์ด๋ป๊ฒ ์คํจํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ถํ๊ฐ ์ ๊ฑฐ๋์์ ๋ ์ ์์ ์ผ๋ก ๋ณต๊ตฌ๋๋์ง๋ฅผ ํ์ธํ์ฌ ์์คํ ์ ์์ ์ฑ๊ณผ ํ๋ณต์ฑ์ ์ธก์ ํฉ๋๋ค.
- ex: ํ๋ฌผ์ ๊ฐ๋ ์ค์ ํธ๋ญ์ ๋ช ๋๊น์ง ์ฌ๋ ค์ผ ๋ค๋ฆฌ๊ฐ ํ๊ธฐ ์์ํ๋๊ฐ? ๊ทธ๋ฆฌ๊ณ ํธ๋ญ์ ์น์ ์ ๋ ๋ค๋ฆฌ๋ ์๋ ์ํ๋ก ๋์์ค๋๊ฐ?
- ์คํ์ดํฌ ํ
์คํธ (Spike Testing): ๊ฐ์์ค๋ฌ์ด ์ธํ๊ฐ ๋ชฐ๋ฆฌ๋ ์ํฉ ํ
์คํธ
- ๋ชฉํ: ๋งค์ฐ ์งง์ ์๊ฐ ๋์ ์ฌ์ฉ์๊ฐ ํญ๋ฐ์ ์ผ๋ก ๊ธ์ฆํ๋ ์ํฉ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค. ํฐ์ผ ์๋งค, ์ ์ฐฉ์ ์ด๋ฒคํธ, ๋๊ท๋ชจ ํ ์ธ ํ์ฌ์ ๊ฐ์ด ์๊ฐ์ ์ธ ํธ๋ํฝ ํญ์ฆ์ด ์์๋๋ ์์คํ ์ ๋์ ๋ฅ๋ ฅ์ ๊ฒ์ฆํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
- ex: 1๋ง ๋ช ์ ์ฌ๋์ด ๊ฐ์๊ธฐ ๋ค๋ฆฌ ์๋ก ํ๊บผ๋ฒ์ ๋ฐ์ด ์ฌ๋ผ๊ฐ์ ๋ ๋ค๋ฆฌ๋ ์ด๋ป๊ฒ ๋ฐ์ํ๋๊ฐ?
- ๋ด๊ตฌ์ฑ/๋ด๊ธ ํ
์คํธ (Endurance/Soak Testing): 24์๊ฐ ๋ด๋ด ๊ณ์๋๋ ๊ตํต๋ ํ
์คํธ
- ๋ชฉํ: ๋น๊ต์ ํ์ดํ ์์ค์ ๋ถํ๋ฅผ ์ฅ์๊ฐ(์ ์๊ฐ์์ ์ ์ผ) ๋์ ์ง์์ ์ผ๋ก ๊ฐํ์ฌ ์์คํ ์ ์ฅ๊ธฐ์ ์ธ ์์ ์ฑ์ ํ์ธํฉ๋๋ค. ์ด ํ ์คํธ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak), ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฌธ์ , ์์คํ ๋ฆฌ์์ค ๊ณ ๊ฐ ๋ฑ ์๊ฐ์ด ์ง๋์ผ ๋๋ฌ๋๋ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
- ex: ์ถํด๊ทผ ์๊ฐ๋์ ๊ตํต๋์ 48์๊ฐ ๋์ ์ฌ์ง ์๊ณ ํ๋ ค๋ณด๋์ ๋, ๋ค๋ฆฌ ๊ตฌ์กฐ์ ํผ๋ก ๊ท ์ด์ด ์๊ธฐ์ง๋ ์๋๊ฐ?
์ด ์ธ์๋ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๋ณผ๋ฅจ ํ ์คํธ(Volume Testing), ์ฌ์ฉ์๋ ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์์คํ ์ ํ์ฅ ๋ฅ๋ ฅ์ ํ๊ฐํ๋ ํ์ฅ์ฑ ํ ์คํธ(Scalability Testing) ๋ฑ์ด ์์ต๋๋ค.
์ฑ๋ฅ ํ ์คํธ ์ ํ๋ณ ์์ฝ
| ํ ์คํธ ์ ํ | ์ฃผ์ ๋ชฉํ | ๋ถํ ํ๋กํ์ผ | ํ ์คํธ ๊ธฐ๊ฐ | ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก |
| ๋ถํ ํ ์คํธ | ์์๋ ํผํฌ ๋ถํ ์ํฉ์์ ์ฑ๋ฅ ๋ชฉํ์น ์ถฉ์กฑ ์ฌ๋ถ ํ์ธ | ์์๋๋ ์ต๋ ๋ถํ | ๋ณดํต ์ ๋ถ ~ ์ ์๊ฐ | ์ผ๋ฐ์ ์ธ ์๋น์ค์ ํผํฌ ํ์ ์ฑ๋ฅ ๊ฒ์ฆ |
| ์คํธ๋ ์ค ํ ์คํธ | ์์คํ ์ ํ๊ณ์ ๋ฐ ์ฅ์ ๋ฐ์ ์ง์ , ํ๋ณต ๋ฅ๋ ฅ ํ์ธ | ํ๊ณ์น๋ฅผ ์ด๊ณผํ๋ ๊ณผ๋ถํ | ๋น๊ต์ ์งง์ | ์ฅ์ ํ์ฉ ๋ฒ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต ์๋ฆฝ |
| ์คํ์ดํฌ ํ ์คํธ | ์๊ฐ์ ์ธ ํธ๋ํฝ ํญ์ฆ์ ๋ํ ์์คํ ๋์ ๋ฅ๋ ฅ ํ์ธ | ๋งค์ฐ ์งง์ ์๊ฐ ๋ด์ ๊ธ๊ฒฉํ ๋ถํ ์ฆ๊ฐ | ๋งค์ฐ ์งง์ | ํฐ์ผ ์๋งค, ์ ์ฐฉ์ ์ด๋ฒคํธ, ํ๋์ ์ธ์ผ |
| ๋ด๊ตฌ์ฑ ํ ์คํธ | ์ฅ์๊ฐ ์ด์ ์ ์์ ์ฑ ๋ฐ ์ ์ฌ์ ๋ฌธ์ (๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฑ) ํ์ธ | ์์๋๋ ํ๊ท ์์ค์ ๋ถํ | ์ ์๊ฐ ~ ์ ์ผ | 24/7 ์ด์๋๋ ์๋น์ค์ ์์ ์ฑ ๊ฒ์ฆ |
2. ํต์ฌ ์งํ
์์คํ ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค ๊ฐ์ง ํต์ฌ ์งํ๋ฅผ SRE์ Four Golden Signals์ ํตํด ์์๋ณด๊ฒ ์ต๋๋ค.
4๊ฐ์ง ๊ณจ๋ ์๊ทธ๋
- ์ฒ๋ฆฌ๋ (Throughput): "์ผ๋ง๋ ๋ง์ด" ์ฒ๋ฆฌํ๋๊ฐ?
- ์ ์: ๋จ์ ์๊ฐ๋น ์์คํ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ ์์ฒญ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ฃผ๋ก TPS(Transactions Per Second) ๋๋ RPS(Requests Per Second)๋ก ํํ๋ฉ๋๋ค. ํ๋์ ์ฌ์ฉ์ ํธ๋์ญ์
(์: '์ํ ๊ตฌ๋งค')์ ์ฌ๋ฌ ๊ฐ์ HTTP ์์ฒญ(์: ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ, ๊ฒฐ์ ์ ๋ณด ์ ์ก, ์ฃผ๋ฌธ ์๋ฃ ํ์ด์ง ์์ฒญ)์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.
- Four Golden Signals์ ์๋ฌธ์ ํต์ฌ ์ํ๋ฅผ Traffic ์ค๋ช ํ๋, "์ฑ๋ฅ์ ์ธก์ ํ๊ณ ๊ฐ์ "ํ๊ธฐ ์ํ ๋ชฉ์ ์ ๋ถํฉํ๊ธฐ ์ํด์๋ '์์คํ ์ด ์ค์ ๋ก ์ผ๋ง๋ ๋ง์ ์์ฒญ์ ๊ฐ๋นํด๋๋๊ฐ', ์ฆ, Traffic(๋ค์ด์ค๋ ์์ฒญ์ ์, ๋ถํ)์ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํด ๋ด๋ ๋น์จ์ ์๋ฏธํ๋ Throughput์ด ์ ํฉํ๋ค ์๊ฐใ
- ์ง์ฐ ์๊ฐ / ์๋ต ์๊ฐ (Latency / Response Time): "์ผ๋ง๋ ๋นจ๋ฆฌ" ์๋ตํ๋๊ฐ?
- ์ ์: ์์ฒญ์ด ์์๋ ์์ ๋ถํฐ ์๋ต์ด ์๋ฃ๋ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ํ๊ท ๊ฐ์ ํจ์ : 'ํ๊ท ์๋ต ์๊ฐ'์ ์ฑ๋ฅ์ ํ๊ฐํ ๋ ์ข์ง ๋ชปํ ์งํ์ผ ์ ์์ต๋๋ค. ์์ฒ ๊ฐ์ ๋น ๋ฅธ ์๋ต ์ ๋ช ๊ฐ์ ๋งค์ฐ ๋๋ฆฐ ์๋ต์ด ํ๊ท ๊ฐ์ ์ํด ํฌ์๋์ด ๋ฌธ์ ๋ฅผ ์ธ์งํ์ง ๋ชปํ ์ ์๊ธฐ์ ์ฃผ์ํด์ผํฉ๋๋ค.
- ๋ฐฑ๋ถ์์(Percentile)์ ํ: ์ค์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ ์ ํํ๊ฒ ํ์
ํ๊ธฐ ์ํด ๋ฐฑ๋ถ์์ ์งํ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- P95 (95th Percentile): "95%์ ์ฌ์ฉ์๋ ์๋ต ์๊ฐ์ด X ms ์ดํ์ ๋๋ค." ๊ทน๋จ์ ์ธ ์์ธ๋ฅผ ์ ์ธํ ๋๋ค์ ์ฌ์ฉ์์ ๊ฒฝํ์ ๋ํ๋ ๋๋ค.
- P99 (99th Percentile): "99%์ ์ฌ์ฉ์๋ ์๋ต ์๊ฐ์ด Y ms ์ดํ์ ๋๋ค." ๊ฐํ์ ์ผ๋ก ๋ฐ์ํ๋ ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๋ฅผ ํ์ ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ex: 100๊ฐ์ ์์ฒญ ์ค 98๊ฐ๊ฐ 50ms, 2๊ฐ๊ฐ 2000ms ๊ฑธ๋ ธ๋ค๊ณ ๊ฐ์ ํ์ ๋, ํ๊ท ์๋ต ์๊ฐ์ ((98*50) + (2*2000)) / 100 = 89ms๋ก ์ํธํด ๋ณด์ ๋๋ค. ํ์ง๋ง P99 ์๋ต ์๊ฐ์ 2000ms๋ก, ์ผ๋ถ ์ฌ์ฉ์๋ ์ข์ง ์์ ๊ฒฝํ์ ํ๊ณ ์์์ ํ์ ํ ์ ์์ต๋๋ค.
- ์๋ฌ์จ (Error Rate): "์ผ๋ง๋ ์์ฃผ" ์คํจํ๋๊ฐ?
- ์ ์: ์ ์ฒด ์์ฒญ ์ค ์คํจํ ์์ฒญ(์: HTTP 5xx ์๋ฒ ์๋ฌ)์ ๋น์จ์ ์๋ฏธํฉ๋๋ค.
- ๋ถํ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์๋ฌ์จ์ด 0%๋ฅผ ๋์ด์๊ธฐ ์์ํ๋ ๊ฒ์ ์์คํ ์ด ํ๊ณ์ ๋๋ฌํ๋ค๋ ์ ํธ์ผ ์ ์์ต๋๋ค.
- ํฌํ๋ (Saturation): "์ผ๋ง๋ ๊ฐ๋ ์ฐผ๋๊ฐ?"
- ์ ์: CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O, ๋คํธ์ํฌ ๋์ญํญ ๋ฑ ์์คํ ์ ์ฃผ์ ์์์ด ์ฉ๋ ํ๊ณ์ ์ผ๋ง๋ ๊ทผ์ ํ๋์ง๋ฅผ ๋ํ๋ด๋ ์งํ์ ๋๋ค.
- ํฌํ๋๋ ๋ฏธ๋์ ์ง์ฐ ์๊ฐ ์ฆ๊ฐ์ ์๋ฌ ๋ฐ์์ ์์ธกํ๋ ์ ํ ์งํ์ ๋๋ค. ํฌํ๋๊ฐ ๋๋ค๋ ๊ฒ์ ๊ณง ์ฑ๋ฅ ์ ํ๊ฐ ์๋ฐํ์์ ์๋ฏธํฉ๋๋ค.
์ฉ์ด ์ ๋ฆฌ
- ๊ฐ์ ์ฌ์ฉ์ (Virtual User, VU): ์ค์ ์ฌ์ฉ์์ ํ๋์ ์๋ฎฌ๋ ์ด์ ํ๋ ๊ฐ์์ ๊ฐ์ฒด๋ก, ๋ถํ ํ ์คํธ์์๋ VU์ ์๋ฅผ ์กฐ์ ํ์ฌ ์์คํ ์ ๊ฐํด์ง๋ ๋ถํ ์์ค์ ์ ์ดํฉ๋๋ค.
- ๋จํ์ (Ramp-Up): ํ ์คํธ ์์ ์ VU์ ์๋ฅผ 0์์ ๋ชฉํ ์์ค๊น์ง ์ ์ง์ ์ผ๋ก ๋๋ฆฌ๋ ๊ตฌ๊ฐ์ ๋๋ค. ์ด๋ ์์คํ ์ ๊ฐ์์ค๋ฌ์ด ์ถฉ๊ฒฉ์ ์ฃผ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ๋ถํ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง ๊ด์ฐฐํ ์ ์๊ฒ ํด ์ค๋๋ค.
- ๋ณ๋ชฉ (Bottleneck): ์์คํ ์ ์ฒด์ ์ฒ๋ฆฌ๋์ ์ ํํ๋ ํน์ ๊ตฌ์ฑ ์์๋ ๋ฆฌ์์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฑ๋ฅ ํ ์คํธ ๋ถ์์ ์ต์ข ๋ชฉํ๋ ๋ฐ๋ก ์ด ๋ณ๋ชฉ ์ง์ ์ ์ฐพ์๋ด๋ ๊ฒ์ ๋๋ค.
์งํ๋ค์ ๊ฐ๋ณ์ ์ผ๋ก๋ง ์ธก์ ํ๊ธฐ๋ณด๋ค, ๊ฐ์ ์ฌ์ฉ์(VU)๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋(TPS)์ด ์ด๋ป๊ฒ ๋ณํ๊ณ , ์ด๋ ์์ ๋ถํฐ ์๋ต ์๊ฐ(Latency)์ด ๊ธ์ฆํ๋ฉฐ ์๋ฌ์จ(Error Rate)์ด ๋ํ๋๋์ง๋ฅผ ํจ๊ป ๋ถ์ํด์ผ ํฉ๋๋ค. ์ด ์๊ด๊ด๊ณ๋ฅผ ํตํด ์์คํ ์ ์ฑ๋ฅ ๊ณก์ ์ ๊ทธ๋ฆฌ๊ณ , '์ ์ ๊ตฌ๊ฐ', 'ํฌํ ๊ตฌ๊ฐ', '๊ณผ๋ถํ ๊ตฌ๊ฐ'์ ๋ช ํํ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด, "์ด ์์คํ ์ 200๋ช ์ ๋์ ์ฌ์ฉ์๊ฐ ์ ์ํ์ ๋ ์ต๋ 500 TPS๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ์ด ์ง์ ์ ๋์ด์๋ฉด ์๋ต ์๊ฐ์ด ๊ธ๊ฒฉํ ์ ํ๋๊ธฐ ์์ํ๋ค"์ ๊ฐ์ ๊ตฌ์ฒด์ ์ด๊ณ ์๋ฏธ ์๋ ๊ฒฐ๋ก ์ ๋ผ ์ ์์ต๋๋ค.
3. ๋ถํ ํ ์คํธ ๋๊ตฌ
Java/Spring Boot ์ํ๊ณ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ถํ ํ ์คํธ ์คํ์์ค ๋๊ตฌ๋ JMeter, nGrinder, Gatling ์ธ ๊ฐ์ง๊ฐ ๋ํ์ ์ ๋๋ค.
- Apache JMeter
- ์ค๋ซ๋์ ์ ๊ณ ํ์ค์ผ๋ก ์๋ฆฌ ์ก์์จ ์์ Java ๊ธฐ๋ฐ์ GUI ๋๊ตฌ์ ๋๋ค.
- ์ฅ์ : ๋ฐฉ๋ํ ์ปค๋ฎค๋ํฐ์ ํ๋ถํ ๋ฌธ์, ์๋ง์ ํ๋ฌ๊ทธ์ธ์ ํตํด HTTP, JDBC, JMS ๋ฑ ๋ค์ํ ํ๋กํ ์ฝ์ ์ง์ํฉ๋๋ค. ์ง๊ด์ ์ธ GUI ๋๋ถ์ ์ด๋ณด์๋ ๊ฐ๋จํ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
- ๋จ์ : GUI ์์ฒด๊ฐ ์๋นํ ์์คํ ์์์ ์๋ชจํ๋ฏ๋ก, ๋๊ท๋ชจ ๋ถํ ํ ์คํธ ์์๋ CLI ๋ชจ๋ ์ฌ์ฉ์ด ๊ถ์ฅ๋ฉ๋๋ค. ํ ์คํธ ๊ณํ์ด XML ํ์ผ๋ก ์ ์ฅ๋์ด ๋ฒ์ ๊ด๋ฆฌ๋ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๋ถํธํจ์ด ์์ต๋๋ค. ์ค๋ ๋ ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ต์ ๋๊ตฌ์ ๋นํด ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- nGrinder
- ๋ค์ด๋ฒ์์ The Grinder๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ ์คํ์์ค ๋๊ตฌ๋ก, ์ค์ ์น ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ์์ด์ ํธ, ์คํฌ๋ฆฝํธ, ํ ์คํธ ์คํ์ ํตํฉ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
- ์ฅ์ : ์ปจํธ๋กค๋ฌ-์์ด์ ํธ ์ํคํ ์ฒ ๋๋ถ์ ์์ฝ๊ฒ ํ ์คํธ ๊ท๋ชจ๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค. ์น UI๋ ํ ์คํธ ๊ด๋ฆฌ, ์ค์ผ์ค๋ง, ๋ชจ๋ํฐ๋ง์ ๊ฐ์ํํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ Groovy(JUnit ์คํ์ผ)๋ Jython์ผ๋ก ์์ฑํ๋ฏ๋ก XML๋ณด๋ค ๊ฐ๋ฐ์ ์นํ์ ์ด๋ฉฐ, IDE์์ ์ฌ์ ๋๋ฒ๊น ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์ : JMeter์ ๋นํด ์ปค๋ฎค๋ํฐ ๊ท๋ชจ๊ฐ ์๊ณ , ๊ตฌํ ์ค๋ ๋ ๊ธฐ๋ฐ ์์ง์ ์ฌ์ฉํฉ๋๋ค.
- Gatling
- 'Test as Code' ์ฒ ํ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ๋์ ์ธ ๋๊ตฌ์ ๋๋ค. ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ Scala, Java, Kotlin ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑํฉ๋๋ค.
- ์ฅ์ : Akka/Netty ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ๋ฉ์์ง ๊ตฌ๋ ์ํคํ ์ฒ ๋๋ถ์ ์ ์ ์์์ผ๋ก ๋งค์ฐ ๋์ ๋ถํ๋ฅผ ์์ฑํ ์ ์์ด ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. ์ฝ๋๋ก ํ ์คํธ๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก Git, ์ฝ๋ ๋ฆฌ๋ทฐ, CI/CD ํ์ดํ๋ผ์ธ๊ณผ ์๋ฒฝํ๊ฒ ํตํฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ HTML ๋ฆฌํฌํธ์ ๊ฐ๋ ์ฑ๊ณผ ์ ๋ณด๋์ด ๋งค์ฐ ๋ฐ์ด๋ฉ๋๋ค.
- ๋จ์ : ์ฝ๋ ์์ฑ์ ์ต์ํด์ผ ํ๋ฉฐ, ํนํ Scala DSL์ ๋ํ ์ฝ๊ฐ์ ํ์ต ๊ณก์ ์ด ์กด์ฌํฉ๋๋ค. ๊ธฐ๋ณธ ์ง์ ํ๋กํ ์ฝ์ ์ข ๋ฅ๋ JMeter๋ณด๋ค ์ ์ต๋๋ค.
๋ถํ ํ ์คํธ ๋๊ตฌ๋ณ ๋น๊ต
| ํน์ง | JMeter | nGrinder | Gatling |
| ์ฃผ์ ์ฌ์ฉ ๋ฐฉ์ | GUI ๊ธฐ๋ฐ (CLI ์คํ ๊ถ์ฅ) | ์น UI ๊ธฐ๋ฐ | ์ฝ๋ ๊ธฐ๋ฐ (DSL) |
| ์คํฌ๋ฆฝํธ ์ธ์ด | XML (GUI ์ค์ ) | Groovy, Jython | Scala, Java, Kotlin |
| ๋ฆฌ์์ค ๋ชจ๋ธ | ์ค๋ ๋/์ฌ์ฉ์ | ์ค๋ ๋/์ฌ์ฉ์ | ๋น๋๊ธฐ/๋ฉ์์ง ๊ตฌ๋ |
| CI/CD ์นํ์ฑ | ๋ณดํต (XML ๊ด๋ฆฌ ๋ถํธ) | ์ข์ (์คํฌ๋ฆฝํธ ํ์ผ ๊ด๋ฆฌ) | ๋งค์ฐ ์ข์ (์ฝ๋ ๊ธฐ๋ฐ) |
| ๋ฆฌํฌํ ํ์ง | ๋ณดํต (ํ๋ฌ๊ทธ์ธ ํ์) | ์ข์ (์น UI ํตํฉ) | ๋งค์ฐ ์ข์ (๊ธฐ๋ณธ HTML ๋ฆฌํฌํธ) |
| ์ถ์ฒ ๋์ | GUI ํ๊ฒฝ ์ ํธ, ๋ค์ํ ํ๋กํ ์ฝ ํ ์คํธ ํ์ ์ | ์ค์ ๊ด๋ฆฌํ ํ ์คํธ, ์ฌ์ด ํ์ฅ์ฑ, ์ฝ๋์ UI์ ๊ท ํ ํ์ ์ | ๊ฐ๋ฐ์ ์นํ์ ํ๊ฒฝ, CI/CD ํตํฉ, ๊ณ ์ฑ๋ฅ ๋ถํ ์์ฑ ํ์ ์ |
์ฐธ๊ณ ์๋ฃ:
https://engineering-skcc.github.io/performancetest/Performance-Testing-Terminologies/
์ฑ๋ฅ ํ ์คํธ ์ ํ ์์๋ณด๊ธฐ
SK ์ฃผ์ํ์ฌ C&C์ ๊ธฐ์ ๋ธ๋ก๊ทธ์ ๋๋ค.
engineering-skcc.github.io
https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals
Google SRE monitoring ditributed system - sre golden signals
Monitoring Distributed Systems Written by Rob EwaschukEdited by Betsy Beyer Google’s SRE teams have some basic principles and best practices for building successful monitoring and alerting systems. This chapter offers guidelines for what issues should in
sre.google
https://firehydrant.com/blog/4-sre-golden-signals-what-they-are-and-why-they-matter/
4 SRE Golden Signals (What they are and why they matter)
SRE’s Golden Signals are four key metrics used to monitor the health of your service and underlying systems. We will explain what they are, and how they can help you improve service performance.
firehydrant.com