Scenario Library KO - k-p2p-lab/kpl-v3 GitHub Wiki

์‹œ๋‚˜๋ฆฌ์˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Wiki home โ€บ ํ•œ๊ตญ์–ด ๋ฌธ์„œ ยท ์˜์–ด ์›๋ฌธ

๋ฌธ์„œ ์•ˆ๋‚ด ยท ์†Œ์Šค ์ €์žฅ์†Œ

๋Œ€์‹œ๋ณด๋“œ๋Š” ์žฌ์‚ฌ์šฉํ•  ๊ฒ€์ฆ๋œ YAML ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ Controller์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‹คํ—˜ ๊ฒฐ๊ณผ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค ์ €์žฅ๋งŒ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ํŽธ์ง‘ํ•œ YAML์„ ์‹คํ–‰ํ•ด๋„ ์ž๋™ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์–ด๋А ํ•œ์ชฝ์„ ์‚ญ์ œํ•ด๋„ ๋‹ค๋ฅธ ์ชฝ์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

  1. Run experiment์„ ์—ฝ๋‹ˆ๋‹ค. ํ˜„์žฌ Controller์—์„œ Saved scenarios ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
  2. + New๋ฅผ ๋ˆ„๋ฅด๊ณ  ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด Saved scenario name์„ ์ž…๋ ฅํ•œ ๋’ค YAML์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  3. Save scenario๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ์ƒˆ ํ•ญ๋ชฉ์ด ์„ ํƒ๋œ ์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  4. ๋ชฉ๋ก์—์„œ ์‹œ๋‚˜๋ฆฌ์˜ค ์ด๋ฆ„(Load โ†’)์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ด๋ฆ„๊ณผ YAML๋กœ ํŽธ์ง‘๊ธฐ ๋‚ด์šฉ์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ Editing ํ‘œ์‹œ์™€ ํ•จ๊ป˜ ๊ฐ•์กฐ๋ฉ๋‹ˆ๋‹ค.
  5. ์ด๋ฆ„ ๋˜๋Š” YAML์„ ํŽธ์ง‘ํ•˜๊ณ  Save changes๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ ํƒํ•œ ํ•ญ๋ชฉ์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ์„ ์œ ์ง€ํ•œ ์ฑ„ ์ƒˆ ํ•ญ๋ชฉ์„ ๋งŒ๋“ค๋ ค๋ฉด Save as new๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  6. ํœด์ง€ํ†ต ์•„์ด์ฝ˜๊ณผ Confirm delete๋ฅผ ์ฐจ๋ก€๋กœ ๋ˆŒ๋Ÿฌ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Cancel์„ ๋ˆ„๋ฅด๋ฉด ์‚ญ์ œ๋ฅผ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ๊ณ ์นจ ์•„์ด์ฝ˜์€ Controller์—์„œ ๋ชฉ๋ก์„ ๋‹ค์‹œ ์ฝ์Šต๋‹ˆ๋‹ค.

๋””๋ฐ”์ด์Šค์˜ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด Scenario editor ํ—ค๋”์˜ Choose files๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ๋จผ์ € + New ๋˜๋Š” Editor๋ฅผ ์—ฝ๋‹ˆ๋‹ค. UTF-8 .yaml ๋˜๋Š” .yml ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉฐ, ํŒŒ์ผ๋งˆ๋‹ค 1 MiB ์ดํ•˜์ด๊ณ  ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 100๊ฐœยท์ด 16 MiB๊นŒ์ง€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ ์ด๋ฆ„์€ ๋งˆ์ง€๋ง‰ ํ™•์žฅ์ž๋ฅผ ๋บ€ ํŒŒ์ผ๋ช…์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด mesh.er.yaml์€ mesh.er๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. YAML ์ตœ์ƒ์œ„ name์€ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ•œ ํŒŒ์ผ: ๋‚ด์šฉ์ด ์ƒˆ ๋ฏธ์ €์žฅ ์ดˆ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ YAML์„ ๊ฒ€ํ† ํ•˜๊ณ  Validate๋กœ ํ™•์ธํ•œ ๋’ค Save scenario๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ํŒŒ์ผ: ํ˜„์žฌ ํŽธ์ง‘ ์ดˆ์•ˆ์„ ๋ณด์กดํ•œ ์ฑ„ ํŒŒ์ผ๋ณ„ ์ €์žฅ ์ด๋ฆ„๊ณผ ์ƒํƒœ๋ฅผ ๊ฒ€ํ†  ๋ชฉ๋ก์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ œ์™ธํ•  ํŒŒ์ผ์˜ ์ฒดํฌ๋ฅผ ํ•ด์ œํ•˜๊ณ  Import selected๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ ํƒํ•œ ํŒŒ์ผ์„ ์ฐจ๋ก€๋กœ ๊ฒ€์ฆยท์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ํŒŒ์ผ, ์ฝ๊ธฐ ์‹คํŒจ, ์ž˜๋ชป๋œ UTF-8, ํฌ๊ธฐ ์ดˆ๊ณผ, ์„ ํƒ ๋ชฉ๋ก ์•ˆ์˜ ์ €์žฅ ์ด๋ฆ„ ์ค‘๋ณต์€ ํŒŒ์ผ๋ณ„๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Cancel ๋˜๋Š” Done์„ ๋ˆ„๋ฅด๋ฉด ๋ณด์กดํ•œ ์ดˆ์•ˆ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

ํŒŒ์ผ ์„ ํƒ๋งŒ์œผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๋Š” ์ค‘ Stop after current๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ ์š”์ฒญ์„ ๋งˆ์นœ ๋’ค ๋ฉˆ์ถ”๊ณ  ๋‚˜๋จธ์ง€ ํŒŒ์ผ์„ ๊ฒ€ํ†  ๋ชฉ๋ก์— ๋‚จ๊น๋‹ˆ๋‹ค. ์ €์žฅ ์ค‘ ํŽธ์ง‘๊ธฐ๋ฅผ ๋‹ซ์•„๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฉˆ์ถ”๋ฉฐ ๋‹ค์‹œ ์—ด๋ฉด ๊ฒ€ํ†  ๋ชฉ๋ก๊ณผ ์ €์žฅ์ด ํ™•์ธ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ดˆ ๋””๋ฐ”์ด์Šค ์ฝ๊ธฐ ์ค‘ ๋‹ซ์œผ๋ฉด ์ดˆ์•ˆ์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ฝ๊ธฐ๋ฅผ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ €์žฅํ•œ ํŒŒ์ผ์€ ์žฌ์‹œ๋„์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ํ• ๋‹น๋งŒ ์‹คํŒจํ•œ ๊ฒฝ์šฐ Import selected๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ• ๋‹น๋งŒ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. Status unknown์€ ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ ์ €์žฅํ–ˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์œผ๋กœ, ์ฒ˜๋ฆฌ๋ฅผ ๋ฉˆ์ถ”๋ฉฐ ํ•ด๋‹น ๊ฒ€ํ†  ๋ชฉ๋ก์—์„œ๋Š” ๊ทธ ํŒŒ์ผ์„ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€ํ† ๋ฅผ ๋‹ซ๊ณ  ์ €์žฅ ๋ชฉ๋ก์„ ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ์ €์žฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ๋’ค ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋‹ค์‹œ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

PC์—์„œ๋Š” ๋ชฉ๋ก๊ณผ ํŽธ์ง‘๊ธฐ๋ฅผ ๋‚˜๋ž€ํžˆ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ์—์„œ๋Š” Saved scenarios์™€ Editor๋ฅผ ์ „ํ™˜ํ•˜๋ฉฐ, ํ•ญ๋ชฉ์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ํ‚ค๋ณด๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์—ด์ง€ ์•Š๊ณ  ํŽธ์ง‘ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ๋ฒ„ํŠผ์€ ์–ด๋А ํ™”๋ฉด์—์„œ๋‚˜ ํ•˜๋‹จ์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์ด๋‚˜ ID๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ˜„์žฌ ํŽธ์ง‘ ๋‚ด์šฉ๊ณผ ์ตœ๊ทผ ์ˆ˜์ • ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ชฉ๋ก์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์„ ์ง€์šฐ๋ฉด ์ „์ฒด ๋ชฉ๋ก์„ ๋‹ค์‹œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

New๋Š” ํŽธ์ง‘๊ธฐ๋ฅผ ๊ธฐ๋ณธ ์˜ˆ์ œ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์„ ํƒํ•œ ์ €์žฅ ํ•ญ๋ชฉ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ญ๋ชฉ์„ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ํ•œ ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ƒˆ ํ•ญ๋ชฉ์„ ์‹œ์ž‘ํ•˜๋ฉด ์ €์žฅํ•˜์ง€ ์•Š์€ ํŽธ์ง‘ ๋‚ด์šฉ์€ ๋ณต๊ตฌ ์‚ฌ๋ณธ ์—†์ด ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฒ€ํ† ๋Š” ์ดˆ์•ˆ์„ ๋ณด์กดํ•˜๊ณ  ํŽธ์ง‘๊ธฐ ์ œ๋ชฉ ์˜์—ญ๊ณผ ์‹คํ–‰ ์„ค์ •์„ ์ˆจ๊ฒจ ํŒŒ์ผ ๋ชฉ๋ก ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. Cancel ๋˜๋Š” Done์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์‹œ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Run์€ ์ €์žฅ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํŽธ์ง‘๊ธฐ์— ์žˆ๋Š” YAML์„ ์‹คํ–‰ํ•˜๋ฉฐ 1~100ํšŒ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„์€ ์•ž๋’ค ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ ๋’ค ๊ฒ€์‚ฌํ•˜๋ฉฐ ํ•„์ˆ˜์ด๊ณ , Unicode 128์ž ์ดํ•˜์ด๋ฉฐ ์ œ์–ด ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. YAML๋„ ํ•„์ˆ˜์ด๋ฉฐ 1 MiB ์ดํ•˜์ด๊ณ  ์ €์žฅ ์ „์— ์ผ๋ฐ˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ํ•ญ๋ชฉ์—๋Š” ๋ณ„๋„์˜ ์ƒ์„ฑ ID๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์€ ์ตœ๊ทผ ์ˆ˜์ • ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„๊ณผ YAML ์ตœ์ƒ์œ„ name์€ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ €์žฅํ•œ ํŽธ์ง‘๊ธฐ ์ž…๋ ฅ์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ํ›„์ž๋Š” ์‹คํ—˜ run์˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์€ ์‹œ๋‚˜๋ฆฌ์˜ค schema๋ฅผ ๊ฒ€์ฆํ•˜๋ฉฐ Agent ์šฉ๋Ÿ‰ ์˜ˆ์•ฝ์ด๋‚˜ Docker, ์ปค๋„ ์ง€์›, ์—ฐ๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋Š” ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ ํƒํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค ๋‹ค์šด๋กœ๋“œ

Saved scenarios์—์„œ Select๋ฅผ ๋ˆ„๋ฅด๊ณ  ํ•ญ๋ชฉ์„ ์„ ํƒํ•œ ๋’ค Download ZIP์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. Select visible์€ ํ˜„์žฌ ๊ทธ๋ฃนยท๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋งž๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ZIP์—๋Š” ์ €์žฅ๋œ YAML์„ ๊ทธ๋Œ€๋กœ ๋‹ด์€ <์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค ์ด๋ฆ„>.yaml์ด ํ•ญ๋ชฉ๋ณ„๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ €์žฅํ•˜์ง€ ์•Š์€ ํŽธ์ง‘ ๋‚ด์šฉ์€ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ๋ช…์€ Unicode๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋ฅผ ์น˜ํ™˜ํ•˜๋ฉฐ, ๊ธด ์ด๋ฆ„์„ ์ค„์ด๊ณ  ์ค‘๋ณต ์ด๋ฆ„์— ์ˆซ์ž ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค. ์••์ถ•์„ ํ‘ผ YAML ํŒŒ์ผ์€ Choose files๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์†Œ์†์€ YAML ๋‚ด๋ณด๋‚ด๊ธฐ์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ค€๋น„ ๊ณผ์ •๊ณผ ๋‹ค์šด๋กœ๋“œ ํ•œ๋„๋Š” ์ผ๊ด„ ๋‹ค์šด๋กœ๋“œ API๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

๊ณต์œ  ๊ทธ๋ฃน

Saved scenarios์™€ Saved results๋Š” ๊ฐ™์€ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํŽ˜์ด์ง€์—์„œ Group ํ•„ํ„ฐ๋„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ํ•œ์ชฝ์—์„œ ๊ทธ๋ฃน์„ ์„ ํƒํ•˜๋ฉด ๋‹ค๋ฅธ ์ชฝ์—๋„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. All groups๋Š” ๋ชจ๋“  ๊ทธ๋ฃน์„, Ungrouped๋Š” ๊ทธ๋ฃน์— ์†ํ•˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๊ณผ ๊ฒฐ๊ณผ ์ƒํƒœ ํ•„ํ„ฐ๋Š” ํ‘œ์‹œ ๋ฒ”์œ„๋ฅผ ์ถ”๊ฐ€๋กœ ์ขํž™๋‹ˆ๋‹ค.

  1. Groups์—์„œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  Create๋กœ ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋ฃน์˜ Edit์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ Delete group์„ ๋ˆ„๋ฅด๊ณ  ํ™•์ธํ•˜์—ฌ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋А ๋ชฉ๋ก์—์„œ๋“  Select๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ Select visible์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์„ ํƒ ๋ฒ”์œ„๋Š” ํ˜„์žฌ ๊ทธ๋ฃนยท๊ฒ€์ƒ‰ยท๊ฒฐ๊ณผ ์ƒํƒœ ํ•„ํ„ฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  3. ๋Œ€์ƒ ๊ทธ๋ฃน์„ ๊ณ ๋ฅด๊ณ  Move๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. Ungrouped๋ฅผ ๊ณ ๋ฅด๋ฉด ๊ทธ๋ฃน ์†Œ์†์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. Clear๋Š” ์„ ํƒ์„ ์ง€์šฐ๊ณ  Done์€ ์„ ํƒ ๋ชจ๋“œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๊ฒฐ๊ณผ ๋ฌถ์Œ์€ ์ตœ๋Œ€ ํ•œ ๊ทธ๋ฃน์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต ์‹คํ—˜์€ ์ด์ „ ์‹œ๋„ยท์žฌ์‹œ๋„ยท๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•œ ํšŒ์ฐจ๋ฅผ ํฌํ•จํ•œ ๋ฐฐ์น˜ ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๋ฌถ์Œ์ด๋ฉฐ, ๋‹จ๋… run๋„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๋ฌถ์Œ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์น˜๋ฅผ ์ด๋™ํ•˜๋ฉด ํ•ด๋‹น run๋“ค์ด ํ•จ๊ป˜ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. Delete group์€ ๊ทธ๋ฃน์„ ์ง€์šฐ๊ณ  ์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๊ฒฐ๊ณผ๋ฅผ Ungrouped์— ๋‚จ๊น๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ์ž‘์—…์˜ Delete batch๋Š” ํ™•์ธ ํ›„ ํ•ด๋‹น ๋ฐฐ์น˜์˜ ์ €์žฅ ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Save as new๋ฅผ ํฌํ•จํ•œ ์ƒˆ ์‹œ๋‚˜๋ฆฌ์˜ค ์ €์žฅ์€ ์ €์žฅ์„ ์‹œ์ž‘ํ•  ๋•Œ ์„ ํƒํ•œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๊ฒ€ํ† ๋ฅผ ์—ด ๋•Œ ๊ทธ๋ฃน์„ ๊ณ ์ •ํ•˜๊ณ  ๋ชฉ๋ก ์œ„์— ํ‘œ์‹œํ•˜๋ฏ€๋กœ ์ดํ›„ ํ•„ํ„ฐ๋ฅผ ๋ฐ”๊ฟ”๋„ ๊ฐ€์ ธ์˜ฌ ๋Œ€์ƒ ๊ทธ๋ฃน์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. All groups์™€ Ungrouped์—์„œ๋Š” ๊ทธ๋ฃน ์—†๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ์กด ์‹œ๋‚˜๋ฆฌ์˜ค์˜ Save changes๋Š” ์†Œ์†์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ ํƒํ•ด ์‹คํ–‰ํ•˜๋ฉด ์ƒˆ ๊ฒฐ๊ณผ๋Š” ์„œ๋ฒ„์—์„œ ํ™•์ธํ•œ ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ˜„์žฌ ๊ทธ๋ฃน์— ์ž๋™์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ํŽธ์ง‘๊ธฐ์— ์ €์žฅํ•˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์ด ์žˆ์–ด๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. Run์€ ํŽธ์ง‘๊ธฐ์˜ YAML์„ ์‹คํ–‰ํ•˜๊ณ , ์„ ํƒํ•œ ์ €์žฅ ํ•ญ๋ชฉ์€ ๊ทธ๋ฃน์„ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์ „์ฒด ๋ฐ˜๋ณต ํšŒ์ฐจ ๋ชจ๋‘ ์ƒˆ ์‹คํ–‰ ์ ‘์ˆ˜ ์‹œ ๊ทธ๋ฃน์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์—†๋Š” ์ €์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค๋‚˜ ์ƒˆ ๋ฏธ์ €์žฅ ์ž…๋ ฅ์˜ ๊ฒฐ๊ณผ๋Š” ํ˜„์žฌ ํ•„ํ„ฐ์™€ ๊ด€๊ณ„์—†์ด Ungrouped๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ ‘์ˆ˜ ํ›„ Dashboard๊ฐ€ ๊ทธ๋ฃน ์†Œ์†์„ ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ•ด๋‹น ๊ทธ๋ฃน์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ ์›๋ณธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด๋„ ๊ธฐ์กด ๊ฒฐ๊ณผ์˜ ๊ทธ๋ฃน์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Select โ†’ Move๋กœ ์˜ฎ๊ธด ๊ฒฐ๊ณผ๋Š” ์žฌ์‹œ๋„ยท์ด์–ดํ•˜๊ธฐยท์ถ”๊ฐ€ ์‹คํ–‰์—์„œ๋„ ์„ ํƒํ•œ ๊ทธ๋ฃน์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…๋“ค์€ ๊ธฐ์กด ๊ฒฐ๊ณผ ๋ฌถ์Œ์˜ ์†Œ์†์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์กฐํšŒ๋‚˜ ์ €์žฅ์— ์‹คํŒจํ•˜๋ฉด ์ƒˆ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‘œ์‹œ๋œ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•œ ๋’ค ๋‹ค์‹œ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ฃน๊ณผ ์†Œ์†์€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ณต์œ ํ•˜๋ฉฐ ๋กœ์ปฌ <data-dir>/library-groups.json์— ์ €์žฅ๋˜์–ด Controller ์žฌ์‹œ์ž‘ ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ Controller ๋ฐฑ์—…์— ํฌํ•จํ•˜์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ณ€๊ฒฝ์€ ๋ชฉ๋ก ์ƒˆ๋กœ๊ณ ์นจ ๋˜๋Š” Groups โ†’ Refresh๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ๋™์‹œ ์ˆ˜์ • ์ถฉ๋Œ ์‹œ ํ˜„์žฌ ๊ทธ๋ฃน์„ ๋‹ค์‹œ ์ฝ๊ณ  ๊ฒ€ํ† ํ•œ ๋’ค ์žฌ์‹œ๋„ํ•˜๋ฉฐ, ์ €์žฅ ์—ฌ๋ถ€๊ฐ€ ๋ถˆํ™•์‹คํ•œ ๊ฒฝ์šฐ ๋จผ์ € ์ƒˆ๋กœ๊ณ ์นจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„ยทํ•œ๋„ยทAPI ๊ทœ์•ฝ์€ ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ทธ๋ฃน API์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์„ฑ ์ค‘์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฒ€์ฆ

YAML scenario ์˜†์˜ Validate๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ €์žฅยท์‹คํ–‰๊ณผ ๊ฐ™์€ ํŒŒ์„œ๋กœ ํ˜„์žฌ ๋‚ด์šฉ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ ์นธ ์•„๋ž˜ ํŒจ๋„์— ์„ฑ๊ณต ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค ์ด๋ฆ„๊ณผ phase ๊ฐœ์ˆ˜๋ฅผ, ์‹คํŒจ ์‹œ ์˜ค๋ฅ˜ ์›์ธ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. YAML ํŒŒ์„œ๊ฐ€ ์ œ๊ณตํ•˜๋ฉด ์ค„ ๋ฒˆํ˜ธ๋„ ํ‘œ์‹œํ•˜๋ฉฐ ์„ค์ • ์˜ค๋ฅ˜์—๋Š” ๊ด€๋ จ ํ•„๋“œ๋‚˜ phase๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ธด ์˜ค๋ฅ˜๋Š” ์Šคํฌ๋กคํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ์€ ๋กœ๊ทธ์ธ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ €์žฅ์šฉ ์ด๋ฆ„์ด ํ•„์š” ์—†๊ณ  ์ €์žฅยท์‹คํ–‰๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. YAML์€ ํ•œ ๋ฌธ์„œ์—ฌ์•ผ ํ•˜๊ณ  1 MiB ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. YAML ์ˆ˜์ •, New, ํ•œ ํŒŒ์ผ ์„ ํƒ, ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋Š” ์ด์ „ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šฐ๋ฉฐ ์˜ˆ์ „ ์ž…๋ ฅ์— ๋Œ€ํ•œ ๋Šฆ์€ ์‘๋‹ต์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ฒ€ํ† ๋Š” ๊ธฐ์กด ์ดˆ์•ˆ๊ณผ ๊ฒ€์ฆ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญยท๋„คํŠธ์›Œํฌ ์‹คํŒจ์™€ ์ž˜๋ชป๋œ YAML์€ ๊ตฌ๋ถ„ํ•ด์„œ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ฆ ์„ฑ๊ณต์ด Agent ์šฉ๋Ÿ‰, Docker ์ง€์›์ด๋‚˜ ์‹คํ–‰ ์‹œ ์—ฐ๊ฒฐ์„ฑ๊นŒ์ง€ ํ™•์ธํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ์ƒ ์ข…๋ฃŒ ์‹œ๊ฐ

์‹ค์‹œ๊ฐ„ ์ง„ํ–‰ ์˜ˆ์ธก๊ณผ ๋ถˆํ™•์‹ค์„ฑ์€ ์‹คํ–‰ ์˜ˆ์ƒ ์ข…๋ฃŒ ์‹œ๊ฐ์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

REST API

์š”์ฒญ ๋ณธ๋ฌธ, ์‘๋‹ต, ์ œํ•œ๊ณผ curl ์˜ˆ์ œ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ๊ณผ ๋ฐฑ์—…

๊ฐ ํ•ญ๋ชฉ์€ <data-dir>/scenarios ์•„๋ž˜์˜ ๊ฐœ๋ณ„ JSON ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Swarm์€ Controller ์˜๊ตฌ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ /var/lib/kpl/data์— ๋งˆ์šดํŠธํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘๊ณผ scripts/swarm.sh remove ํ›„์—๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ํ•จ๊ป˜ ๋ณด์กดํ•˜๋ ค๋ฉด Controller ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด๋ฅผ ๋ฐฑ์—…ํ•˜์‹ญ์‹œ์˜ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ•ด๋‹น Controller์—๋งŒ ์žˆ์œผ๋ฉฐ control node ์‚ฌ์ด์— ๋ณต์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Controller๋Š” ์ž„์‹œ ํŒŒ์ผ๊ณผ ์›์ž์  ํŒŒ์ผ์‹œ์Šคํ…œ ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ ํ•ญ๋ชฉ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก ๋˜๋Š” ํ•ญ๋ชฉ์„ ์ฝ์„ ๋•Œ ํ˜•์‹์ด ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ ์˜ˆ์ƒํ•˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๋ถ€๋ถ„์ ์œผ๋กœ ์‹ ๋ขฐํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ, payload ํ•œ๋„์™€ ๊ฒ€์ฆ์€ internal/controller/scenarios.go, ํŽธ์ง‘๊ธฐ ์‚ฌ์šฉ ํ๋ฆ„์€ internal/webui/static/app.js์— ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ