- ๋ฐ์ดํฐ ์ ์ก ๋์ ๋ด์ญ ๊ด๋ฆฌ Table
- registration_number unique_key ์ค์
- ๊ฐํธ ์ฐ๊ฒฐ ๋์ ๋ด์ญ ๊ด๋ฆฌ Table
- registration_number unique_key ์ค์
- ์นด๋ ๊ฒฐ์ ๋ฐ์ดํฐ Table
- ์ฑ ๋ด๋ถ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ํตํด ์ ์ฌํด ๋์ ํ ์ด๋ธ์ด๋ผ ๊ฐ์
- ์ฌ์ ์์ ์นด๋ ๋ฐ์ดํฐ์์ ํ์ธํ๊ธฐ ์ํด registration_number ์ปฌ๋ผ ์ถ๊ฐ
- registration_number ์ created_at ์ ๋ณตํฉ ์ธ๋ฑ์ค๋ก ์ค์
- ์นด๋ ๋ฐ์ดํฐ ์ ์ก ์, ๊ณผ๊ฑฐ 6๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉ
- ๊ณต๋์ฒด ์์ ์นด๋ ๊ฒฐ์ ๋ฐ์ดํฐ Table
- ๊ณต๋์ฒด๋ก๋ถํฐ ์์ ๋ฐ์ ์นด๋ ์์ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๊ธฐ ์ํด ๋ถ๋ฆฌ
์ธ์ด
- kotlin
- jdk 21
ํ๋ ์์ํฌ
- spring boot 3.2.1
๋ฐ์ดํฐ๋ฒ ์ด์ค
- Mysql 8.0.32
- ํด๋ฆฐ ์ํคํ ์ฒ ์ผ๋ถ ์ฐจ์ฉ
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ
- ๋ฉํฐ ๋ชจ๋ ๊ตฌ์ฑ
- api
- ํด๋ผ์ด์ธํธ์ API ์ ๊ณต
- data-transfer
- spring scheduler ์ด์ฉํ ๋ฐ์ดํฐ ์ ์ก ํ๋ก์ธ์ค
- data-receiver
- ๋ฐ์ดํฐ ์์ ํ๋ก์ธ์ค
- api
- ๋ฉํฐ ๋ชจ๋ ๊ตฌ์ฑ ์ด์
- ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ถ๋ฆฌ
- ์ค์ผ์ผ ์์ ์ ์ฉ์ด
- API Controller ๊ณ์ธต
- ์ธ๋ถ ์์ฒญ (External)
- ์ธ๋ถ์ ๋ฐ์ดํฐ ์ ์ก ์ค์ผ์ฅด๋ง
- ๋ด๋ถ ์์ฒญ (Internal)
- ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์ดํฐ ์์
- ApplicationService ์ ๊ฒฝ์ฐ, ์๊ตฌ ์ฌํญ์ ๋ฐ๋ฅธ ๋น์ฆ๋์ค๋ฅผ ์ ์
- UseCase ๋ก์ ํ์ฉ
- Domain, Infrastructure ๊ณ์ธต Service ๋ฅผ ์์กดํ๋ค.
- Domain Entity ๋ก Jpa Entity ํ์ฉ
- ORM Entity ์ ์
- ์ฃผ์ฒด์ ์ธ ํ์๋ฅผ ๊ฐ์ง๋ค.
- Domain Service
- Entity ๊ฐ ์์ฒด์ ์ผ๋ก ํํ์ง ๋ชปํ๋ ๋๋ฉ์ธ ๋น์ฆ๋์ค ์ ์
- Persistence ์ JPA Repository ์ ์
- ์ธ๋ถ API, Library ๊ด๋ จ Configuration
- ์ ํ๋ฆฌ์ผ์ด์ ๋ด ํ์ํ ๊ณตํต ๊ฐ์ฒด ์ ์
- App ๋ด์ ์ค์
- ๊ณตํต DTO & Constant & Util
๊ฐํธ ์ฐ๊ฒฐ ํ์ธ ๋์ API
- ๊ณต๋์ฒด์ ์ฐ๊ฒฐ ํ์ธ ๊ฐ๋ฅ API ๋๊ธฐ ํธ์ถ
- ์ฐ๊ฒฐ ํ์ธ ๋์ ๋ฐ์ดํฐ ์ ์ฌ Domain Service ํจ์ ํธ์ถ
๋ฐ์ดํฐ ์ ๊ณต ๋์ API
- ๊ฐํธ ์ฐ๊ฒฐ ๋์ ํ์ธ ํ, ๊ณต๋์ฒด์ ๋ฐ์ดํฐ ์ ์ก ๋ฑ๋ก API ๋๊ธฐ ํธ์ถ
- ๋ฐ์ดํฐ ์ ๊ณต ๋์ ๋ด์ญ ์ ์ฌ Domain Service ํจ์ ํธ์ถ
- ๊ณผ๊ฑฐ 6๊ฐ์ ๋งค์ถ ์กฐํ ๋ฐ ๊ณต๋์ฒด์ ๋งค์ถ ์ ์ก
- ์ฝ๋ฃจํด ํ์ฉ ๋น๋๊ธฐ ์ ์ก ํ๋ก์ธ์ค ๊ตฌ์ฑ
- ๊ณผ๊ฑฐ 6๊ฐ์ ๋งค์ถ ๋ฐ์ดํฐ๋ ๋ฐฉ๋ํ ๊ฒ์ด๋ฏ๋ก, 10๊ฑด ์ฉ ํ์ด์ง ์ฒ๋ฆฌํ์ฌ ์ฟผ๋ฆฌ ํ 10 ๊ฑด ๋ฐฐ์น ์ ์ก
- DB ์ฟผ๋ฆฌ ๋ถ๋ถ & ๋งค์ถ ๋ฐ์ดํฐ ์ ์ก ์ฝ๋๋ฅผ ์์ ์ฝ๋ฃจํด์ผ๋ก ์์ฑ
- while ๋ฌธ ํ์ฉํ์ฌ, ๋ฐ๋ณต ์์ ์งํ & 10๋ถ ํ์์์ ์ค์
- ์ฝ๋ฃจํด ์์ธ ๋ฐ์ ์, ์ฝ๋ฃจํด ์์ ์ข ๋ฃ
๋ฐ์ดํฐ ์ ์ก ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ, Spring Scheduler ๋ฅผ ํตํด ๊ตฌํ
์ญ์ ๋งค์ถ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒ์ ๊ณ ๋ คํ์ฌ, 10๊ฑด ์ฉ ์ฟผ๋ฆฌํ์ฌ ๋ฐฐ์น ์ ์ก
- ๋ฐ์ดํฐ ์ ์ก์ ๋์ํ ๋ชฉ๋ก์ ํ์ด์ง ์ฒ๋ฆฌํ์ฌ ์กฐํ
- ์ฌ์ ์ ๋ฒํธ๋ฅผ ์ด์ฉํ์ฌ, ์ด์ ์นด๋ ๋งค์ถ์ ์กฐํํ์ฌ 10๊ฑด ์ฉ Chunk ํ์ฌ ๊ณต๋์ฒด ๋ฐฐ์น ์ ์ก
- ์ฑ๊ณต ์ ๊ฐ์ฅ ๋ง์ง๋ง ์นด๋ ๋ฒํธ ๋ก๊น , ์คํจ ์ ์ฌ์ ์ ๋ฒํธ ๋ก๊น
์ด๋ฒคํธ ๋ธ๋ก์ปค๋ก ์นดํ์นด ์ ์
์นดํ์นด๋ฅผ ์ ์ ํ ์ด์ ๋, ์นด๋ ๋งค์ถ ๋ฐ์ดํฐ๋ฅผ ๋์ฉ๋ ๋ฐ์ดํฐ์ผ ๊ฒ์ผ๋ก ํ๋จํ์ฌ ๋ฌด๋ฆฌ ์์ด ์๋ฐฑ๋ง๊ฐ์ ๋ฉ์์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๋ฏ๋ก, ๋งค์ถ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ์ง ๋ชปํ๋๋ผ๋, ์ ์ค์ ๋ฐฉ์งํ ์ ์๋ค๋ ์ด์ ์ด ์์ ๊ฒ์ด๋ผ ์๊ฐ
์นดํ์นด ๋ฆฌ์ค๋๋ฅผ ํตํด, ์์ ๋ฐ์ ๋งค์ถ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋ก์ธ์ค๋ก ๊ตฌํ



