JWT Cache Cost Preview KO - teamswyg/laya-tools GitHub Wiki

JWT ์บ์‹œ ๋น„์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

์ž‘์€ ํžŒํŠธ ๋ชจ๋ธ์ด ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์ „์—, ๊ฐ™์€ ์ผ์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋น„์šฉ๋ถ€ํ„ฐ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ณ„๋„ Go ์‹คํ–‰์—์„œ๋Š” ์„œ๋ช… ํ™•์ธ๊ณผ ํ† ํฐ ํ•ด์„์„ ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ์ • ์ˆœ์„œ ๊ฒ€์ƒ‰์ด ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธยท์ƒˆ ํ•™์ŠตยทGPUยท์œ ๋ฃŒ ํ˜ธ์ถœ์€ 0ํšŒ์ž…๋‹ˆ๋‹ค.

ํ™•์ธํ•œ ๊ฒƒ

์›๋ž˜ ํŒ์ • 160๊ฐœ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋งค๋ฒˆ ํŒŒ์‹ฑํ•˜๋Š” ๊ฒฝ๋กœ์™€ ์บ์‹œ ๊ฒฝ๋กœ๋ฅผ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. 160์Œ ๋ชจ๋‘ ์ˆ˜๋ฝ ์—ฌ๋ถ€, ์˜ค๋ฅ˜ ์ข…๋ฅ˜, claims ์ง€๋ฌธ์ด ์„œ๋กœ ๊ฐ™๊ณ  ์ด์ „ ์›๋ณธ ๊ฒฐ๊ณผ์™€๋„ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์ด์–ด ๊ฐ™์€ ์š”์ฒญ 4๊ฐœ์— ๋„ค ๋Œ€์กฐ๊ตฐ์„ ์ ์šฉํ•ด 3ํšŒ ๋ฐ˜๋ณตํ–ˆ๊ณ , 48๊ฐœ ํƒ์ƒ‰์ด ๋ชจ๋‘ ์™„๋ฃŒ๋์Šต๋‹ˆ๋‹ค.

๋Œ€์กฐ๊ตฐ ์š”์ฒญ 4๊ฐœ ร— 3ํšŒ ํ•ฉ๊ณ„
๊ณ ์ • ์†Œ์Šค ์ˆœ์„œ, ์บ์‹œ ์—†์Œ 5.141583 ms
๊ณ ์ • ์†Œ์Šค ์ˆœ์„œ, ์บ์‹œ ์žˆ์Œ 2.711623 ms
๋ฏธ๋ฆฌ ์ •ํ•œ ํ›„๋ณด ์šฐ์„ , ์บ์‹œ ์—†์Œ 2.428458 ms
๋ฏธ๋ฆฌ ์ •ํ•œ ํ›„๋ณด ์šฐ์„ , ์บ์‹œ ์žˆ์Œ 2.593877 ms

๊ณ ์ • ์ˆœ์„œ์˜ ํ•ฉ๊ณ„๋Š” ์บ์‹œ๋กœ ์•ฝ 1.90๋ฐฐ ๋นจ๋ž์Šต๋‹ˆ๋‹ค. ์ฒซ ํ›„๋ณด๊ฐ€ ๋งž๋Š” ๋Œ€์กฐ๊ตฐ์—์„œ๋Š” ์บ์‹œ๊ฐ€ ์•ฝ 6.8% ๋А๋ ธ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์ •ํ•œ ์ฒซ ํ›„๋ณด [4, 5, 2, 0]์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ „์— ์š”์ฒญ ๊ณ„์•ฝ์—์„œ ์ •ํ•œ ๊ฐ’์ด๋ฉฐ ๋ชจ๋ธ์˜ ์˜ˆ์ธก ์„ฑ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์บ์‹œ๊ฐ€ ํ•˜๋Š” ์ผ

์ตœ๋Œ€ 5์นธ ๋ฐฐ์—ด์„ ์š”์ฒญยท๋Œ€์กฐ๊ตฐยท๋ฐ˜๋ณต๋งˆ๋‹ค ๋น„์›๋‹ˆ๋‹ค. ํ† ํฐ ์ „์ฒดยท๊ณต๊ฐœ ํ‚คยท์„œ๋ช… ๋ฐฉ์‹ยท๋””์ฝ”๋”ยท์†Œ์Šค๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์ธ์ฆ๋œ claims๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. audience ๋ฐฐ์—ด๊ณผ ์‹œ๊ฐ„ ๊ฐ์ฒด๋Š” ๊นŠ๊ฒŒ ๋ณต์‚ฌํ•˜๊ณ , ํ›„๋ณด๋งˆ๋‹ค ์ƒˆ ์ •์ฑ… ๊ฒ€์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… Token.Valid๋‚˜ ์ •์ฑ… ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋ฐ– ์˜ค๋ฅ˜ยท๋ณ€ํ˜•ยท๊ธฐํ•œ ์ดˆ๊ณผ๋Š” ๋ฏธํ™•์ธ์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ํƒ์ƒ‰์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์ • ์ˆœ์„œ์—์„œ๋Š” ์š”์ฒญ 4๊ฐœ๋‹น ํŒŒ์‹ฑ 43ํšŒ๋ฅผ ์ธ์ฆ ํŒŒ์‹ฑ 20ํšŒ์™€ ์ •์ฑ… ๊ฒ€์‚ฌ 43ํšŒ๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค. ์ฒซ ํ›„๋ณด๊ฐ€ ๋งž์œผ๋ฉด ํŒŒ์‹ฑ์€ ์—ฌ์ „ํžˆ 20ํšŒ์ด๋ฉฐ ์บ์‹œ ์ ์ค‘์€ 0ํšŒ๋ผ ์ถ”๊ฐ€ ๋น„์šฉ๋งŒ ์ƒ๊น๋‹ˆ๋‹ค.

ํ•ด์„์˜ ๋ฒ”์œ„

3ํšŒ ๋ชจ๋‘ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์—์„œ 160์Œ ๋น„๊ต ๋’ค ์‹คํ–‰ํ•œ ์ค€๋น„ ์ƒํƒœ ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ ์ƒˆ ์ž‘์—… 48๊ฐœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. JWT ์ „์ฒด ๊ณ„๋ณด์˜ ์ด๋ฏธ ๋…ธ์ถœ๋œ development_validation ์š”์ฒญ 4๊ฐœ์ด๋ฉฐ, 2,400๊ฐœ ํ‰๊ฐ€๋‚˜ ์ƒˆ ํ•™์Šต ์ž๋ฃŒ ํŽธ์ž…์œผ๋กœ ์„ธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ „์ฒด ์ตœ๋Œ€ RSS๋Š” 14,532,608 B, ์•ฝ 13.86 MiB์ž…๋‹ˆ๋‹ค. ๋ชจ๋“œ๋ณ„ยท๋ชจ๋ธ๋ณ„ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ธก์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ „์ฒด CPU๋Š” user 29.161 ms + system 8.955 ms, main์€ 23.256416 ms์˜€์Šต๋‹ˆ๋‹ค. ์ž์‹ ์‹œ์ž‘๋ถ€ํ„ฐ ์ž…์ถœ๋ ฅยท๋Œ€๊ธฐ ์ •๋ฆฌ๊นŒ์ง€๋Š” 608.614250 ms๋กœ, ์ˆœ์ˆ˜ ์‹œ์ž‘ ๋น„์šฉ์ด๋‚˜ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. main์€ import ์ดˆ๊ธฐํ™”์™€ ์ถœ๋ ฅ ์ง๋ ฌํ™”ยท์“ฐ๊ธฐ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

์บ์‹œ ๋’ค ์ˆœ์„œ ๋ณ€๊ฒฝ์˜ ์ด๋“์€ ๋ฐ˜๋ณต๋งˆ๋‹ค ๋‹ฌ๋ž๊ณ  ํ•œ ๋ฒˆ์€ ๋А๋ ธ์Šต๋‹ˆ๋‹ค. ํŠน์ง• ์ถ”์ถœ๊ณผ ์ถ”๋ก ๊นŒ์ง€ ๊ฐ๋‹นํ•  ๋ชจ๋ธ ์˜ˆ์‚ฐ์ด๋‚˜ Codex ์ ˆ๊ฐ์€ ์•„์ง ์ž…์ฆํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์—๋Š” ๊ฐ™์€ ๊ฒ€์‚ฌ ์กฐ๊ฑด์—์„œ BM25ยทJaccard ๊ฐ™์€ ์ €๋ ดํ•œ ๋น„ํ•™์Šต ๊ฒ€์ƒ‰์„ ๋จผ์ € ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ง์ ‘ ํ™•์ธํ•˜๊ธฐ

Go๋ฅผ ์ค€๋น„ํ•œ ๋’ค ์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์ €์žฅ๋œ ์ฆ๊ฑฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ JWT APIยท๋ชจ๋ธยทํ•™์Šต์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

go run ./experiments/short-claim/next-cohort-jwt-audit/cost-replay

๊ณ ์ • ์†Œ์Šค์™€ ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ•์—๋Š” ๋ณ„๋„์˜ ์ƒˆ ๋„ค์ดํ‹ฐ๋ธŒ ์‹คํ–‰ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์‹คํ–‰์€ ์ €์žฅ ๊ฒฐ๊ณผ ์žฌ์ƒ๊ณผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ž์ฒด ์ฝ”๋“œยท๊ฐ€์ƒ ์ž…๋ ฅ์€ Apache-2.0, ๋ณต์‚ฌํ•œ JWT ์ฝ”๋“œ๋Š” MIT์ด๋ฉฐ ์› ๊ณ ์ง€๋ฅผ ๋ณด์กดํ–ˆ์Šต๋‹ˆ๋‹ค. SDK ๊ณ ์ง€๋ฅผ ํ•จ๊ป˜ ์ฝ์–ด ์ฃผ์„ธ์š”.

๊ฒŒ์‹œ ๊ทผ๊ฑฐ๋Š” ํ™•์ธ ํ›„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค: PR ยท CI ยท Hugging Face.