- ๊ฐ(ๅฎถ)์์ด : KYC ์ธ์ฆ์ ํ์ฉํ ๋ฃธ๋ฉ์ดํธ ๋งค์นญ ์๋น์ค ๊ฐ๋ฐ
- ๊ธฐ๊ฐ : 2023. 09 ~ 12
- ์ฐธ์ฌ ์ธ์ : 3๋ช
- ๊ธฐ์ ์คํ : Spring Boot, JPA, MySQL
์์ดํ์ฐ์ค๋ ๊ณต์ฉํ๋ ๊ณต๊ฐ์์ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ด ๋ณ๋๋ก ๋ถ๋ฆฌ๋์ด ์๋ ์ฃผ๊ฑฐํํ๋ฅผ ์๋ฏธํฉ๋๋ค.
์์ดํ์ฐ์ค๋ ์์ทจ์๋ ๋ฌ๋ฆฌ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. ์ฆ, ์์ ๊ณผ ๋ชจ๋ฅด๋ ์ฌ๋๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๊ณต๊ฐ์ด ๋ ๋ง๊ธฐ ๋๋ฌธ์ ๋ฃธ๋ฉ์ดํธ์ ์ฑ๊ฒฉ๊ณผ ์ทจํฅ, ์ํํจํด์ ๋ง์ ์ํฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ฃผ๊ฑฐ ๊ณต์ ๋ฅผ ํ๊ณ ์ ํ๋ ์ฌ๋์ด ์์ ์ ๊ฐ์น๊ด๊ณผ ๋ฑ ๋ง๋ ๋ฃธ๋ฉ์ดํธ๋ฅผ ๋งค์ฐ ๊ตฌํ๊ธฐ ์ด๋ ต๋ค๋ ์๋ฏธ์ ๋๋ค.
๋ฃธ๋ฉ์ดํธ๋ฅผ ๊ตฌํ๋ ๊ฒ๋ ๋ฌธ์ ์ด์ง๋ง, ํ์ฌ ๋ฃธ๋ฉ์ดํธ๋ฅผ ๊ตฌํ ์ ์๋ ์ฑ์์๋ ํฐ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค. ๋ฐ๋ก ์ธ์ฆ์ ์ทจ์ฝํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋๋ฌธ์ ์ฃผ๊ฑฐ์ง๊ฐ ๋ง์ ์ฌ๋๋ค์๊ฒ ๋ ธ์ถ๋๊ฑฐ๋ ์ฑ๋ณ ๊ด๊ณ์์ด ๊ฒ์๋ฌผ์ ์ด๋ํ ์ ์๋ ์์คํ ์ ๋ฒ์ฃ๋ฅผ ์ผ๊ธฐํ๊ณ ์์์ต๋๋ค.
์ด๋ฐ ๋ฌธ์ ์ ๊ณผ ๋จ์ ์ ๋ณด์ํ๊ณ ์ ๋ฃธ๋ฉ์ดํธ ์ฒดํฌ๋ฆฌ์คํธ์ KYC ์ธ์ฆ ์๋น์ค๋ฅผ ์ ์ํ์ฌ ์์ ํ ๋ฃธ๋ฉ์ดํธ ๋งค์นญ์๋น์ค๋ฅผ ์ ์ํ์ต๋๋ค. KYC๋ Know Your Customer์ ์ฝ์๋ก ๋ค๋ฅธ ์ฌ๋๊ณผ ์ฑ์ผ๋ก ์ํตํ๊ธฐ ์ ์ ์์ ์ ๋ํ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ์ผํ๋ค๋ ์๋ฏธ์ ๋๋ค.
Front
- Users๋ Mobile์ ํตํด Back Server์ ์ ๊ทผํฉ๋๋ค.
- Mobile์ ํฌ๋ก์ค ํ๋ซํผ์ธ Flutter๋ก ์ ์์ด ๋์ด IOS, Android ๋ ๋ค ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค.
- Front ์ฝ๋๋ (Front Repository)[https://github.com/gaseng/Front]๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์
Back
- ๊ฐ๋ฐ์๋ค์ Git์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๊ณต์ ํฉ๋๋ค.
- Git Actions์ CI/CD๊ฐ ๊ตฌ์ถ๋์ด ์์ด, main branch๋ก push๋๋ฉด ์๋์ผ๋ก
Linux server
์ ์ ์ฉ๋ฉ๋๋ค. - Docker๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ฌ Linux server์์ ์ด๋ฏธ์ง๋ฅผ ์คํ์ํค๋ ๊ตฌ์กฐ์ ๋๋ค.
- Linux server๋ AWS์ t2.medium์ ์ฌ์ฉํ์ต๋๋ค.
DB
- Web hosting์ ์ํด Firebase๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋
S3
, JWT์ฌ์ฉ ๋ฑ ์ธ์ฆ ์ ์ฐจ์ ๊ดํRedis
, ๊ฐ์ข ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋Amazon RDS
๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Others
- Blockchain์ ํ ํฐ์ ๊ตฌํํ๊ธฐ ์ํด Ethereum์ erc20์ ํ์ฉํ์์ต๋๋ค.
- Solidity ์ธ์ด๋ฅผ ์ฌ์ฉํ์์ผ๋ฉฐ KYC์ ๊ด๋ จ๋ ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฐฐ์น๋์ด ์์ต๋๋ค.
- KYC ์๋ฒ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ์ฌ Docker๋ฅผ ํ์ฉํ์ฌ Grafana๋ฅผ ๊ตฌ์ถํ์์ต๋๋ค.
- Contract๋ Sepolia Ethereum(Test network)์ ๋ฐฐํฌ๋์ด ์๋ ์ํ์ ๋๋ค.
Transaction: 0xD69297b898f3540D0FDa0BE69F69c54E65043A89
์ฃผ์๊ธฐ๋ฅ | ์ธ๋ถ๊ธฐ๋ฅ | v0.3 (10/19, ๋ชฉ) | v0.5 (10/26, ๋ชฉ) | v0.6 (11/02, ๋ชฉ) | v0.9 (11/09, ๋ชฉ) | v1.0 (11/16, ๋ชฉ) |
---|---|---|---|---|---|---|
๋์์ธ | UI ์ฌ์ฉ์ ๊ฐ๋ฐ | O | ||||
UI ๊ด๋ฆฌ์ ๊ฐ๋ฐ | O | |||||
ํ์ | ํ์๊ฐ์ | O | ||||
๋ก๊ทธ์ธ | O | |||||
๋ก๊ทธ์์ | O | |||||
ํ์ ํํด | O | |||||
์์ด๋ ์ฐพ๊ธฐ | O | |||||
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ | O | |||||
๋ด๊ฐ ์ด ๊ธ ์กฐํ | O | |||||
์คํฌ๋ฉ ๊ฒ์๋ฌผ ์กฐํ | O | |||||
์ฒดํฌ๋ฆฌ์คํธ ์์ฑ | O | |||||
์ฒดํฌ๋ฆฌ์คํธ ์์ | O | |||||
์์ดํ์ฐ์ค | ์์ดํ์ฐ์ค ๊ธ ๋ฑ๋ก | O | ||||
์์ดํ์ฐ์ค ๊ธ ์์ | O | |||||
์์ดํ์ฐ์ค ๊ธ ์ญ์ | O | |||||
์์ดํ์ฐ์ค ๊ธ ์ ์ฒด ์กฐํ | O | |||||
์์ดํ์ฐ์ค ๊ธ ์์ธ ์กฐํ | O | |||||
์์น ์กฐํ | O | |||||
์์ดํ์ฐ์ค ๊ธ ์คํฌ๋ฉ ๋ฑ๋ก | O | |||||
์์ดํ์ฐ์ค ๊ธ ์คํฌ๋ฉ ์ทจ์ | O | |||||
๋งค์นญ ์ ์ฒญ (์ฑํ ๋ฐฉ ์์ฑ ๊ธฐ๋ฅ๊ณผ ๋ณํฉ๋จ) | O | |||||
์ฑํ ๋ฐฉ ์ ์ | O | |||||
์ฑํ ๋ฉ์์ง ๋ฑ๋ก | O | |||||
์ฑํ ๋ฐฉ ์ ์ฒด ์กฐํ | O | |||||
์ฑํ ๋ฐฉ ๋๊ฐ๊ธฐ (์ฑํ ๋ฐฉ ์ญ์ ๊ธฐ๋ฅ๊ณผ ๋ณํฉ๋จ) | O | |||||
KYC | KYC ์ธ์ฆํ์ธ | O | ||||
์ ๋ถ์ฆ ์ดฌ์ | O | |||||
์ผ๊ตด ์ดฌ์ | O | |||||
ํน์ ํ๋ ์ผ๊ตด ์ดฌ์ | O | |||||
KYC ์ ์ถ (KYC ์์ฒญ ๊ธฐ๋ฅ๊ณผ ๋ณํฉ๋จ) | O | |||||
KYC ์ ๋ณด ์กฐํ | O |
์ฃผ์๊ธฐ๋ฅ | ์ธ๋ถ๊ธฐ๋ฅ | v0.3 (10/21, ๋ชฉ) | v0.5 (10/28, ๋ชฉ) | v0.6 (11/3, ๋ชฉ) | v0.9 (11/10, ๋ชฉ) | v1.0 (11/17, ๋ชฉ) |
---|---|---|---|---|---|---|
ํ์ ๊ด๋ฆฌ | ๊ด๋ฆฌ์ ๋ก๊ทธ์ธ | O | ||||
๊ด๋ฆฌ์ ๋ก๊ทธ์์ | O | |||||
์ฌ์ฉ์ ๋ชฉ๋ก ์กฐํ | O | |||||
์ฌ์ฉ์ ์ ๋ณด ์์ธ์กฐํ | O | |||||
์ฌ์ฉ์ ์ํ ์ ํ | O | |||||
KYC | KYC ์์ฒญ ์กฐํ | O | ||||
KYC ์ํ ๋ณ๊ฒฝ | O | |||||
๋ฒ์ฃ์ด๋ ฅ ์กฐํ | O | |||||
KYC ์ ์ฅ (KYC ๊ณต์ง ๊ธฐ๋ฅ๊ณผ ๋ณํฉ๋จ) | O |
Back
- code๋ฅผ git์ pushํ๋ค.
- ec2๋ฅผ ํ๋ ์ ์ํ์ฌ ec2์ ๋ํ access key๋ฅผ git secret์ ๋ฃ์ด๋๊ณ , ์๋์ผ๋ก ๋ฐฐํฌ๋ ์ ์๋๋ก ํ๋ค.
- github actions๊ฐ ์คํ๋์ด gaseng ์๋น์ค๊ฐ docker๋ก ์ด๋ฏธ์งํ ๋์ด ์๋ฒ๋ก ์ฌ๋ผ๊ฐ๋ค.
Database
- AWS RDS๋ฅผ ์ ์ํ๋ค.
- ํด๋น ์ ๋ณด๋ฅผ resource ์์ secret.yml ํ์ผ์ ๋ง๋ค์ด RDS์ ๊ดํ ์ ๋ณด๋ฅผ ๋ฃ๋๋ค.
Blockchain
- sepolia test network์ ๋ฐฐํฌ๋ KYC ์ปจํธ๋ํธ์ ์ฐ๊ฒฐ๋์ด ์๋ค.
- ํด๋น ์ปจํธ๋ํธ์ ์ฃผ์๋ 0xD69297b898f3540D0FDa0BE69F69c54E65043A89 ์ด๋ค.
# secret.yml์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ ํค๋ ๋ค์๊ณผ ๊ฐ๋ค.
RDS_HOST: [AWS RDS ํธ์คํธ]
RDS_USERNAME: [AWS RDS ์ฌ์ฉ์ ์ด๋ฆ]
RDS_PASSWORD: [AWS RDS ํจ์ค์๋]
S3_BUCKET_NAME: [AWS S3 ๋ฒํท ์ด๋ฆ]
S3_ACCESS_KEY: [AWS S3 ๊ถํ ์๋ ์ก์ธ์ค ํค]
S3_SECRET_KEY: [AWS S3 ๊ถํ ์๋ ๋น๋ฐ ํค]
JWT_SECRET: [JWT๋ก ์ฌ์ฉ๋ ๋น๋ฐ ํค]
COOL_KEY: [์ ํ๋ฒํธ API ํค]
COOL_SECRET: [์ ํ๋ฒํธ API ๋น๋ฐํค]
COOL_PHONE: [ํด๋น ์ ํ๋ฒํธ๋ก ์ธ์ฆ๋ฌธ์ ์ ์ก]
WALLET_ADDRESS: [metamask address]
CONTRACT_ADDRESS: [sepolia test network์ ๋ฐฐํฌ๋ KYC ์ปจํธ๋ํธ]
WALLET_PRIVATE_KEY: [metamask ๋น๋ฐ ํค]
INFURA_API_URL: [infura ์๋น์ค sepolia api]
๊ฐ์์ด ํ๋ก์ ํธ ์ค๊ณ์.hwp (250์ชฝ ๋ถ๋) ๋ค์ด๋ก๋
์ ์ ์ธํฐํ์ด์ค (figma) 58์ฅ
AWS EC2 Instance๋ฅผ ํ์ฉํ์ฌ ์จ๋๋ฉ๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. ์ด์ ๊ด๋ จ๋์ด ์์ ์ฑ๊ณผ ๋์ ๊ฐ์ฉ์ฑ์ ์๋ํ๋ S3๋ฅผ ํ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ ํํ์ต๋๋ค. ๊ฐ ์ฌ์ง์ ๋ฉ์ธํ๋ฉด์ ์ ์๋๋ Thumbnail์ฉ ์ฌ์ง์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ๋ฆฌ์ฌ์ด์งํ๋ ๊ธฐ๋ฅ์ด ํ์๋ก ํ์ต๋๋ค. ์๋ฒ์์ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ๋๋ฉด ์๋ณธ ์ฌ์ง๊ณผ Customํ ์ฌ์ง ๋ ๊ฐ๋ฅผ ์ ๋ก๋ํ๋ ๊ธฐ๋ฅ์ด ํ์๋ก ํ๊ณ , ์ด๋ ๋ถํ์ํ API๋ฅผ ์๋ฒ ๋ด์์ ๊ฐ๋นํ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ์ S3์ ์ด๋ฏธ์ง๊ฐ ์ ๋ก๋ ๋ ๋ Lambda๋ฅผ Triggerํ์ฌ ํด๋ผ์ฐ๋ ์์์ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๊ธฐ๋ฅ์ ๋์ฒดํ์ต๋๋ค.
๊ธฐํ ๋จ๊ณ์์ RDBMS๋ฅผ ์ฌ์ฉํ์ฌ ์ฑํ ์๋น์ค๋ฅผ ๊ตฌํํ๋๋ก ์ ํ์ต๋๋ค. ๊ฐ๋ฐ ๋์ค ์ฑํ ์์คํ ์ KYC ์ด๋๊ธฐ๋ฅ ๋ฐ ํ๋กํ ๋ฑ ์๊ตฌ ์ฌํญ์ด ๋ณ๋๋์๊ณ , ์ฑํ ์ ๊ดํ ๊ธฐ๋ฅ ํ๋ํ๋๊ฐ ์ถ๊ฐ ๋ ๋๋ง๋ค ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ํ ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ํ ์ด๋ธ์ด์์ผ๋ฉฐ, ์ฝ๊ธฐ๋ณด๋ค ์ฐ๊ธฐ๊ฐ ๋ ๋ง์ด ์ผ์ด๋๋ ์ฑํ ์์คํ ์ ์ ์ฐํ๊ฒ ๋ฐ๊พธ๋ ๊ณผ์ ์ด ํ์ํ์ต๋๋ค. ์ด์ Firebase์ Realtime database๋ฅผ ๋์ ํ์ต๋๋ค. ๊ธฐ์กด ์ฑํ ๋ฐฉ์ด ๊ณ ์ ํ๊ฒ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ RDBMS์ ์ ์งํ๊ณ , ์ฑํ ๋ด์ฉ ๋ฑ ์์ฃผ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ NoSQL๋ก ์ฎ๊ธฐ์ด ๋ฐ์ดํฐ ์์ ์ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์๋๋ก ํ์ต๋๋ค.
Gaseng์ IOS, Android ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง Application์ด์ง๋ง Firebase๋ฅผ ์ด์ฉํ์ฌ Web์๋ ํธ์คํ ์ ์งํํ์ต๋๋ค. ๋ฐ๋ผ์ Web์์์ ๊ถํ ์๋ ์ฌ์ฉ์๋ค์ ๋ถ์ ์ ํ API ์ฌ์ฉ์ ๋ฐฉ์งํด์ผ ํ์ต๋๋ค. ์ด์ ๋ชจ๋ API Header์ Authentication ํญ๋ชฉ์ ๊ฒ์ฆํ์ฌ ์ธ์ฆ ๋ฐ์ ์ฌ์ฉ์์ JWT๋ฅผ ํ์ธํ๋ ์ ์ฐจ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. Session ๋ฐฉ์๊ณผ Token ๋ฐฉ์์ ๋น๊ตํ์ฌ ํ์๋ค๊ณผ ๋ ผ์ํ์ผ๋ฉฐ, ํ ํ๋ก์ ํธ์์๋ ๋์ ์ฐจ์ด๊ฐ ๊ทน๋ช ํ๊ฒ ๋๋์ง๋ ๊ฒฐ๊ณผ๋ ์์ผ๋ Blockchain ๋ฐ ํ ์๋น์ค์์ ์ฐ๊ฒฐ์ด ๋ง์ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ Token ๋ฐฉ์์ผ๋ก ์ถ๊ฐํ์ต๋๋ค.
๋ธ๋ก ์๊ฐ์ ๋ธ๋ก์ด ๋ง๋ค์ด์ง๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋คํธ์ํฌ๋ง๋ค ์ด๋ค ๋ฐฉ์์ ํํ๊ณ ์๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ด ํ๋ก์ ํธ๋ Ethereum Network๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ KYC ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๊ฐ ์ธก์ ๊ฒฐ๊ณผ ๋๋ต 9์ด์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด์ ์๊ฐ์ ๋จ์ถํ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๊ณ ์ Network๋ณ๋ก ํน์ฑ์ ์กฐ์ฌํ์ผ๋ฉฐ Polygon(6์ด), Avalanche(2-3์ด), TON(1-2์ด) ๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ต๋๋ค. Ethereum์์ ์ฌ์ฉํ๋ Solidity์ ํ์ฅ์ฑ์ด ๊ฐ์ฅ ์ปธ๊ธฐ ๋๋ฌธ์ Ethereum์ ์ฌ์ฉํ์ง๋ง, ์๋๋ฅผ ์ฐ์ ์ํ๋ Application์์๋ Avalanche๋ฐ TON์ ์ฌ์ฉํด๋ด๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.