์คํํธ์ ์ ๋ถํ ํ ์คํธ AtoZ
- #๋ถํํ ์คํธ
- #aws
- #ecs
- #rds
- #elasticache
๋ค์ด๊ฐ๋ฉฐ
๋น ๋ฅธ ์ฑ์ฅ์ด ์๊ตฌ๋๋ ์คํํธ์ ์์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํด๊ฐ๋ฉฐ ๊ฐ๋ฐํ๊ธฐ๋ ์ฝ์ง ์์ต๋๋ค. ๋ํ ํ์ ๋ ๋ฆฌ์์ค๋ฅผ ๋ณด์ ํ ์คํํธ์ ์์ ์๋ฒฝํ๊ณ ๋ชจ๋ ์ํฉ์ ๋์ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ์ค๋นํ๊ธฐ๋ ์ด๋ ต๊ธฐ๋ ํ๊ณ , ๋์์ ์ค๋นํ ํ์์ฑ๋ ์ ์ต๋๋ค.
์ ํฌ ์๋์์์ ์๋น์คํ๊ณ ์๋ fromm์์๋ ์ ์ฌํ ๊ณ ๋ฏผ์ ๊ฐ๊ณ ์์์ต๋๋ค. ํฌ๋ค ๋ฉ์์ง ํ๋ซํผ ํน์ฑ์ ์ํฐ์คํธ๊ฐ ํ๋ฒ ๋ฉ์์ง๋ฅผ ๋ฐ์ ํ๋ฉด ๋๋์ ํฌ๋ค์ด ํ๋ฒ์ ์ฑ์ ์ ์ํ๋ ํธ๋ํฝ ์ ํ์ ๊ฐ๊ณ ์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ ๊ธ๊ฒฉํ ์ฆ๊ฐํ ํธ๋ํฝ ๋๋ฌธ์ ๊ธฐ์กด์๋ ๋จ์ํ ํ๋์จ์ด ์คํ์ ์กฐ์ ํ๋ ๊ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ง๋ง ์ ์ ํ๊ณ์น์ ๋๋ฌํ์๊ณ ๋น์ฉ๋ ํฐ ํญ์ผ๋ก ์น์๊ณ ์์์ต๋๋ค. ๊ทธ๋์ ์ ํฌ๋ ๋๊ท๋ชจ ํฌ๋ค์ ๊ฐ๊ณ ์๋ ์ ํฌ ์ ์ ์ํฐ์คํธ์ ํฌ๋ค์ด ์ํํ๊ฒ ์๋น์ค๋ฅผ ํ์ฉํ ์ ์๊ฒ ์ค๋นํ๊ธฐ ์ํ์ฌ ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๊ฒ ๋์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ ๋ถํ ํ
์คํธ๋ฅผ ์งํํด๋ณธ ๊ฒฝํ์ด ์ ์ ์์ง๋์ด๋ฅผ ์ํด ์ ๋ฐ์ ์ธ ์ดํด๋๋ฅผ ๋์ด๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์์ฑํ์์ต๋๋ค. ๊ทธ๋์ ์ฐ์ ๋ถํ ํ
์คํธ๋ฅผ ์งํํ๋ ์ ์ฐจ๋ฅผ ์๊ฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ์ ์ฐจ์์ ์ค์ํ ๊ฒ๊ณผ ๋์น๊ธฐ ์ฌ์ด ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค(์ ๊ฐ ์์ฒญ ๋์ณค์ต๋๋ค). ๋ง์ง๋ง์ผ๋ก๋ ํ
์คํธ๋ฅผ ์งํํ๋๋ฐ ์ ์ฉํ ํ์ ์ ๋ฆฌํ์ฌ ์๊ฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ์ํฉ์ ์ปค๋ฒํ๊ธฐ๋ ์ด๋ ต์ง๋ง ๋ถํ ํ ์คํธ๋ฅผ ์ค๋นํ๋ ์์ง๋์ด๋ค์ด ํ ์คํธ ์ ๋ฐ์ ์ฒญ์ฌ์ง์ ๊ทธ๋ฆฌ๋ ๋ฐ ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ ์ด ๊ธ์ ์์ฑํฉ๋๋ค. ๋์ผ๋ก ๊ฝค ์ค๋ ์๊ฐ ๋์ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์๋ ๋๋ํ ์๊ฐ๊ณผ ๋น์ฉ์ ํ ๋นํด์ค ์ ํฌ ํ๊ณผ ํ์ฌ์๊ฒ ๊ฐ์ฌ ์ธ์ฌ๋ฅผ ๋ณด๋ด๋๋ฆฝ๋๋ค.
๋ถํ ํ ์คํธ ์งํ ์ ์ฐจ
๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ์์๋ฅผ ํฌ๊ฒ ๋๋๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
0. ํ ์คํธ ํด ์ ์
1. ํ ์คํธ ์๋๋ฆฌ์ค ์ ์
2. ๋ชฉํ ์งํ ์ ๋ฆฌ ( ์๋ต ์๋, ์ ์ ์ )
3. ์ธํ๋ผ ํ์
4. ํ ์คํธ ์ค๋น
5. ํ ์คํธ ์งํ & ๊ฒฐ๊ณผ ๊ธฐ๋ก
6. ๊ฐ์ ๋ฐฉํฅ ์ ๋ฆฌ & ๊ฒฐ๊ณผ ์ ์ฉ
๋ค์์๋ ๊ฐ๊ฐ์ ํญ๋ชฉ์ ๋ํ์ฌ ๊ฐ๋จํ ์๊ฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
0. ํ ์คํธ ํด ์ ์
์ผ๋จ ํด์ด ์ ํด์ ธ ์์ผ๋ฉด ๋ค์ ์งํํ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ์งํํ๊ธฐ ์ฝ์ต๋๋ค. ์ ๋ GUI๋ณด๋ค ์ฝ๋๋ก ์์ฑํ๋ ๊ฒ์ ์ ํธํ๊ณ , ๋๋์ ํธ๋ํฝ ํ ์คํธ๋ก ํ์ฅ์ด ์ฌ์ด locust๋ฅผ AWS Fargate ํ๊ฒฝ์ ์ฌ๋ ค ์ฌ์ฉํ์ต๋๋ค. ์คํ ์์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด ์ฌ๋งํ๋ฉด ์ธ์ด๋ฅผ ์ ๊ฒฝ ์ฐ์ง ๋ง๊ณ ์ฌ์ฉ์ ๋ง๊ณ ์คํ ์ ๋์ ํด๋ก ๊ฐ๋ ๊ฒ์ ์ถ์ฒํด ๋๋ฆฝ๋๋ค. ์ด์ฐจํผ ์ง์ฌ์ง ์๋๋ฆฌ์ค๋ฅผ ํด์ ์ค์ ํ๋ ๊ณผ์ ์ ํฌ๊ฒ ์ด๋ ต์ง ์์ต๋๋ค. ๊ด๋ จ ๋ด์ฉ์ ๋ง์ง๋ง์ Appendix์ ๋ค์ ํ ๋ฒ ์๊ฐํด ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ค์ํ ๊ฒ
- ์๊ตฌ๋๋ ํธ๋ํฝ์ด ๋์ผ๋ฉด Cloud ํ๊ฒฝ์์ ์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅํ์ง ํ์ธ
- ์ฌ์ฉ์๊ฐ ๋ง์ ํด์ธ์ง (JMeter, nGrinder, locust, k6 ๋ฑ)
๋์น๊ธฐ ์ฌ์ด ๊ฒ
- ํ์คํฐ ํด ์ฌ์ฉ ์ง์ํ๊ธฐ
1. ํ ์คํธ ์๋๋ฆฌ์ค ์ ์
locust๋ก ์์ฑํ ์๋๋ฆฌ์ค (https://github.com/locustio/locust/blob/master/examples/locustfile.py)
๋ถํ ํ ์คํธ์ ์์์ ๋๋ค. ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค. ์ฑ ์๋น์ค๋ฅผ ์ด์ํ๋ API ์๋ฒ๋ฅผ ์๋ก ๋ค๋ฉด ์ฑ์์ ํธ์ถํ๋ API๋ฅผ ์ ๋ฆฌํด ๋ด ๋๋ค. ๋๋ถ๋ถ์ ๋ถํ ํ ์คํธ ํด์ ์๋๋ฆฌ์ค ์ค์ ์ ์ง์ํ๋ ํด์ ์๋๋ฆฌ์ค๋ฅผ ์ ํ ํ๋ฉฐ ์๋๋ฆฌ์ค๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
์ค์ํ ๊ฒ
- ๋๋๋ก ํ๋๋ ๋นผ๋์ง ์๊ณ ๋ชจ๋ ๊ฒฝ์ฐ ๊ณ ๋ คํ๊ธฐ
- ์๋๋ฆฌ์ค๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง 90% ์ด์ ์ดํด ํ์
2. ๋ชฉํ ์งํ ์ ๋ฆฌ ( ์๋ต ์๋, ์ ์ ์ )
์๋๋ฆฌ์ค ์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด ์๋ต ์๋๋ ๋ชฉํ ๋์ ์ ์์ ์์ ๊ฐ์ ์งํ๋ฅผ ์ค์ ํฉ๋๋ค. ์ ์์ ์๋ ๋ณดํต VU(Virtual User)๋ก ๋ง์ด ํ๊ธฐํฉ๋๋ค. ์๋ต ์๋๋ ๋ณดํต p50, p95, p99 ๊ฐ์ ์งํ ์์ ๋ช ms๋ฅผ ๋ชฉํํ๋์ง ์ค์ ํฉ๋๋ค. ํ์๊ณผ ์ถฉ๋ถํ ๋ ผ์๋ฅผ ๊ฑฐ์ณ โ์ด๋น VU 10๋ง๋ช ์ด 10์ด๋์ ๋ค์ด์์ ๋ latency p95 200msโ ๋ฑ์ผ๋ก ๋ ผ์ํด ๋ด ์๋ค.
์ค์ํ ๊ฒ
- ํ์ฌ ์๋น์ค๊ฐ ์ํํ ๋ ์๋ต ์๋๋ฅผ ํ์ ํ๋ฉฐ ๊ธฐ์ค ์ก์๋ณด๊ธฐ
- ๊ธฐ์กด ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ค ๊ณ์ฐํ๊ธฐ
3. ์ธํ๋ผ ํ์
์ธ๋ฒ์งธ๋ ์ธํ๋ผ ํ์ ์ ๋๋ค. ํ์ฌ ํ ์คํธ ๋์์ด ๋๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๋ฆฌ์์ค ๋ฑ์ ๋ชจ๋ ์ฒดํฌํด ๋ด ๋๋ค. API ์๋ฒ์ ๊ฒฝ์ฐ API๋ณ๋ก ํ์ ํ๊ณ ์์ผ๋ฉด ๋์ฑ ์ข์ต๋๋ค. ํน์ API ์ฑ๋ฅ์ด ์ ๋์ฌ ๋ ์ด๋ค ์ธํ๋ผ์ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ฉ์ดํฉ๋๋ค.
์ค์ํ ๊ฒ
- ๋ชจ๋ ์ธํ๋ผ ๋ฆฌ์์ค ์ฒดํฌํด๋๊ธฐ
๋์น๊ธฐ ์ฌ์ด ๊ฒ
- ์ด๊ฑด ๋น์ฐํ ๋ฌธ์ ์์ง! ๋ผ๊ณ ์๊ฐํ ๋ถ๋ถ์์ ๋ณ๋ชฉ์ด ๋ฑ ์๊น
4. ํ ์คํธ ์ค๋น
ํ ์คํธ ์ค๋น ๋จ๊ณ์ ๋๋ค. ๊ฐ ์๋น์ค์ ํญ๋ชฉ์ ๋ง์ถ์ด ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค. ์ค์ ์ด์ํ๊ฒฝ๊ณผ ์์ ํ ๋์ผํ ์ํ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. DB ๊ฐ์ ํญ๋ชฉ๋ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ์ฐจ์ด๊ฐ ์์ ์ ์์ผ๋ ์ด์ํ๊ฒฝ์ DB๋ฅผ ๋ณต์ ํด์ ์ฌ์ฉํ๋๋ก ํฉ์๋ค.
์ค์ํ ๊ฒ
- ์ค์ ์ด์ ํ๊ฒฝ ๋ณต์ (API ์๋ฒ, DB ๋ฑ)
- ํ ์คํธ์ฉ ์ ์ ๋ฐ์ดํฐ ์ถ๊ฐ
5. ํ ์คํธ ์งํ & ๊ฒฐ๊ณผ ๊ธฐ๋ก
์ด์ ์ค์ ํ ์คํธ๋ฅผ ์งํํ๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ ๋จ๊ณ์ ๋๋ค. ๋ณ์ ํต์ ๋ฅผ ์ฒ ์ ํ ํ๊ณ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ์๊ฐ์ ์๋ผ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์งํ์ ๋๋ฌด ๋งค๋ชฐ๋์ด ์ค๋ ์๊ฐ์ ์ก์๋จน๋ ๊ฒ์ ์ง์ํ๋๋ก ํฉ์๋ค. ์ด์ฐจํผ ์ค์ ์๋๋ฆฌ์ค์ 100% ์ผ์นํ๋ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
์ค์ํ ๊ฒ
- ํ ์คํธ ๋์ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ด ๋น ๋ฅด๊ฒ ์ด๋ค์ง ์ ์๋ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
- ๋ฆฌ์์ค์ ๋ชจ๋ ํ๋์จ์ด๋ฅผ ๋ณ๋ชฉ ๋์ ํ๋ณด๋ก ๋๊ธฐ ( CPU, Memory, Network, Storage ๋ฑ )
๋์น๊ธฐ ์ฌ์ด ๊ฒ
- ๋ถํ ๋ฐ์๊ธฐ ๋ณธ์ธ์ด ๋ณ๋ชฉ์ธ ๊ฒฝ์ฐ๊ฐ ์์ฃผ ์์ผ๋ฏ๋ก ๋ชจ๋ํฐ๋ง ํญ์ ์งํ
- Network๋ ๊ด์ฐฎ๊ฒ ์ง? ํ๋ฉด ๋งค์ฐ ์ ๊ด์ฐฎ์
6. ๊ฐ์ ๋ฐฉํฅ ์ ๋ฆฌ & ๊ฒฐ๊ณผ ์ ์ฉ
๋ง์ง๋ง์ผ๋ก ๊ฐ์ ๋ฐฉํฅ์ ์ ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ์ด์ ํ๊ฒฝ์ ์ ์ฉํ๋ ๋จ๊ณ์ ๋๋ค. ๊ฐ์ ๋ฐฉํฅ์ ์ํคํ ์ฒ ๋ณ๊ฒฝ, ์๋น์ค ๋ก์ง ๋ณ๊ฒฝ ๋ฑ์ด ์ฃผ๋ก ์์ต๋๋ค. ํด๋น ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ์ด์ ํ๊ฒฝ์ ํ๋ฒ์ ์ ์ฉํ๊ธฐ๋ณด๋จ ์ ์ง์ ์ผ๋ก ๋ฐฐํฌํด๊ฐ๋ฉฐ ๋ชจ๋ํฐ๋ง์ ํตํด ์ ์ฉํ์ฌ ๋๊ฐ๋ ๊ฒ์ ์ถ์ฒํด ๋๋ฆฝ๋๋ค.
์ ์ฉํ ํ
๋ง์ง๋ง์ผ๋ก ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ฉฐ ์ป์ ์ฌ๋ฌ ๊ฐ์ง ์ ์ฉํ ํ์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค. ์ ํฌ๋ AWS ํ๊ฒฝ์์ Node.js API ์๋ฒ๋ฅผ ๋์์ผ๋ก ํ ์คํธ๋ฅผ ์งํํ์๊ณ , ECS Fargate, RDS Aurora, Elasticache Redis ๋ฑ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํธ๋ํฝ ์ข ๋ฅ๋ ๋จ์๊ฐ์ ๋๋์ ํธ๋ํฝ์ด ๋ค์ด์ค๋ ์คํ์ดํฌ์ฑ ํธ๋ํฝ์ ์ค์ ์ ์ผ๋ก ํ ์คํธํ์์ต๋๋ค.
๊ณตํต
- ํด๋ผ์ฐ๋ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ฌธ์ ์์ธ์ ์ฐพ๊ธฐ ์ด๋ ค์ธ ๋ ์ํฌํธ ํ๋์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์ด ์ค์ (๋ณธ์ธ์ ๊ฒฝ์ฐ AWS๊ณผ ๋ฏธํ ๋ง 3์ฐจ๋ก ์งํ)
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ, ํ ์คํธ 1ํ๋น 1๊ฐ์ ๋ณ์๋ง ๋ฐ๊พธ๋ ๊ฒ ์ถ์ฒ
- ๋ ์๋ผ์ง ๋ง๊ณ ๋น ๋ฅด๊ฒ ์งํํ๋ ๊ฒ์ด ์คํ๋ ค ์ต์ข ์ ์ผ๋ก ๋๊ณผ ์๊ฐ์ ์๋ผ๋ ๊ธธ
- Scale up: ํ๋์จ์ด ์ฑ๋ฅ ์ ๊ทธ๋ ์ด๋ (์์ง ํ์ฅ), Scale out: ํ๋์จ์ด ๊ฐ์ ๋๋ฆฌ๊ธฐ (์ํ ํ์ฅ)
AWS ECS Fargate
- ์ฃผ์ ๋ณ์: CPU, Memory, (Network)
- Fargate๊ฐ ๋ด๋ถ์ ์ผ๋ก ec2๋ฅผ ๋์ฐ๋ ๊ตฌ์กฐ๋ผ ํ์ธํ ์ ์๋ Network Bandwidth limt์ ์ ์ฉ๋ฐ์ (AWS Support ๋ฌธ์ ๋ต๋ณ ๊ฒฐ๊ณผ)
- ๋น ๋ฅธ ํ ์คํธ ์งํ์ ์ํด ์ปจํ ์ด๋๊ฐ ๋น ๋ฅด๊ฒ ๋จ๋๋ก ์ค์ (์ฐธ๊ณ ์๋ฃ)
AWS RDS Aurora (Postgres)
- ์ฃผ์ ๋ณ์: CPU, Memory, DB Connection count, Network
- Serverless ์ฃผ์ ๋ณ์: Serverless Capacity
- ๋ชจ๋ํฐ๋ง์ Performance Insight(์ดํ PI)์ Monitoring ํญ์์ ์ฃผ๋ก ์งํ
- PI์ LWLock:lock_manager์ด ๊ด์ธก๋ ๊ฒฝ์ฐ connection pool์ด ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก RDS Proxy ์ ์ฉ ๊ณ ๋ ค
- PI CPU ๋๊ธฐ๊ฐ ๊ธธ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋๋ ์ฟผ๋ฆฌ์ ์ต์ ํ ์ง์ ์ ์ดํด๋ณด๊ฑฐ๋ Scale up/out ์งํ
- ๋๋์ ํ ์คํธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค๋ฉด vacuum analyze ์ฟผ๋ฆฌ ์คํ
AWS Elasticache (Redis)
- ์ฃผ์ ๋ณ์: Memory, CPU, Network
- ์คํ์ดํฌ ํ ์คํธ ์ค ์์์น ๋ชปํ๊ฒ Network ์ง์ฐ์ด ํฌ๊ฒ ๋ฐ์ํด ๋ฌธ์ ์์ธ์ ์ฐพ๊ธฐ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์์
Appendix. ๋ถํ ํ ์คํธ ํด
1. LOCUST (https://locust.io)
๊ฐ์ฅ ์ถ์ฒํ๋ ํด ์ ๋๋ค. Python์ผ๋ก ์ ์๋ ํด๋ก ๊ฐ๋ณ๊ณ , ํด๋น ์ธ์ด๋ก ์๋๋ฆฌ์ค ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. JavaScript ๊ฐ๋ฐ์์ธ ์ ๊ธฐ์ค์๋ ์๋๋ฆฌ์ค ์์ฑ์ด ์ฌ์ ๋ถ๋ด์ด ์์์ต๋๋ค. ๋ํ, ๋ถํ ํ ์คํธ ๊ด๋ จ ์์ฒญ์ ํ์ ๋ AWS์ ์์ง๋์ด๋ถ๋ ์ฌ์ฉํ๊ณ ๊ณ์ค ์ ๋๋ก ์ฌ์ฉ์ ํ์ด ๋๊ณ ์ํ๊ณ ๋ฐ์ ์ด ์ ๋์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ECS Spot Fargate๋ฅผ ์ฌ์ฉํด ์ ๋ ดํ ๊ฐ๊ฒฉ์ผ๋ก Distributed load testing์ด ๊ฐ๋ฅํ example์ด AWS ๊ณต์ ๋ ํฌ์ ์ฌ๋ผ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ์๋จ ์ด๋ฏธ์ง์ฒ๋ผ ๋นํธ์ธ์ผ๋ก Web UI๋ฅผ ์ ๊ณตํด ํธ๋ํฝ์ ๋ณ๊ฒฝํด๊ฐ๋ฉฐ ์งํ๋ค์ ์ดํด๋ณด๊ธฐ ์ข๊ฒ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
2. k6 (https://k6.io)
JavaScript๋ก ์๋๋ฆฌ์ค ์์ฑ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Grafana์์ ์ ๊ณตํ๋ k6 Cloud ํ๊ฒฝ์์ ๋น์ฉ์ ์ง๋ถํ๊ณ ํ ์คํธ๋ฅผ ์งํํ ์ ์์ต๋๋ค. ๋ค๋ง k6 Cloud ํ์ ์ผ๋ก ๋๋ ๋ถํ ๋ฐ์ ์ k6 Cloud์์ ๋จ์ผ๋จธ์ ์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถํ๋ฐ์๊ธฐ์ ์ฑ๋ฅ์ด ๋ฐ๋ผ์ค์ง ๋ชปํ๋ ์ด์๊ฐ ๊ฐํน ์์ ์ ์์ต๋๋ค.
3. Artillery (https://www.artillery.io)
Yaml๊ณผ JavaScript๋ก ์๋๋ฆฌ์ค ์์ฑ ๊ฐ๋ฅํฉ๋๋ค. AWS Lambda์ Fargate๋ฅผ ์ฌ์ฉํ๋ ํ์์ ์ผ๋ก Distributed load testing์ด ๊ฐ๋ฅํ ์ข์ ์ปจ์ ์ ํด์ด์ง๋ง ์์ง ์ฆ์ ์ค๋ฅ ๋ฑ์ผ๋ก ์ธํด ์ฑ์ํจ์ด ๊ฐ์ถฐ์ง์ง๋ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์๊ฐํฉ๋๋ค. (24.01.31 ๊ธฐ์ค)
๊ทธ์ธ ์ ๋ช ํ ํด์ Apache JMeter, nGrinder, Gatling ๋ฑ์ด ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ์คํํธ์ ์์ ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ์์ง๋์ด๋ฅผ ์ํ ๋ด์ฉ์ ์๊ฐํด๋ณด์์ต๋๋ค. ์ต๋ํ ์ค์ฉ์ ์ธ ๊ฐ์ด๋๊ฐ ๋ ์ ์๊ฒ ๊ธ์ ์์ฑํ์๋๋ฐ ํด๋น ๋ชฉ์ ์ด ๋ ์๋ถ๋ค์๊ฒ ์ ์ ๋ฌ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋์ผ๋ก ์ ์ฒ๋ผ ์ฒ์ ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ๋ถ์๊ฒ ๋์์ด ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค๋ ๋ง์์ผ๋ก ์ด๋ฒ ๊ธ์ ๋ง๋ฌด๋ฆฌ ์ง๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋์์๋ ์ด์ฒ๋ผ ๋ค์ํ ๊ธฐ์ ์ ์ฑ๋ฆฐ์ง๊ฐ ์กด์ฌํ๊ณ ์๋๋ ํจ๊ป ํด๊ฒฐํด๋๊ฐ๊ณ ์ถ์ ๋ถ๋ค์ ์ฑ์ฉ ๊ณต๊ณ ๋ฅผ ํ์ธํ์๊ณ ์ง์ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.