๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ”ฅ IT 8๊ฐœ ์ง๋ฌด ๊ธฐ์ดˆ์ฒดํ—˜

์„ฑ๋Šฅํ…Œ์ŠคํŠธ ๋„๊ตฌ - Jmeter

์„ฑ๋Šฅํ…Œ์ŠคํŠธ ๋ž€?

  • ์„œ๋น„์Šค ๋ฐ ์„œ๋น„์Šค ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ ์‚ฌ์šฉ ํ™˜๊ฒฝ๊ณผ ๋น„์Šทํ•œ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด์„œ Response Time(์‘๋‹ต์‹œ๊ฐ„) ๊ณผ Throughput(์ฒ˜๋ฆฌ๋Ÿ‰), ๋ณ‘๋ชฉ๊ตฌ๊ฐ„ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋กœ ์–ป์€ ์ •๋ณด๋กœ ์„œ๋น„์Šค๋‚˜ ์„œ๋น„์Šค ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ์ ์„ ํ™•์ธํ•˜๊ณ  ์ด๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. JMeter

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํŒŒ์น˜ ํ”„๋กœ์ ํŠธ์ด๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฒ˜๋Ÿผ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋กœ ๋œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๋ฌด๋ฃŒ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

JMeter๋Š” ๋‹จ์œ„/์„ฑ๋Šฅ/์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋“ฑ ๋งŽ์€ ๊ณณ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

JMeter๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๋‹จ๊ณ„์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ , ํ†ต์‹ ๊ทœ์•ฝ์— ๋งž๋„๋ก ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฉ”์‹œ์ง€๋งŒ ์†ก์ˆ˜์‹ ํ•  ๋ฟ์ด๊ณ  ํด๋ผ์ด์–ธํŠธ ์ž์ฒด์—์„œ ํ–‰ํ•ด์ง€๋Š” ์—ฐ์‚ฐ๋™์ž‘์€ ํ•˜์ง€์•Š๋Š”๋‹ค.

 

1) JMeter์˜ ๊ตฌ์„ฑ ์š”์†Œ

JMeter๋Š” ํฌ๊ฒŒ Thread Group, Connector, Request, Result View์˜ ๊ตฌ์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  • Thread Group : ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— ์ ‘์†๋Ÿ‰๊ณผ ๋นˆ๋„๋ฅผ ์ž…๋ ฅ
  • Connector : ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— ์ ‘์†์ •๋ณด๋ฅผ ์ž…๋ ฅ
  • Request : ์‹ค์ œ ํ…Œ์ŠคํŠธํ•  ๋กœ์ง์„ ์ž…๋ ฅ
  • Result View : ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์คŒ

 

 

2. JMeter ์„ค์น˜ํ•˜๊ธฐ

1) java ์„ค์น˜ : jmeter๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ž๋ฐ” 8 ๋ฒ„์ „์ด์ƒ์ด ํ•„์š”ํ•˜๋‹ค. ์•„๋ž˜ ๋งํฌ์—์„œ OS๋งž๋Š” ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์„ค์น˜ํ•œ๋‹ค. (์žˆ๋Š” ๊ฒฝ์šฐ ์„ค์น˜ํ•  ํ•„์š”X)

https://www.oracle.com/java/technologies/javase-downloads.html

 

2) jmeter ์„ค์น˜ : ์•„๋ž˜ ๋งํฌ์—์„œ jmeterํˆด์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ์ค‘ zipํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค. 

https://jmeter.apache.org/download_jmeter.cgi

3) JMeterํˆด ์‹คํ–‰ : ์••์ถ•์„ ํ’€๊ณ  bin ํด๋” ์•ˆ์— ์žˆ๋Š” jmeter.bat ์—ด์–ด JMeter์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. cmd์ฐฝ์œผ๋กœ ๋กœ๊ทธ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํˆด์ด ๋œจ๊ณ ๋‚œ ํ›„์—๋„ cmd์ฐฝ์€ ๋‹ซ์ง€ ์•Š๋Š”๋‹ค.

 

 

3. JMeter - DB๊ด€๋ จ ๋„๊ตฌ ์„ค์น˜

1) ์ ‘์†๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ : Jmeter๊ฐ€ DB์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ‘์†๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์•„๋ž˜ ๋งํฌ์— ๋“ค์–ด๊ฐ€ platform independent ๋ฉ”๋‰ด์—์„œ zipํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ฉด ๋œ๋‹ค. 

https://dev.mysql.com/downloads/connector/j/

๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํŒŒ์ผ ์••์ถ•์„ ํ‘ผ๋‹ค. .jar๋กœ ๋๋‚˜๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด jmeterํด๋”์˜ libํด๋”์— ๋„ฃ์–ด์ค€๋‹ค.

 

2) ํ…Œ์ŠคํŠธํ•  DB(RDS MySQL) ์ƒ์„ฑ, ๋ณด์•ˆ๊ทธ๋ฃน ํŽธ์ง‘

โ–ถ 2-tier ๊ตฌ์ถ• - (3. RDS MySQL ์ƒ์„ฑ) )

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ '์˜ˆ'๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ˆ„๋ฅด๊ณ  VPC๋ณด์•ˆ๊ทธ๋ฃน ๋ฐ‘์— ์žˆ๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ•œ๋‹ค. 

์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์— ์•„๋ž˜์™€ ๊ฐ™์ด SSH ๊ทœ์น™์„ ์„ค์ •ํ•ด์ค€๋‹ค. 22ํฌํŠธ๋ฅผ ๋‚ดIP๋กœ๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

3) MySQL Clent ์„ค์น˜ : ๋กœ์ปฌ์—์„œ MySQL์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MySQL Client๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์•„๋ž˜ ๋งํฌ์—์„œ ๊ฐ OS์— ๋งž๋Š” 8.0์ด์ƒ์˜ ๋ฒ„์ „์„ ์ฐพ์•„ ์„ค์น˜ํ•œ๋‹ค.

https://dev.mysql.com/downloads/mysql/

๋‹ค์šด๋กœ๋“œ ํ›„ ์••์ถ•์„ ํ’€๊ณ , cmd์ฐฝ์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

mysql --version

 

+) DB์— ๋ถ€ํ•˜๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด DB์— ํ…Œ์ด๋ธ” ์ƒ์„ฑ

# ๋กœ์ปฌ์—์„œ MySQL์— ์ ‘์†
mysql -u (์œ ์ € ์•„์ด๋””) -p -h (RDS ์—”๋“œํฌ์ธํŠธ) -E

# DB์— ํ…Œ์ด๋ธ” ์ƒ์„ฑ
create database (์ƒ์„ฑํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„);
use (์ƒ์„ฑํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„);
create table (์ƒ์„ฑํ•  ํ…Œ์ด๋ธ” ์ด๋ฆ„) (sn varchar(10));

 

 

4. JMeter ์‚ฌ์šฉํ•˜๊ธฐ (๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ํ…œํ”Œ๋ฆฟ ์ด์šฉ)

Jmeter๋Š” ์‹œ์ž‘ํ•  ๋•Œ libํด๋”๋ฅผ ์ฐธ์กฐํ•˜๋ฏ€๋กœ, Jmeter๋ฅผ ๋‹ซ๊ณ  ์žฌ์‹คํ–‰ํ•œ๋‹ค.

 

1) ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ : [ File > Templates ]๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ƒ๋‹จ ์…€๋ ‰ํŠธ๋ฐ•์Šค์—์„œ JDBC Load Test๋ฅผ ํด๋ฆญํ•œ๋‹ค. create ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒ์„ฑํ•œ๋‹ค.

 

2) Connector ์„ค์ • : ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— ์ ‘์†์ •๋ณด๋ฅผ ์ž…๋ ฅ

๊ฐ ์˜ต์…˜์— ๋Œ€ํ•œ ์„ค๋ช… ํ™•์ธ โ–ท [ https://jmeter.apache.org/usermanual/component_reference.html ]

๋”ฐ๋กœ ์™„๋ฃŒ ๋ฒ„ํŠผ์€ ์—†๋‹ค. 

 

3) Thread Group ์„ค์ • : ์“ฐ๋ ˆ๋“œ ๊ทธ๋ฃน์€ ๋ถ€ํ•˜๋ฅผ ์ค„ ์–‘๊ณผ ๋นˆ๋„๋ฅผ ์„ค์ •

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด 10์œ ์ €๊ฐ€ 30์ดˆ ์•ˆ์— ๋ชจ๋‘ ์‹คํ–‰ํ•ด์•ผ ๋˜๋ฏ€๋กœ, (30/10)์ดˆ์— ํ•œ ๋ฒˆ์”ฉ 10๊ฐœ๊ฐ€ DB์— ์—ฐ๊ฒฐ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ž‘์—…์„ 2๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค. 

 

4) JDBC Request ์„ค์ • : ์‹ค์ œ ํ…Œ์ŠคํŠธํ•  ๋กœ์ง์„ ์ž‘์„ฑ

 

5) Summary Report ์ถ”๊ฐ€ : summary report๋Š” ์š”์ฒญ์„ฑ๊ณต์—ฌ๋ถ€ ํ†ต๊ณ„๋ฅผ ๋‚ด์ค€๋‹ค. DB์— ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ ค์„œ ์š”์ฒญ์— ์‹คํŒจํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ, ๋Œ€๋žต ๋ช‡ ๊ฑด๊นŒ์ง€ ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

6) ๊ฒฐ๊ณผ ํ™•์ธ : [ ํŒŒ์ผ > ์ €์žฅ ]์„ ๋ˆŒ๋Ÿฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  JDBC Requestํ™”๋ฉด์„ ๋„์šฐ๊ณ  ์ƒ๋‹จ์— ์ดˆ๋ก์ƒ‰์œผ๋กœ ๋œ ์‹œ์ž‘๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹œ์ž‘ํ•œ๋‹ค.