Skip to content
@Pda-Final-Project

Pda-Final-Project

image

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

FinPago๋Š” ๋ฏธ๊ตญ SEC(์ฆ๊ถŒ๊ฑฐ๋ž˜์œ„์›ํšŒ) EDGAR ๊ณต์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ด์™ธ ์ฃผ์‹ ํˆฌ์ž์ž๋“ค์ด ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ๊ณต์‹œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŠธ๋ ˆ์ด๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

image image

๐Ÿ“‘ ๊ณต์‹œ ๋ฐ์ดํ„ฐ ์ œ๊ณต

  • SEC EDGAR ๊ณต์‹œ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๊ณต์‹œ ์ œ๊ณต
  • ํ•ด์™ธ ๊ณต์‹œ ๋ฒˆ์—ญ ๋ฐ ์š”์•ฝ ๊ธฐ๋Šฅ ์ง€์› (ChatGPT, Google Translate ํ™œ์šฉ)
  • ์ฃผ์š” ๊ณต์‹œ ์œ ํ˜•(10-K, 10-Q, 8-K ๋“ฑ)๋ณ„ ์š”์•ฝ ๋ฐ ๋ถ„์„ ์ œ๊ณต
  • ๊ณต์‹œ๋ณ„ ์ฃผ์š” ์žฌ๋ฌด ์ •๋ณด ๋น„๊ต ๋ฐ ์‹œ๊ฐํ™”

image image

๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ํŠธ๋ ˆ์ด๋”ฉ

  • ํ•ด์™ธ ์ฃผ์‹ ์‹ค์‹œ๊ฐ„ ์ฒด๊ฒฐ ์ •๋ณด ์ œ๊ณต
  • ์ฃผ๋ฌธ ์œ ํ˜•(์‹œ์žฅ๊ฐ€, ์ง€์ •๊ฐ€, ๋‹จ์ผ๊ฐ€) ์ง€์›
  • ์ฒด๊ฒฐ๋œ ์ฃผ๋ฌธ ๋‚ด์—ญ ๋ฐ ๋งค๋งค ์†์ต ๋ถ„์„
  • Redis Pub/Sub + SSE๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฒด๊ฒฐ ์ •๋ณด ๋ฐ˜์˜

image

๐Ÿ“… ์–ด๋‹์ฝœ ์ผ์ • ๋ฐ ๋ถ„์„

  • ์–ด๋‹์ฝœ(์‹ค์  ๋ฐœํ‘œ) ์ผ์ • ์ œ๊ณต ๋ฐ ๊ธฐ์—… ๋กœ๊ณ  ํ‘œ์‹œ
  • ์–ด๋‹์ฝœ ๋ถ„์„ ๋ฐ์ดํ„ฐ ๋ฐ ์š”์•ฝ ์ œ๊ณต
  • EPS ๋ฐ ๋งค์ถœ ๋ณ€๋™ ์ถ”์ด ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™”
  • ์‹ค์  ๋ฐœํ‘œ ์บ˜๋ฆฐ๋” ๊ธฐ๋Šฅ ๊ตฌํ˜„ image image

๐Ÿ’ฐ My๊ณ„์ขŒ ๊ด€๋ฆฌ

  • ๋ณด์œ  ์ข…๋ชฉ ํ‰๊ฐ€๊ธˆ์•ก ๋ฐ ๋งค๋งค ์†์ต ๋ถ„์„
  • ์‹ค์‹œ๊ฐ„ ํ™˜์œจ ์ ์šฉํ•˜์—ฌ ์›ํ™”/์™ธํ™” ๋ณ€ํ™˜
  • ํ•ด์™ธ ์ฃผ์‹ ๊ฒฐ์ œ ๋ฐฉ์‹(D+1, D+2) ์ ์šฉ
  • ์˜ˆ์ˆ˜๊ธˆ, ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์˜ˆ์ˆ˜๊ธˆ ๋ถ„๋ฆฌ ๊ด€๋ฆฌ image

Others

image image

๐Ÿ”ง ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์‚ฌ์šฉ ๊ธฐ์ˆ 

๐Ÿ”น ํ”„๋ก ํŠธ์—”๋“œ

  • React, JavaScript, Tailwind CSS
  • SSE(Server-Sent Events)๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ฐ˜์˜
  • recharts๋ฅผ ์ด์šฉํ•œ EPS ๋ฐ ๋งค์ถœ ๋ณ€๋™๋ฅ  ์‹œ๊ฐํ™”

๐Ÿ”น ๋ฐฑ์—”๋“œ

  • Spring Boot, Java, Spring Data JPA, MySQL
  • Kafka๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ํŠธ๋ ˆ์ด๋”ฉ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ
  • Redis๋ฅผ ํ™œ์šฉํ•œ ์บ์‹ฑ ๋ฐ Pub/Sub ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • SEC EDGAR API, ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ API, Google Translate API ์—ฐ๋™

๐Ÿ”น ์ธํ”„๋ผ ๋ฐ ๋ฐฐํฌ

  • AWS Cloud, Kubernetes, MySQL Operator, Redis Cluster
  • Jenkins, ArgoCD, GitHub Actions์„ ํ™œ์šฉํ•œ CI/CD ์ž๋™ํ™”
  • AWS ALB ๋ฐ API Gateway๋ฅผ ํ†ตํ•œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ image

ERD

image

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์›์ฒœ ๋ฐ ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•

image

๐Ÿ›  ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์‚ฌ๋ก€

1๏ธโƒฃ Kafka ๊ธฐ๋ฐ˜ ํŠธ๋ ˆ์ด๋”ฉ ์‹œ์Šคํ…œ ์ตœ์ ํ™”

  • ์ฃผ๋ฌธ ์ƒ์„ฑ, ๋งค์นญ, ์ฒด๊ฒฐ, ์ •์‚ฐ ๋“ฑ ๋‹จ๊ณ„๋ณ„ ํ† ํ”ฝ ๋ถ„๋ฆฌํ•˜์—ฌ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„
  • ์‹คํŒจ ์ฒ˜๋ฆฌ(Failure Topic) ๋ฐ ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๋ถ„๋ฆฌ (Filling Notice, General Notice)
  • ์ฒด๊ฒฐ ํ…Œ์ด๋ธ”์„ BuyTradeExecution, SellTradeExecution ์œผ๋กœ ์ •๊ทœํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ™•์žฅ์„ฑ ํ™•๋ณด image image

2๏ธโƒฃ ์‹ค์‹œ๊ฐ„ ์ฒด๊ฒฐ ๋ฐ์ดํ„ฐ ๋ฐ˜์˜

  • ์™ธ๋ถ€ ์ฒด๊ฒฐ ๋ฐ์ดํ„ฐ(์ฆ๊ถŒ์‚ฌ API) + ๋‚ด๋ถ€ ์ฒด๊ฒฐ ๋ฐ์ดํ„ฐ(๋งค์นญ ์—”์ง„) Redis ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ
  • Redis Pub/Sub + SSE(Server-Sent Events) ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜

image

image

image

image

image

image

image

3๏ธโƒฃ MySQL Operator ๊ธฐ๋ฐ˜ InnoDB Cluster ๊ตฌ์„ฑ

  • EBS ๊ธฐ๋ฐ˜ PersistentVolume ์„ค์ • ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ํŠน์ • ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” Affinity & NodeSelector ์ ์šฉ image

4๏ธโƒฃ CORS ์ค‘๋ณต ํ—ค๋” ๋ฌธ์ œ ํ•ด๊ฒฐ

  • Spring Gateway์—์„œ ์ค‘๋ณต๋œ CORS ํ—ค๋”๊ฐ€ ์‘๋‹ต์— ํฌํ•จ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
  • DedupeResponseHeader ์„ค์ •์„ ํ†ตํ•ด ์ค‘๋ณต ํ—ค๋” ์ œ๊ฑฐ image

5๏ธโƒฃ 10-Q ๊ณต์‹œ(140ํŽ˜์ด์ง€) ๋ฒˆ์—ญ ์„ฑ๋Šฅ ๊ฐœ์„ 

  • Google Translate API๋Š” ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ  HTML ํƒœ๊ทธ ๋ฒˆ์—ญ ๋ฌธ์ œ ๋ฐœ์ƒ
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ ์†๋„ 10๋ฐฐ ํ–ฅ์ƒ (10๋ถ„ โ†’ 1๋ถ„)
  • HTML ํƒœ๊ทธ ์ œ๊ฑฐ ํ›„ ๋ฌธ๋‹จ ๋‹จ์œ„ ๋ฒˆ์—ญํ•˜์—ฌ ๋ฒˆ์—ญ ํ’ˆ์งˆ ๊ฐœ์„  image

๐Ÿ”ฎ ํ–ฅํ›„ ๊ณ ๋„ํ™” ๊ณ„ํš

  • ์†Œ์ˆ˜์  ๊ฑฐ๋ž˜ ์ง€์›
  • ETF ๋ฐ ๋ ˆ๋ฒ„๋ฆฌ์ง€ ์ข…๋ชฉ ์ถ”๊ฐ€
  • ์–ด๋‹์ฝœ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ์š”์•ฝ ์ž๋™ํ™”
  • ๊ณต์‹œ ์œ ํ˜• ํ™•์žฅ (EDGAR API ํ™œ์šฉ ๊ทน๋Œ€ํ™”)
  • ํŠธ๋ ˆ์ด๋”ฉ ์‹œ์Šคํ…œ UI ๊ฐœ์„  ๋ฐ ๋ชจ๋ฐ”์ผ ๋Œ€์‘

๐Ÿ‘ฅ ํŒ€์› ์†Œ๊ฐœ

์—ญํ•  ์ด๋ฆ„
๐Ÿ† PM ์–‘์ผ๊ต
๐Ÿ‘จโ€๐Ÿ’ป CTO ๊น€๋™์žฌ
๐Ÿš€ ๋ฐฑ์—”๋“œ ๋ฆฌ๋” ๊น€๋ฏผ์Šน
๐ŸŽจ ํ”„๋ก ํŠธ์—”๋“œ ๋ฆฌ๋” ๊ณฝ์„ฑ์€
โ˜๏ธ ์ธํ”„๋ผ ๋ฆฌ๋” ํ•จ๊ฑด์šฑ

FinPago๋Š” ๊ณต์‹œ ๋ฐ์ดํ„ฐ์™€ ํŠธ๋ ˆ์ด๋”ฉ ์‹œ์Šคํ…œ์„ ๊ฒฐํ•ฉํ•œ ํ˜์‹ ์ ์ธ ๊ธˆ์œต ํ”Œ๋žซํผ์œผ๋กœ, ํˆฌ์ž์ž๋“ค์—๊ฒŒ ๋”์šฑ ์‹ ์†ํ•˜๊ณ  ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐ŸŽ‰

๐Ÿ“… ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2025.03.17

Popular repositories Loading

  1. backend backend Public

    Java 1 2

  2. frontend frontend Public

    JavaScript

  3. argocd argocd Public

  4. .github .github Public

    SEC(๋ฏธ๊ตญ์ฆ๊ถŒ๊ฑฐ๋ž˜์œ„์›ํšŒ) ์ „์ž ๊ณต์‹œ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฒˆ์—ญยท์š”์•ฝํ•˜๊ณ , ํˆฌ์ž์ž๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ๋งค๋งค์ „๋žต์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํŠธ๋ ˆ์ด๋”ฉ ํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ

Repositories

Showing 4 of 4 repositories

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ