์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ค์ํ ๊ธฐ๋ณธ ํค ์์ฑ ์ ๋ต์ ์ฑ๋ฅ์ ํ ์คํธํ๊ณ ๋น๊ตํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ํ ์คํธ๋๋ ์ ๋ต์๋ ์๋ ์ฆ๊ฐ, ULID ๋ฐ UUIDv7์ด ํฌํจ๋ฉ๋๋ค. ํนํ, ๋์ ๋ถํ ์กฐ๊ฑด์์ ๊ฐ ๋ฐฉ๋ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ํ์ธํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค.
ํ๋ก์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์์ต๋๋ค:
.
โโโ README.md
โโโ directory_structure.txt # ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋์ดํ ํ
์คํธ ํ์ผ
โโโ k6_test.js # K6 ๋ถํ ํ
์คํธ ์คํฌ๋ฆฝํธ
โโโ nest-cli.json # NestJS CLI ๊ตฌ์ฑ ํ์ผ
โโโ package-lock.json # npm ์ข
์์ฑ์ ๋ํ ์ ๊ธ ํ์ผ
โโโ package.json # ํ๋ก์ ํธ ์ข
์์ฑ๊ณผ ์คํฌ๋ฆฝํธ
โโโ src/ # TypeScript ์์ค ํ์ผ
โย ย โโโ app.controller.spec.ts
โย ย โโโ app.controller.ts
โย ย โโโ app.module.ts
โย ย โโโ app.service.ts
โย ย โโโ config/
โย ย โย ย โโโ database.config.ts # ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ ํ์ผ
โย ย โโโ entities/
โย ย โย ย โโโ auto-increment.entity.ts # ์๋ ์ฆ๊ฐ ๊ธฐ๋ณธ ํค์ ๋ํ ์ํฐํฐ
โย ย โย ย โโโ ulid.entity.ts # ULID ๊ธฐ๋ณธ ํค์ ๋ํ ์ํฐํฐ
โย ย โย ย โโโ uuidv7.entity.ts # UUIDv7 ๊ธฐ๋ณธ ํค์ ๋ํ ์ํฐํฐ
โย ย โโโ main.ts # ์ ํ๋ฆฌ์ผ์ด์
์ง์
์
โย ย โโโ speed/
โย ย โโโ speed.controller.ts # ์ฑ๋ฅ ํ
์คํธ API๋ฅผ ์ํ ์ปจํธ๋กค๋ฌ
โย ย โโโ speed.module.ts # ์ฑ๋ฅ ํ
์คํธ ๋ชจ๋
โย ย โโโ speed.service.ts # ์ฑ๋ฅ ํ
์คํธ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์๋น์ค
โโโ test/ # ์๋ ํฌ ์๋ ํ
์คํธ๋ฅผ ์ํ ํ
์คํธ ํ์ผ
โย ย โโโ app.e2e-spec.ts
โย ย โโโ jest-e2e.json
โโโ tsconfig.build.json # ๋น๋๋ฅผ ์ํ TypeScript ๊ตฌ์ฑ ํ์ผ
โโโ tsconfig.json # TypeScript ๊ตฌ์ฑ ํ์ผ
์ด ํ๋ก์ ํธ๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์ ์ธ ๊ฐ์ง ๊ธฐ๋ณธ ํค ์์ฑ ์ ๋ต์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ๋น๊ตํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค:
- ์๋ ์ฆ๊ฐ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฑ๋ ์์ฐจ์ ์ธ ์ ์ ๊ธฐ๋ฐ ๊ธฐ๋ณธ ํค.
- ULID: ๊ณ ์ ์ฑ๊ณผ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ ์ฌ์ ์์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅํ ์๋ณ์.
- UUIDv7: ๋ฌด์์์ฑ๊ณผ ์๊ฐ ์์๋ฅผ ๊ฒฐํฉํ ์๊ฐ ๊ธฐ๋ฐ UUID.
์ด ํ๋ก์ ํธ์๋ k6_test.js
๋ผ๋ ๋ถํ ํ
์คํธ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด K6๋ฅผ ์ฌ์ฉํด ๋์ ๋ถํ ์กฐ๊ฑด์ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค. ํ
์คํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์งํ๋ฅผ ์ธก์ ํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค:
- ํ๊ท ์๋ต ์๊ฐ: ์ฝ์ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ๊ท ์ ์ผ๋ก ์์๋๋ ์๊ฐ.
- ์ต๋ ์๋ต ์๊ฐ: ์ฝ์ ์์ ์ค ๊ธฐ๋ก๋ ๊ฐ์ฅ ๊ธด ์๊ฐ.
- ์ ์ฒด ์ฒ๋ฆฌ๋: ์ด๋น ์ฒ๋ฆฌ๋ ์์ ์ ์ด ์.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ :
- MySQL์ด ์คํ ์ค์ด๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์.
src/config/database.config.ts
ํ์ผ์ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- MySQL์ด ์คํ ์ค์ด๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์.
-
์ข ์์ฑ ์ค์น:
npm install
-
์ ํ๋ฆฌ์ผ์ด์ ์คํ:
npm run start
-
๋ถํ ํ ์คํธ ์คํ:
k6 run k6_test.js
๋ถํ ํ ์คํธ๋ฅผ ์คํํ ํ, ๊ฒฐ๊ณผ๋ ์ฝ์์ ํ์๋ฉ๋๋ค. ํ ์คํธ์ ์ฃผ์ ์งํ๋ ๋์ ๋ถํ ์กฐ๊ฑด์์ ์ด๋ค ๊ธฐ๋ณธ ํค ์ ๋ต์ด ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข์์ง๋ฅผ ํ๋จํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ถํ ํ ์คํธ์ ๊ฒฐ๊ณผ:
์งํ | ์๋ ์ฆ๊ฐ | ULID | UUIDv7 |
---|---|---|---|
ํ๊ท ์๋ต ์๊ฐ | 741.44 ยตs | 1.05 ms | 813.42 ยตs |
์ต๋ ์๋ต ์๊ฐ | 66.86 ms | 72.76 ms | 48.97 ms |
์ฒ๋ฆฌ๋ | ๋์ | ์ค๊ฐ | ๋์ |
์ฑ๋ฅ ํ ์คํธ๋ฅผ ๋ฐํ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๋ก ์ ๋์ถํ ์ ์์์ต๋๋ค.:
- ์๋ ์ฆ๊ฐ: ๊ฐ์ฅ ์ผ๊ด๋๊ณ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก, ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์๋๊ฐ ์ค์ํ ์๋๋ฆฌ์ค์ ์ด์์ ์ ๋๋ค.
- ULID: ๊ณ ์ ์ฑ๊ณผ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ์ง๋ง, ํนํ ๋ถํ๊ฐ ๋์ ์ํฉ์์ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฒช์ ์ ์์ต๋๋ค.
- UUIDv7: ์๊ฐ ๊ธฐ๋ฐ ๊ณ ์ ์๋ณ์์ ํ์์ฑ๊ณผ ์ฑ๋ฅ ๊ฐ์ ๊ท ํ์ ์ ์ ์งํ๋ฉฐ, ์๊ฐ ์์๊ฐ ์ค์ํ ์๋๋ฆฌ์ค์์ ์ฐ์ํ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.