Development KO - k-p2p-lab/kpl-v3 GitHub Wiki
๊ฐ๋ฐ ๊ฐ์ด๋
Wiki home โบ ํ๊ตญ์ด ๋ฌธ์ ยท ์์ด ์๋ฌธ
๋ฌธ์ ์๋ด ยท ์์ค ์ ์ฅ์
์ ์ Go ๋ชจ๋ ๊ฒฝ๋ก๋ github.com/k-p2p-lab/kpl-v3์ด๋ฉฐ go.mod๋ Go 1.25 ์ด์์ ์๊ตฌํฉ๋๋ค. ์ด ๋ฌธ์๋ v3 ๊ฐ๋ฐ ์ ์ฐจ๋ฅผ ๋ค๋ฃน๋๋ค. ํ๋ก์ ํธ ๋ชฉํ์ ๊ฐ๋
์ค๊ณ๋ ํ๋ก์ ํธ ๊ฐ์์ ๊ณตํต ๊ฐ๋
์ ์ฐธ๊ณ ํ์ญ์์ค.
Linux ๋น๋์ ๊ฒ์ฆ
Linux ํ๊ฒฝ์ ์ ์ฅ์ ๋ฃจํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ญ์์ค.
go build -o bin/kpl ./cmd/kpl
go test -buildvcs=false ./... -timeout 120s
go vet ./...
sh scripts/test-swarm-agent.sh
sh scripts/test-check-swarm.sh
sh scripts/test-swarm-config.sh
sh scripts/test-swarm.sh
๋์์ฑ ๊ฒ์ฌ๋ ๋ค์ ๋ช ๋ น์ผ๋ก ์คํํฉ๋๋ค.
GORACE=atexit_sleep_ms=0 go test -race -buildvcs=false ./... -count=1 -timeout 120s
Agent ํ ์คํธ๋ Docker ๋ช ๋ น์ ๋ชจ์ํ๊ธฐ ์ํด ํ ์คํธ ์คํ ํ์ผ์ ์ฌ๋ฌ ๋ฒ ์์ ํ๋ก์ธ์ค๋ก ์คํํฉ๋๋ค. ์ด ์ค์ ์ ๊ฐ ์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃํ ๋ race ๋ฐํ์์ด ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์์ ๋ฉฐ, race ๊ฒ์ถ์ ๊ณ์ ํ์ฑํํฉ๋๋ค.
์คํํ์ง ์๊ณ ์๋๋ฆฌ์ค๋ฅผ ๊ฒ์ฆํ๋ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
./bin/kpl validate --scenario examples/smoke.yaml
Swarm์์ ๊ฐ๋ฐ ์คํ ์คํ
๋ณ๊ฒฝํ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๊ฒ์ํ ๋ค Swarm ์ ์ฐจ๋ก ๋ฐฐํฌํ์ญ์์ค. Linux ๋
ธ๋ ํ๋๋ก ๊ฐ๋ฐ์ฉ Swarm์ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ KPL_MIN_AGENTS=1๊ณผ deploy --all์ ์ฌ์ฉํฉ๋๋ค. Agent๋ ํ์ฑ Swarm ๋
ธ๋์ ๋ช
์์ ์ผ๋ก ์ค์ ํ ์ด๋ฏธ์ง ๋ฐ attachable Peer overlay๋ฅผ ์๊ตฌํฉ๋๋ค. ํธ์คํธ ๊ฐ ๋ฐฐ์น์ ์ฐ๊ฒฐ์ ๊ฒ์ฆํ ๋์๋ ์ต์ ๋ Agent ๋
ธ๋์์ ๋ถ์ฐ smoke ์๋๋ฆฌ์ค๋ฅผ ์คํํ์ญ์์ค.
์ปจํ ์ด๋์ ๋ธ๋ผ์ฐ์ ํ๊ท ๊ฒ์ฌ
์ด๋ฏธ ์ฌ์ฉํ ์ ์๋ Linux Docker daemon์ด ์๋ค๋ฉด ํธ์คํธ์ Go๋ฅผ ์ค์นํ์ง ์๊ณ Docker ํ ์คํธ target์ ์คํํฉ๋๋ค.
make test-linux
# Equivalent when make is unavailable:
docker build --target test -t kpl-v3:test .
Dockerfile์ test target์ Swarm ์
ธ ํ๊ท ์คํฌ๋ฆฝํธ ๋ค ๊ฐ์ Go ํจํค์ง ํ
์คํธ๋ฅผ ์คํํฉ๋๋ค. ์
ธ ํ
์คํธ๋ Docker ์๋ต์ ๋ชจ์ํฉ๋๋ค. ๋ณ๋ ์ปจํ
์ด๋ ๋ ๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋คํธ์ํฌ ์กฐ๊ฑด ํ
์คํธ๋ ๋ช
์์ ์ผ๋ก ํ์ฑํํด์ผ ํ๋ฉฐ ์ผ๋ฐ test ๋น๋์์๋ ๊ฑด๋๋๋๋ค. ๋ฐ๋ผ์ ์ด target๋ง์ผ๋ก ์ค์ Swarm ๋ฐฐ์น, ํธ์คํธ ๊ฐ ์ฐ๊ฒฐ, ์ปค๋ ๋คํธ์ํฌ ์กฐ๊ฑด ๋์์ ๊ฒ์ฆํ ๊ฒ์ ์๋๋๋ค.
๋ธ๋ผ์ฐ์ ๋ก์ง์๋ Docker test target๊ณผ ๋ณ๊ฐ์ธ Node.js ํ๊ท ํ ์คํธ๋ ์์ต๋๋ค. Node.js๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ญ์์ค.
node --test internal/webui/*_test.cjs
Windows ์์ ๊ณต๊ฐ ๊ท์น
Windows์์๋ ํธ์ง๊ณผ ์ ์ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค. Windows ๋ค์ดํฐ๋ธ go test, go test -c, ์์ฑ๋ ํ
์คํธ ์คํ ํ์ผ ๋๋ ์ด๋ฅผ ํธ์ถํ๋ make test ๋ฑ์ helper๋ฅผ ์คํํ์ง ๋ง์ญ์์ค. ๋ํํ ๋ฐฉํ๋ฒฝยท๋ณด์ยท๊ถํ ์์น ์ฐฝ์ด ํ์ํ ๋ช
๋ น๋ ์คํํ์ง ์์ต๋๋ค. ์คํ ๊ฒ์ฆ์๋ ์์ Linux Docker test target์ด๋ ๊ธฐ์กด์ ๋น๋ํํ Linux ํธ์คํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ ๋ค ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ ์ ๊ฒ์ฌ์ ์คํ ๊ฒ์ฆ ์ฌ๋ถ๋ฅผ ๊ตฌ๋ถํ์ฌ ๋ณด๊ณ ํฉ๋๋ค.
๋ฐํ์ ์ด๋ฏธ์ง๋ CGO_ENABLED=0์ผ๋ก ๋น๋ํฉ๋๋ค. ์
ธ ์คํฌ๋ฆฝํธ, Dockerfile๊ณผ Makefile์ .gitattributes๋ฅผ ํตํด LF ์ค๋ฐ๊ฟ์ ์ ์งํฉ๋๋ค. ๋ฐํ์ ์ด๋ฏธ์ง๋ ๋น๋ํ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์คํ ์ ํธ๋ฆฌํฐ๋ฅผ ํฌํจํ๋ฉฐ Go๋ Node.js ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ํฌํจํ์ง ์์ต๋๋ค.
๋ฌธ์ ๊ด๋ฆฌ
ํ๋ก์ ํธยท๊ตฌํ ๋ฌธ์๋ ์ํค์์ ๊ด๋ฆฌํฉ๋๋ค. kpl-v3 ์์ค ์ ์ฅ์์๋ ์คํ ์ฝ๋ยท์์ ยท๊ฒ์ฆ ์
๋ ฅ์ ๋ก๋๋ค. ์์ด๊ฐ ๊ธฐ๋ณธ์ด๋ฉฐ ๋ณ๊ฒฝํ ์๋ด๋ ๋์ํ๋ -KO ํ์ด์ง์๋ ๋ฐ์ํฉ๋๋ค. ๋ฌธ์ ์ ๋ชฉ๊ณผ UI ์กฐ์ ์ด๋ฆ์ ๊ตฌ๋ถํ๊ณ ์ค์ ์์ด UI ํ์๋ฅผ ์ ์งํฉ๋๋ค.
๊ณตํต ๋ฌธ์ ๊ด๋ฆฌ ๊ธฐ์ค์ ์ํค ๋ฒ์ยท๋ถํ ยท์ธ์ด ์ ๊ท์น์ ๋ฐ๋ฅด๊ณ ๋ฌธ์ ์๋ด๋ฅผ ์ต์ ์ผ๋ก ์ ์งํ์ญ์์ค. v3์์ experiments๋ ์คํยท๋ณต๊ตฌ, results๋ ์ ์ฅ ํ์ผ, monitoring์ ์ด์ ์งํยท๋ก๊ทธ, api๋ HTTPยทSSE ๊ณ์ฝ์ ๋ด๋นํฉ๋๋ค. experiment-metrics์ bandwidth๋ ์์, visualization์ ๊ทธ๋ฆผ ์กฐ์์ ๊ธฐ์ค์
๋๋ค. ์ ์๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๊ธฐ์ค ๋ฌธ์๋ก ์ฐ๊ฒฐํฉ๋๋ค.
v2 ์๋ฃ๊ฐ ๋๋ํ ์์ ๋ ๋ถ์ ์์ค ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ด ํ์ธํฉ๋๋ค.
python3 scripts/audit-v2-analysis.py --v2 ../v2
์ด ๊ฒ์ฌ๋ v2 ๋ถ์ ํ๋ยท์์ค hash์ ๋ณ๊ฒฝ์ ์ฐพ์ผ๋ฉฐ ์์น ๋๋ฑ์ฑ์ด๋ ํ์ฌ runtime ๊ฒ์ฆ์ ์ฆ๋ช ํ์ง ์์ต๋๋ค. ์ํํ ๊ฒ์ฆ๊ณผ ๋ณด์กด๋ ๊ณผ๊ฑฐ ๊ธฐ๋ก์ ๊ตฌ๋ถํ๊ณ , ๋ฌธ์ ์์ ๋ ์ค๋ฅ ์์ ์ผ์ง๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.