- ํ๋ก์ ํธ ์๊ฐ
- ์ด๋ฒค์ ์ค 5์ธ
- ๊ธฐ์ ์คํ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ฃผ์ ๊ธฐ๋ฅ
- ์ํคํ ์ฒ
- ๊ธฐ์ ์ ๋์
Web3.0 ํ๊ฒฝ์ ํฌ๋ฆฌ์์ดํฐ ์ด์ฝ๋
ธ๋ฏธ๋ฅผ ์คํํ๋ค
๊ฐ๋ฐ ๊ธฐ๊ฐ : 2023.02.27 ~ 2023.04.07(7์ฃผ)
๐ก ๊น๋ฑ๊น๋ฑ ํ๋ก์ ํธ๋ ์์ ์ฐฝ์์์ ์ ์๊ถ๊ณผ ์ ๋นํ ์์ต์ ๋ณด์ฅํ๋ "๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ ์์ ์คํธ๋ฆฌ๋ฐ ์๋๋ก์ด๋ ์๋น์ค"์
๋๋ค.
2022๋
๊ธฐ์ค ์ธ๊ณ 120์กฐ5000์ ๊ท๋ชจ์ธ ๋์งํธ ์ฝํ
์ธ ์์ฅ์ ๊ธ์ฑ์ฅ์ ๋ฐํด, "์ฐฝ์์๋ค์๊ฒ ๋ถํฉ๋ฆฌํ ์์ต ๋ฐฐ๋ถ ๊ตฌ์กฐ๊ฐ ํ์ฑ๋์ด์๋ค๋ ๋ฌธ์ "๋ฅผ ์ธ์ํ์ต๋๋ค.
์ด์ "๋ธ๋ก์ฒด์ธ์ ๋ฌด๊ฒฐ์ฑ, ๋ณด์์ฑ, ํฌ๋ช
์ฑ, ํ์ค์ํ ํน์ฑ์ ํ์ฉ"ํ์ฌ "์์ ์ฐฝ์์๊ฐ ์ ๋นํ ์ง์ ์ฌ์ฐ๊ถ์ ๋ณด์ฅ"๋ฐ๋ ์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ๊ธฐํํ์ต๋๋ค.
์ค์ธ๋ฆผ | ํ๋ฏผ๊ธฐ | ์กฐ๋ฏผ์ง |
---|---|---|
> | ||
@serim53 | @hong0708 | @whalswl1126 |
์ด์์ผ | ๊ถ์ฉ์ค |
---|---|
@WonilLee211 | @ubermen5che |
์นด์นด์ค ๋ก๊ทธ์ธ์ ํตํด ํ์๊ฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ต์ ์ ์กฐํ์ ๊ธฐ์ค ์ ๋ก๋๋ ์์ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์ํ ์กฐ๊ฑด์ผ๋ก ์์, ์ฐฝ์์๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
์์๊ณผ ์ปค๋ฒ๋ฅผ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
์์ฒด ๋ฐํํ KAT์ฝ์ธ ์์ก ์กฐํ, ์ถฉ์ , ์ ์ก, ๊ฑฐ๋ ๋ด์ญ ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
์ถฉ์ ๋ฅผ ํ์ฉํ์ฌ ์ค์ ์ฝ์ธ์ ๊ตฌ๋งคํ ์ ์์ต๋๋ค.
๋ง์ผํ์ด์ง์์ ์ ์ ๊ฐ ํ๋งค์ค์ด๊ฑฐ๋ ์๋ฃ๋ NFT ๊ฑฐ๋ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
NFT์ ์์ธ ์กฐํ๋ ๋ธ๋ก์ฒด์ธ์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์ถ๊ฐ๋ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
KAT ์ฝ์ธ์ผ๋ก ๊ฒฐ์ ํ์ฌ NFT๋ฅผ ๊ฒฐ์ ํจ์ผ๋ก์จ ์์ ๊ถ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ณด์ ํ NFT๋ฅผ ๋ง์ดํ์ด์ง์์ ์กฐํํ ์ ์์ต๋๋ค.
ํ๋กํ์ ๋ณด์ ํ NFT ๋ชฉ๋ก, ์์ ํ๋ ์ด ํ์คํ ๋ฆฌ, ๊ตฌ๋ , ํ๋ก์ฐ/ํ๋ก์ ๋ชฉ๋ก ์กฐํ, ์ ๋ก๋ํ ์์์ ๋ณผ ์ ์์ต๋๋ค.
๊ตฌ๋ ์ ํตํด ํด๋น ์ ์ ์๊ฒ ์ง์ ์ฝ์ธ์ ์ ์กํ๊ฒ ๋ฉ๋๋ค.
๊ตฌ๋ ํ ๊ฐ์์ ๋ํ ๋ชจ๋ ์์ ์ ์ฒด๋ฃ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ ๋ก๋ํ ์์์ ๋ฐ๋ ค, ์น์ธ, ๋๊ธฐ์ค ์ํ๋ก ํ์๋๋ฉฐ ์น์ธ ํ ํด๋น ์์์ ๋ํ NFT๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ฐฑ์๋ API ์๋ฒ
๋ Spring boot๋ฅผ ์ด์ฉํ์๊ณ DB
๋ MariaDB, ์กฐํ๊ฐ ๋น๋ฒํ ๋ฐ์ดํฐ๋ Redis์ ์ ์ฅํ์ต๋๋ค.
Redis๋ฅผ ์ฌ์ฉํ ์ด์
๋ ์์ฒญ ์ ๋งค๋ฒ ๋ฐ๋ณต๋๋ JWT ์ธ์ฆ ๊ณผ์ ์์ cacheํ ํ์ฌ ๋ฐ๋ณต๋๋ ์กฐํ ์์ฒญ์ ์ค์ด๊ณ ์ ํจ์
๋๋ค.
์๋ฒ๋ ๋ฉํฐ ๋ชจ๋
๋ก API, Batch, Core ๋ชจ๋๋ก ๊ตฌ๋ถํ์ฌ ๊ตฌ์ฑํ์ต๋๋ค. ์๋น์ค ๊ธฐํ ์ batch๊ฐ ํ์์ ์ด์์ผ๋ฉฐ, ๊ณต์ฉ ํด๋์ค๋ Core ๋ชจ๋์ ๋์ด ๊ณต์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์์ฑ์ ๋ํ์ต๋๋ค.
์ด์ ํ๊ฒฝ์ CI/CD๋ฅผ ์ํด ์ฌ์ฉํ Jenkins๋ฅผ Docker๋ก ๊ด๋ฆฌ
ํ๋ฉฐ, DooD ๊ธฐ์
์ ์ ์ฉํ์ฌ ํธ์คํธ ์์คํ
์์ ์๋ฒ ์ปจํ
์ด๋๋ฅผ buildํ๋๋ก ์ค์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ํธ์คํธ ํ๊ฒฝ์ Docker ์ฑ๋ฅ๊ณผ ๋ณด์์ฑ์ ๋ํ์ต๋๋ค.
๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ์คํ ์์ ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด test code๋ฅผ ํตํด ์๋น์ค ๊ฒ์ฆํ์ต๋๋ค.
NFT, ์์, Coin ๋ณด์ ๋ ๋ฑ ์๋ณ์กฐ๊ฐ ๋ถํ๋๋ ์ ๋ณด๋ง์ ๋ธ๋ก์ฒด์ธ์ ์ ์ฅ
ํ๋๋ก struct๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค. ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ๋ฐฐํฌ๋ ์ปจํธ๋ํธ์ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ฒ์ ์๋๋ก์ด๋์์ wrapping๋ class๋ฅผ Web3j
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฌ์ฉํ์ฌ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ํต์ ํ์ต๋๋ค.
MFCCํน์ง ์ถ์ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๊ฐ ์์
์ ๋ํ MFCC(Mel-Frequency Cepstral Coefficient)ํน์ง ๋ฒกํฐ๋ฅผ ์ถ์ถํ๊ณ , ์์ ์๊ณ์ด ๋ฐ์ดํฐ์ ๋ํ ํน์ง ๋ฒกํฐ๋ฅผ DTW(Dynamic Time Warping)์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ๋ ์์๊ฐ ์ ์ฌ๋๋ฅผ ์ธก์ ํ์์ต๋๋ค.
DTW์๊ณ ๋ฆฌ์ฆ์ ๋์ ๊ณํ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋๋ฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ๊ตฌํํ์ฌ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณผ ์ ์์ด์ ์ ์ตํ ๊ฒฝํ์ด ๋์์ต๋๋ค.
์์
์
๋ก๋์ ์ ์ฌ๋ ๊ฒ์ฆ๊ณผ์ ์์ ๋ชจ๋ ์์
์ ๋ํด ์ ์ฌ๋๋ฅผ ๋น๊ต๋ฅผ ํด์ผํ๊ธฐ๋๋ฌธ์ ์ค๋์๊ฐ์ด ์์๋์ด ์๋ต ์ง์ฐ์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ด ์์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ฌ๋ ๊ฒ์ฌ ์ํ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋กํ๊ณ CompletableFuture ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์ ์ฌ๋ ๊ฒ์ฌ ๋ก์ง์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๊ณ , ์ํ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๋ ์์ผ๋ก ๊ตฌํํ์ฌ ์๋ต์ง์ฐ์ ์ต์ํ ํ์์ต๋๋ค.
1. ํ์ด์ง๋ค์ด์
์ ์ฉ์ ๋ฐ๋ผ `offset ์๊ฐ ์ปค์ง์๋ก ์กฐํ ์ฑ๋ฅ์ด ์ ํ๋๋ ๋ฌธ์ `๊ฐ ์์์ต๋๋ค.
- 500๋ง ๊ฐ ์์ดํ
์ ๋ฐํ์ผ๋ก ํ
์คํธ ์ ์ต๋ 16์ด์์ ์ต์ 6์ด ์ด์์ ์๋ต์๊ฐ์ด ์์๋์ต๋๋ค.
- `์ปค๋ฒ๋ง ์ธ๋ฑ์ค`๋ฅผ ํตํด ํด๋ฌ์คํฐ ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌ๋๋ ํ๋๋ก๋ง ๊ตฌ์ฑ๋ ์ฟผ๋ฆฌ๋ก ์กฐํํ ๊ฒฐ๊ณผ๋ฅผ ์๋ธ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ์ฌ ํ์ด์ง๋ค์ด์
์ offset์ ๋์ฒดํ์ต๋๋ค.
2. ์ฟผ๋ฆฌ ์กฐ๊ฑด์ด ๋์ ์ผ๋ก ๋ณํ์์ผ๋ฉฐ ์ฌ๋ฌ ์ฐ๊ด๊ด๊ณ ์ ๋ณด๊ฐ ์ถ๊ฐ๋ ๋ชฉ๋ก ์กฐํ๊ฐ ์๊ตฌ๋์๊ธฐ์ `N+1 ๋ฌธ์ `๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
- ์ด์ JPQL๋ก ์์ฑํ๋ ๋ชฉ๋ก ์กฐํ ๋ฉ์๋๋ฅผ Query DSL๋ก ๋ณ๊ฒฝํ์ฌ ์กฐํ ์กฐ๊ฑด์ ๋์ ์ผ๋ก ์
๋ ฅํ์ต๋๋ค. query DSL์ left join ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ fetch ์ ๋ต์ผ๋ก N+1๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ํ ๊ฒฐ์ ํ ์ฝ์ธ์ผ๋ก ํ์ ํ๋ ๊ธฐ๋ฅ์ ๊ณ ๊ฐ์ ์ฌ์ฐ๊ณผ ๊ด๋ จ๋ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์์ฒญ์ ์ํ ์คํ๋๋ฉด ์๋๋ ์๋น์ค์
๋๋ค.
์ด์ ๋ฐ๋ผ ๊ฒฐ์ ์ ๋ณด์ ์์ฒญ์ ์ ๋ณด ๋ฑ์ ์ ํจ์ฑ๊ณผ ๋์กฐ๋ฅผ ํตํด 5 ๋จ๊ณ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ด์ค ์ง๋ถ๊ณผ ๊ฒฐ์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์์ต๋๋ค.
ํ์ง๋ง, Boot Pay์ blockchain, ๋ ๋
๋ฆฝ์ ์ธ ์์คํ
๊ณผ์ ํธ๋์ญ์
์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ACID๋ฅผ ๋ณด์ฅํ์ง ๋ชปํ๋ค๋ ์์ฌ์์ด ๋จ์์ต๋๋ค.