Skip to content

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ , ๊ตฌ๋…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์„ค๊ณ„์™€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ API ์ œ๊ณต

Notifications You must be signed in to change notification settings

GroovyArea/data-communication-process

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

63 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

ํด๋” ๊ตฌ์กฐ

api module

img.png

data-receiver module

img_1.png

data-transfer

img_2.png


ERD ์†Œ๊ฐœ

img.png

data_transfer_agreements

  • ๋ฐ์ดํ„ฐ ์ „์†ก ๋™์˜ ๋‚ด์—ญ ๊ด€๋ฆฌ Table
  • registration_number unique_key ์„ค์ •

connection_agreements

  • ๊ฐ„ํŽธ ์—ฐ๊ฒฐ ๋™์˜ ๋‚ด์—ญ ๊ด€๋ฆฌ Table
  • registration_number unique_key ์„ค์ •

card_transactions

  • ์นด๋“œ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ Table
  • ์•ฑ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์ ์žฌํ•ด ๋†“์€ ํ…Œ์ด๋ธ”์ด๋ผ ๊ฐ€์ •
  • ์‚ฌ์—…์ž์˜ ์นด๋“œ ๋ฐ์ดํ„ฐ์ž„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด registration_number ์ปฌ๋Ÿผ ์ถ”๊ฐ€
  • registration_number ์™€ created_at ์„ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋กœ ์„ค์ •
    • ์นด๋“œ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ, ๊ณผ๊ฑฐ 6๊ฐœ์›”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

receive_card_transactions

  • ๊ณต๋™์ฒด ์ˆ˜์‹  ์นด๋“œ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ Table
  • ๊ณต๋™์ฒด๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹  ๋ฐ›์€ ์นด๋“œ ์›์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๋ฆฌ

๊ธฐ์ˆ  ์Šคํƒ


์–ธ์–ด

  • kotlin
  • jdk 21

ํ”„๋ ˆ์ž„์›Œํฌ

  • spring boot 3.2.1

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • Mysql 8.0.32

์•„ํ‚คํ…์ฒ˜

  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์ผ๋ถ€ ์ฐจ์šฉ
  • ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„

ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ

  • ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์„ฑ
    • api
      • ํด๋ผ์ด์–ธํŠธ์— API ์ œ๊ณต
    • data-transfer
      • spring scheduler ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœ์„ธ์Šค
    • data-receiver
      • ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค
  • ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์„ฑ ์ด์œ 
    • ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ถ„๋ฆฌ
    • ์Šค์ผ€์ผ ์•„์›ƒ ์‹œ ์šฉ์ด

์ฝ”๋“œ ๊ตฌ์„ฑ

Application

  • API Controller ๊ณ„์ธต
  • ์™ธ๋ถ€ ์š”์ฒญ (External)
    • ์™ธ๋ถ€์— ๋ฐ์ดํ„ฐ ์ „์†ก ์Šค์ผ€์ฅด๋ง
  • ๋‚ด๋ถ€ ์š”์ฒญ (Internal)
    • ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
  • ApplicationService ์˜ ๊ฒฝ์šฐ, ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ฅธ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ •์˜
    • UseCase ๋กœ์„œ ํ™œ์šฉ
    • Domain, Infrastructure ๊ณ„์ธต Service ๋ฅผ ์˜์กดํ•œ๋‹ค.

Domain

  • Domain Entity ๋กœ Jpa Entity ํ™œ์šฉ
  • ORM Entity ์ •์˜
    • ์ฃผ์ฒด์ ์ธ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • Domain Service
    • Entity ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋„๋ฉ”์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์ •์˜

Infrastructure

  • Persistence ์˜ JPA Repository ์ •์˜
  • ์™ธ๋ถ€ API, Library ๊ด€๋ จ Configuration

Common

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด ํ•„์š”ํ•œ ๊ณตํ†ต ๊ฐ์ฒด ์ •์˜
  • App ๋‚ด์˜ ์„ค์ •
  • ๊ณตํ†ต DTO & Constant & Util

API

๊ฐ„ํŽธ ์—ฐ๊ฒฐ ํ™•์ธ ๋™์˜ API

  • ๊ณต๋™์ฒด์— ์—ฐ๊ฒฐ ํ™•์ธ ๊ฐ€๋Šฅ API ๋™๊ธฐ ํ˜ธ์ถœ
  • ์—ฐ๊ฒฐ ํ™•์ธ ๋™์˜ ๋ฐ์ดํ„ฐ ์ ์žฌ Domain Service ํ•จ์ˆ˜ ํ˜ธ์ถœ

๋ฐ์ดํ„ฐ ์ œ๊ณต ๋™์˜ API

  • ๊ฐ„ํŽธ ์—ฐ๊ฒฐ ๋™์˜ ํ™•์ธ ํ›„, ๊ณต๋™์ฒด์— ๋ฐ์ดํ„ฐ ์ „์†ก ๋“ฑ๋ก API ๋™๊ธฐ ํ˜ธ์ถœ
  • ๋ฐ์ดํ„ฐ ์ œ๊ณต ๋™์˜ ๋‚ด์—ญ ์ ์žฌ Domain Service ํ•จ์ˆ˜ ํ˜ธ์ถœ
  • ๊ณผ๊ฑฐ 6๊ฐœ์›” ๋งค์ถœ ์กฐํšŒ ๋ฐ ๊ณต๋™์ฒด์— ๋งค์ถœ ์ „์†ก
    • ์ฝ”๋ฃจํ‹ด ํ™œ์šฉ ๋น„๋™๊ธฐ ์ „์†ก ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ
    • ๊ณผ๊ฑฐ 6๊ฐœ์›” ๋งค์ถœ ๋ฐ์ดํ„ฐ๋Š” ๋ฐฉ๋Œ€ํ•  ๊ฒƒ์ด๋ฏ€๋กœ, 10๊ฑด ์”ฉ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฟผ๋ฆฌ ํ›„ 10 ๊ฑด ๋ฐฐ์น˜ ์ „์†ก
    • DB ์ฟผ๋ฆฌ ๋ถ€๋ถ„ & ๋งค์ถœ ๋ฐ์ดํ„ฐ ์ „์†ก ์ฝ”๋“œ๋ฅผ ์ž์‹ ์ฝ”๋ฃจํ‹ด์œผ๋กœ ์ƒ์„ฑ
    • while ๋ฌธ ํ™œ์šฉํ•˜์—ฌ, ๋ฐ˜๋ณต ์ž‘์—… ์ง„ํ–‰ & 10๋ถ„ ํƒ€์ž„์•„์›ƒ ์„ค์ •
    • ์ฝ”๋ฃจํ‹ด ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ, ์ฝ”๋ฃจํ‹ด ์ž‘์—… ์ข…๋ฃŒ

๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœ์„ธ์Šค

๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ, Spring Scheduler ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„
์—ญ์‹œ ๋งค์ถœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๊ฒƒ์„ ๊ณ ๋ คํ•˜์—ฌ, 10๊ฑด ์”ฉ ์ฟผ๋ฆฌํ•˜์—ฌ ๋ฐฐ์น˜ ์ „์†ก

  • ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋™์˜ํ•œ ๋ชฉ๋ก์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ์กฐํšŒ
  • ์‚ฌ์—…์ž ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ, ์–ด์ œ ์นด๋“œ ๋งค์ถœ์„ ์กฐํšŒํ•˜์—ฌ 10๊ฑด ์”ฉ Chunk ํ•˜์—ฌ ๊ณต๋™์ฒด ๋ฐฐ์น˜ ์ „์†ก
  • ์„ฑ๊ณต ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์นด๋“œ ๋ฒˆํ˜ธ ๋กœ๊น…, ์‹คํŒจ ์‹œ ์‚ฌ์—…์ž ๋ฒˆํ˜ธ ๋กœ๊น…

๋ฐ์ดํ„ฐ ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค

์ด๋ฒคํŠธ ๋ธŒ๋กœ์ปค๋กœ ์นดํ”„์นด ์„ ์ •

์นดํ”„์นด๋ฅผ ์„ ์ •ํ•œ ์ด์œ ๋Š”, ์นด๋“œ ๋งค์ถœ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์ผ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ ๋ฌด๋ฆฌ ์—†์ด ์ˆ˜๋ฐฑ๋งŒ๊ฐœ์˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๋งค์ถœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹  ๋ฐ›์ง€ ๋ชปํ•˜๋”๋ผ๋„, ์œ ์‹ค์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์ ์ด ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ

์นดํ”„์นด ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ†ตํ•ด, ์ˆ˜์‹  ๋ฐ›์€ ๋งค์ถœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌํ˜„


About

๐Ÿ“š ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ , ๊ตฌ๋…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์„ค๊ณ„์™€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ API ์ œ๊ณต

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages