์ด ํ๋ก์ ํธ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒฌ๊ณ ํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ์ ๊ณผ ์ต์ ํ ์ ๋ต์ ์คํํ๊ณ ๊ตฌํํ ์์คํ ์ ๋๋ค. ๊ฒ์ ์ต์ ํ, ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฌ, ๋ฐฐ์น ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ๊ธฐ์ ์ ๋์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํฉ๋๋ค.
- Java 21: ์ต์ Java ๊ธฐ๋ฅ ํ์ฉ
- Spring Boot 3.4.5: ๊ฐ๋ ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
- Spring Security: ๋ณด์ ๋ฐ ์ธ์ฆ ์ฒ๋ฆฌ
- Spring Data JPA: ๊ฐ์ฒด ์งํฅ์ ๋ฐ์ดํฐ ์ ๊ทผ
- Spring Batch: ๋์ฉ๋ ๋ฐ์ดํฐ ๋ฐฐ์น ์ฒ๋ฆฌ
- JWT: ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
- MySQL: ๊ด๊ณํ ๋ฐ์ดํฐ ์๊ตฌ ์ ์ฅ
- MongoDB: ๋์ฉ๋ ๋ก๊ทธ ๋ฐ ๋ถ์ ๋ฐ์ดํฐ ์ ์ฅ
- Elasticsearch: ๊ณ ์ฑ๋ฅ ๊ฒ์ ์์ง
- Redis: ์บ์ฑ ๋ฐ ์ธ์ ๊ด๋ฆฌ
- Gradle: ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ๋น๋ ์๋ํ
- Swagger/OpenAPI: API ๋ฌธ์ํ
- Elasticsearch + Kibana + MySQL ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ๋ฒ: ๊ฐ ๊ธฐ์ ์ ์ฅ์ ์ ํ์ฉํ์ฌ ๊ณ ์ฑ๋ฅ ๊ฒ์๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ชจ๋ ๋ณด์ฅ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋๊ธฐํ: MySQL์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ(์์ฑ, ์์ , ์ญ์ )์ด ๋ฐ์ํ ๋ Elasticsearch์ ์๋ ๋๊ธฐํ
- ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ํจํด:
- Elasticsearch์์ ์ด๊ธฐ ๊ฒ์์ ํตํด ๊ด๋ จ ๋ฌธ์ ID๋ง ๋น ๋ฅด๊ฒ ์ถ์ถ
- ์ถ์ถ๋ ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก MySQL์์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์ ํํ ์ต์ ๋ฐ์ดํฐ ์กฐํ
- Elasticsearch Refresh ์ ์ฑ ์ต์ ํ: ์ค์๊ฐ ๊ฒ์๊ณผ ์ธ๋ฑ์ฑ ์ฑ๋ฅ ๊ฐ์ ๊ท ํ ์กฐ์
- ์คํค๋ง๋ฆฌ์ค ๊ตฌ์กฐ: ๊ด๊ณ ์กฐํ ๋ฐ์ดํฐ์ ๋ค์ํ ์์ฑ์ ์ ์ฐํ๊ฒ ์ ์ฅ
- ํ์ฅ์ฑ: ์ํ์ ํ์ฅ์ ํตํ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฅ๋ ฅ
- ์ง๊ณ ํ์ดํ๋ผ์ธ: ๋ณต์กํ ๋ฐ์ดํฐ ๋ถ์๊ณผ ์ง๊ณ๋ฅผ ํจ์จ์ ์ผ๋ก ์ํ
- ์ฑ๋ฅ: ๋๋์ ์ฐ๊ธฐ ์์ ์ ์ต์ ํ๋ ์ฑ๋ฅ
- ์ค๋ฉ: ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ถ์ฐ ์ ์ฅ ์ง์
- 3๋จ๊ณ ์์ ํ์ดํ๋ผ์ธ: ์ค๋น, ์ง๊ณ, ์ ์ฅ ๋จ๊ณ๋ก ๋๋์ด ํจ์จ์ ์ธ ๋ฐฐ์น ์ฒ๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ต์ ํ:
- MongoDB ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ DB ๋ ๋ฒจ์์ ์ํ
- ํ์ํ ํ๋๋ง ์ ํ์ ์ผ๋ก ํ๋ก์ ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ต์ํ
allowDiskUse: true์ค์ ์ผ๋ก ๋์ฉ๋ ์ฒ๋ฆฌ ์ ๋์คํฌ ํ์ฉ
- ์ฒญํฌ ๊ธฐ๋ฐ ์ฒ๋ฆฌ: ์ผ์ ํฌ๊ธฐ(500๊ฐ)์ ์ฒญํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ํ๋ณด
- MongoDB ์ต์ ํ ๊ธฐ๋ฒ:
- ์ธ๋ฑ์ค ํ์ฉ: ๋ ์ง ํ๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ํจ์จ์ ์ธ ํํฐ๋ง
- ์์ ์ปฌ๋ ์ : ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ์ฒ๋ฆฌ ๋จ๊ณ ๋ถ๋ฆฌ
- ์ปค์ ๊ด๋ฆฌ: ์ ์ ํ ๋ฐฐ์น ํฌ๊ธฐ๋ก ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ
- MySQL ๋ฐฐ์น ์ฝ์ : JDBC ๋ฐฐ์น ์์ ์ ํตํ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฝ์
- ์ฌ์๋ ๋ฉ์ปค๋์ฆ: ์คํจ ์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ์ฌ์คํํ๋ ์์ ํ ์ฒ๋ฆฌ
- ํ์์กด ๊ด๋ฆฌ: ๋ชจ๋ ์์คํ (JVM, MongoDB, MySQL)์์ ์ผ๊ด๋ Asia/Seoul ํ์์กด ์ค์
- ๋น๋๊ธฐ ์ฒ๋ฆฌ: ๋์ฉ๋ ์์ ์ ๋ ผ๋ธ๋กํน ์ฒ๋ฆฌ
- UUID ์ฒ๋ฆฌ ์ต์ ํ: ํจ์จ์ ์ธ MySQL BINARY(16) ์ ์ฅ์ ์ํ ๋ณํ ์ฒ๋ฆฌ
- ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น : ๋ฐฐ์น ์์ ์งํ ์ํฉ๊ณผ ๊ฒฐ๊ณผ ์ถ์ ์ ์ํ ์ธ๋ถ ๋ก๊น
- MongoDB ์ง๊ณ ํ์ดํ๋ผ์ธ์ ํตํด ์ผ์ผ ์์ฒ๋ง ๊ฑด์ ๊ด๊ณ ์กฐํ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ
- JdbcBatchItemWriter๋ฅผ ํตํ ์ต์ ํ๋ MySQL ๋ฐฐ์น ์ฝ์ ์ผ๋ก ์ ์ฅ ์ฑ๋ฅ ํฅ์
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ํํ๋ฉด์๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ค์๊ฐ ๋ถ์ ๋์๋ณด๋ ๊ตฌํ
- ๋จธ์ ๋ฌ๋์ ํ์ฉํ ๊ด๊ณ ์ถ์ฒ ์์คํ ๊ฐ๋ฐ
- Kafka๋ฅผ ํ์ฉํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ํ์ฅ

