TEST

[TEST] λΆ€ν•˜ν…ŒμŠ€νŠΈ : κΈ°λ³Έ κ°œλ…

sian han 2025. 5. 26. 15:47

 

πŸŽ“ 이 글은 μΈν”„λŸ°μ—μ„œ μ œκ³΅ν•˜λŠ” "λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ 처리λ₯Ό μœ„ν•œ λΆ€ν•˜ ν…ŒμŠ€νŠΈ μž…λ¬Έ/μ‹€μ „" κ°•μ˜λ₯Ό μˆ˜κ°•ν•˜λ©΄μ„œ μ •λ¦¬ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ κΈ€μž…λ‹ˆλ‹€.

https://inf.run/jBYVR

 

λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ 처리λ₯Ό μœ„ν•œ λΆ€ν•˜ν…ŒμŠ€νŠΈ μž…λ¬Έ/μ‹€μ „ κ°•μ˜ | JSCODE λ°•μž¬μ„± - μΈν”„λŸ°

JSCODE λ°•μž¬μ„± | , [사진]🀬 에라이, λͺ» ν•΄λ¨Ήκ² λ„€!λΉ„μ „κ³΅μžλ‘œ κ°œλ°œμ„ μ‹œμž‘ν•΄ μ—¬λŸ¬ νšŒμ‚¬μ—μ„œ CTO둜 ν™œλ™ν•˜λ‹€κ°€, ν˜„μž¬λŠ” ꡐ윑자둜 ν™œλ™ν•˜κ³  μžˆλŠ” λ°•μž¬μ„±μ΄λΌκ³  ν•©λ‹ˆλ‹€. 저도 λΉ„μ „κ³΅μžλ‘œ κ°œλ°œμ„ μ‹œμž‘

www.inflearn.com

 


1. λΆ€ν•˜ν…ŒμŠ€νŠΈμ˜ λͺ©ν‘œ

λΆ€ν•˜ν…ŒμŠ€νŠΈ 툴만 μ‚¬μš©ν•  쀄 μ•„λŠ”κ²ƒλ§ŒμœΌλ‘œλŠ” μ˜λ―Έκ°€ μ—†λ‹€. 

 

- λΆ€ν•˜ ν…ŒμŠ€νŠΈλ₯Ό 톡해 λ‚˜μ˜¨ μˆ˜μΉ˜λ“€μ„ 해석할 수 μžˆμ–΄μ•Ό 함

- λ„μΆœλœ μˆ˜μΉ˜λ“€μ„ 톡해 λ‚΄κ°€ κ΅¬μ„±ν•œ μ‹œμŠ€ν…œμ΄ μ–΄λŠμ •λ„μ˜ νŠΈλž˜ν”½μ„ 감당할 수 μžˆλŠ”μ§€ 슀슀둜 μΈ‘μ •ν•  수 μžˆμ–΄μ•Ό 함

- 더 λ§Žμ€ νŠΈλž˜ν”½μ„ 늘리기 μœ„ν•΄ μ–΄λ–»κ²Œ μ‹œμŠ€ν…œμ„ 고도화할 수 μžˆμ„μ§€ 슀슀둜 방법을 생각해 λ‚Ό μˆ˜μžˆμ–΄μ•Ό 됨. 

 

2. λΆ€ν•˜ ν…ŒμŠ€νŠΈ. μ™œ ν•„μš”ν•œκ°€ ? 

- λŒ€μš©λŸ‰ νŠΈλž˜ν”½ 처리 κ²½ν—˜ > μ„œλΉ„μŠ€κ°€ 고도화 될수둝 ν•„μˆ˜μ μΈ μš”μ†Œ

- λΆ€ν•˜ν…ŒμŠ€νŠΈ νˆ΄μ„ ν™œμš©ν•΄μ„œ λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ„ 직접 λ§Œλ“€μ–΄λ‚΄λ©΄μ„œ λΆ€ν•˜λ₯Ό μ–Όλ§ˆλ‚˜ κ²¬λŽŒλ‚Ό 수 μžˆλŠ”μ§€ ν…ŒμŠ€νŠΈ ν•˜κ²Œ λœλ‹€. 

- λΆ€ν•˜ ν…ŒμŠ€νŠΈ ν•˜λŠ” 방법을 λ°°μ›Œλ‘λ©΄ λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•  지에 λŒ€ν•œ κ²½ν—˜μ„ κ°„μ ‘μ μœΌλ‘œ μŒ“μ„ 수 있음

- λ°±μ—”λ“œ μ„œλ²„κ°€ μ–΄λŠμ •λ„μ˜ μš”μ²­μ„ κ²¬λ””λŠ”μ§€ 미리 νŒŒμ•…ν•˜μ—¬ νŠΈλž˜ν”½μ΄ λŠ˜μ–΄λ‚˜μ„œ μ„œλ²„κ°€ ν„°μ§ˆ λ•Œμ―€ λΉ λ₯΄κ²Œ λŒ€μ²˜ν•  수 μžˆλ‹€. 

 

3. λΆ€ν•˜ν…ŒμŠ€νŠΈλž€

- μ‹œμŠ€ν…œμ΄ μ–΄λŠμ •λ„μ˜ λΆ€ν•˜(=νŠΈλž˜ν”½) 을 κ²¬λ”œ 수 μžˆλŠ”μ§€ ν…ŒμŠ€νŠΈ ν•˜λŠ” 것

 

4. λΆ€ν•˜ν…ŒμŠ€νŠΈ 핡심 μš©μ–΄

μ²˜λ¦¬λŸ‰(Throughput)

- μ„œλΉ„μŠ€κ°€ 1μ΄ˆλ‹Ή μ²˜λ¦¬ν•  수 μžˆλŠ” νŠΈλž˜ν”½ μ–‘

- λ‹¨μœ„λŠ” TPS(Transaction Per Seconds, 1μ΄ˆλ‹Ή μ²˜λ¦¬ν•œ νŠΈλžœμž­μ…˜μ˜ 수)

- ex ) λ‚΄κ°€ λ§Œλ“  μ„œλΉ„μŠ€κ°€ 1μ΄ˆμ— μ΅œλŒ€ 100개의 API μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€λ©΄ Throghput 은 100TPS 라고 μ–˜κΈ°ν•¨

 

μ§€μ—° μ‹œκ°„(Latency)

- μš”청에 λŒ€ν•œ μ‘λ‹΅μ‹œκ°„

- ex) λ‚΄κ°€ λ§Œλ“  μ„œλΉ„μŠ€μ— λΆ€ν•˜ν…ŒμŠ€λ₯Ό ν–ˆλŠ”λ° 응닡 μ‹œκ°„μ΄ 2.5초일 경우, 평균 Latency κ°€ 2.5초라고 μ–˜κΈ°ν•œλ‹€.

 

5.  μ‚¬μš©ν•  λΆ€ν•˜ν…ŒμŠ€νŠΈ 도ꡬ

K6

- λ©”λͺ¨λ¦¬λ₯Ό 적게 μ‚¬μš©ν•˜λ©΄μ„œ 비ꡐ적 λ§Žμ€ μš”μ²­ 수λ₯Ό 보낼 수 μžˆλŠ” λΆ€ν•˜ ν…ŒμŠ€νŠΈ 툴

- 효율적으둜 λ§Žμ€ νŠΈλž˜ν”½μ„ λ°œμƒμ‹œν‚¬ 수 있음

 

λΆ€ν•˜ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό μ—¬λŸ¬κ°œ λ‹€λ£° 수 μžˆλŠ”μ§€λŠ” 사싀 μ€‘μš”ν•˜μ§€ μ•Šλ‹€. μ€‘μš”ν•œ 것은

- λΆ€ν•˜ν…ŒμŠ€νŠΈλ₯Ό ν•˜λ©΄μ„œ κ²°κ³Ό 데이터λ₯Ό μ •ν™•ν•˜κ²Œ 해석할 수 μžˆλŠ”μ§€,

- κ²°κ³Ό 데이터λ₯Ό λ°”νƒ•μœΌλ‘œ μ μ ˆν•œ λ°©μ‹μœΌλ‘œ μ„±λŠ₯ κ°œμ„ μ„ ν•  수 μžˆλŠ”μ§€μ΄λ‹€ (원리λ₯Ό μ•„λŠ”κ²ƒμ΄ μ€‘μš” ! )

 

6. EC2에 λΆ€ν•˜ν…ŒμŠ€νŠΈ 도ꡬ K6 μ„€μΉ˜

- λΆ€ν•˜ν…ŒμŠ€νŠΈ νˆ΄μ€ μ„±λŠ₯이 μ•ˆμ’‹μœΌλ©΄ 생각보닀 λ§Žμ€ λΆ€ν•˜λ₯Ό λ§Œλ“€μ–΄λ‚΄μ§€ λͺ»ν•œλ‹€.

- κ°•μ˜μ—μ„œ μ‚¬μš©ν•œ μΈμŠ€ν„΄μŠ€ μœ ν˜•μ€ t3a.small

- μ„œλ²„ 내뢀에 λΆ€ν•˜ν…ŒμŠ€νŠΈ 도ꡬ k6 μ„€μΉ˜

 

주의점

- λΆ€ν•˜ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ λ…λ¦½μ μœΌλ‘œ λΆ„λ¦¬ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.

  - λΆ€ν•˜ν…ŒμŠ€νŠΈ 툴 μžμ²΄λ„ νŠΈλž˜ν”½μ„ λ§Œλ“€μ–΄λ‚΄λ©΄μ„œ μ»΄ν“¨νŒ… λ¦¬μ†ŒμŠ€(CPU, λ©”λͺ¨λ¦¬ λ“±)λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έ (μ •ν™•ν•œ ν…ŒμŠ€νŠΈκ°€ μ•ˆλ¨)

 

- λΆ€ν•˜ ν…ŒμŠ€νŠΈ νˆ΄μ„ 개인 컴퓨터에 μ„€μΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€

  - 컴퓨터 자체적으둜 λΆ€ν•˜λ₯Ό λ°œμƒμ‹œν‚¬ λ•Œ 컴퓨터 자체적으둜 μ œν•œμ΄ κ±Έλ¦΄λ•Œκ°€ μžˆλ‹€. λ”°λΌμ„œ EC2 μΈμŠ€ν„΄μŠ€λ₯Ό 생성해 Linux ν™˜κ²½μ—μ„œ λΆ€ν•˜ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ” 것이 ꢌμž₯λœλ‹€.

 

 

7.  K6λ₯Ό ν™œμš©ν•΄ λΆ€ν•˜ ν…ŒμŠ€νŠΈ μ§„ν–‰ν•˜κΈ°

λΆ€ν•˜ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜κΈ° μ „, μ•„λž˜μ™€ 같이 인프라 아킀텍쳐λ₯Ό 그림으둜 κ·Έλ €λ†“μœΌλ©΄ 전체적인 νŠΈλž˜ν”½μ˜ 흐름을 ν•œλˆˆμ— νŒŒμ•…ν•  수 μžˆμ–΄ νŽΈλ¦¬ν•˜λ‹€. μ–΄λ””μ„œ μ„±λŠ₯적으둜 λ¬Έμ œκ°€ λ°œμƒν–ˆκ² κ±°λ‹ˆ ν•˜λŠ” 진단도 보닀 μ‰½κ²Œ 내릴 수 μžˆλ‹€. 

 

 

7-1. λ°±μ—”λ“œ μ„œλ²„μ— λΆ€ν•˜λ₯Ό μ£ΌκΈ° μœ„ν•œ K6 슀크립트 μž‘μ„±

- κ΅¬μ„±ν•œ μ‹œμŠ€ν…œμ΄ 1μ΄ˆμ— λͺ‡κ°œμ˜ μš”μ²­μ„ κ²¬λ”œ 수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄λ €λ©΄, μ μ§„μ μœΌλ‘œ νŠΈλž˜ν”½μ„ λŠ˜λ €κ°€κ²Œλ” λΆ€ν•˜ν…ŒμŠ€νŠΈλ₯Ό μ…‹νŒ…ν•΄μ•Ό ν•œλ‹€. 

- k6λ₯Ό μ„€μΉ˜ν•œ λΆ€ν•˜ν…ŒμŠ€νŠΈ μ„œλ²„μ— script.js νŒŒμΌμ„ μƒμ„±ν•˜κ³ 

- script.js 에 μ•„λž˜μ™€ 같이 μž‘μ„±ν•œλ‹€. 

 

- duration 10m : 10뢄에 κ±Έμ³μ„œ

- target 6000 : 가상 μœ μ € μˆ˜κ°€ 6000에 λ„λ‹¬ν•˜λ„λ‘ μ„€μ •

    = 6000λͺ…μ˜ μœ μ €κ°€ 10뢄에 걸쳐 [http.get μš”μ²­+1초 쉬기] 을 λ³΄λ‚΄λŠ” κ²ƒμœΌλ‘œ k6 κ°€ 섀정함

 

7.2 λΆ€ν•˜ν…ŒμŠ€νŠΈ μ‹€ν–‰

λΆ€ν•˜ν…ŒμŠ€νŠΈ μ‹€ν–‰ λͺ…λ Ήμ–΄ μž‘μ„± ν›„ enter

K6_WEB_DASHBOARD=true k6 run script.js

 

- μ›Ή νŽ˜μ΄μ§€μ—μ„œ k6 κ°€ λΆ€ν•˜ν…ŒμŠ€νŠΈ ν•˜λŠ” 과정을 보도둝 μ…‹νŒ…ν• κΊΌλΌλŠ” μ˜΅μ…˜ μΆ”κ°€

 

λΆ€ν•˜ν…ŒμŠ€νŠΈ 진행쀑 ...

 

- Vu: Virtual Users 

- web dashboad : 개개인이 κ°–κ³  μžˆλŠ” IP μ£Όμ†Œ. λ³΅μ‚¬ν•΄μ„œ μ›Ήμ—μ„œ μ ‘μ†ν•˜λ©΄ ν…ŒμŠ€νŠΈ ν•˜κ³  μžˆλŠ” 화면을 μ‹€μ‹œκ°„μœΌλ‘œ λ³Ό 수 μžˆλ‹€.