Skip to content

Latest commit

ย 

History

History
94 lines (66 loc) ยท 7.08 KB

cloud-architecture.md

File metadata and controls

94 lines (66 loc) ยท 7.08 KB

EDGE โ€” Cloud Architecture

์›๋ณธ: EDGE_์•„ํ‚คํ…์ฒ˜_v0_2.pptx โ€” Slide 4 (Cloud Architecture)

[์„ค๊ณ„ ๋ทฐ] AWS ํด๋ผ์šฐ๋“œ ๋ฐฐ์น˜์˜ ๋…ผ๋ฆฌ ๊ฐœ์š”๋‹ค. ํ˜„ํ–‰ ์ธํ”„๋ผ์˜ ๊ถŒ์œ„๋Š” ../../infra/terraform/README.md, ALBยทํŒŒ์ดํ”„๋ผ์ธ ๊ฒฐ์ •์€ ../adr/0034ยท../adr/0028์— ์žˆ๋‹ค. ์ถฉ๋Œ ์‹œ SSOT ์šฐ์„ .

โš ๏ธ ๋ชฉํ‘œ(prod) ํ† ํด๋กœ์ง€ โ€” ํ˜„ํ–‰ dev์™€ ๋‹ค๋ฆ„: ์ด ๊ตฌ์„ฑ๋„์˜ ๋‹ค์ค‘ AZ ์ด์ค‘ํ™”(NAT gateway ร—2, RDS Primary/Standby, Replica Cache)์™€ ํด๋ผ์šฐ๋“œ ์บ์‹œ(ElastiCache, Analysis Result Cache)๋Š” ๋ชฉํ‘œ ์„ค๊ณ„๋‹ค. ํ˜„ํ–‰ dev๋Š” ๋‹จ์ผ NATยท๋‹จ์ผ AZ RDS(multi_az=false), ํด๋ผ์šฐ๋“œ ์บ์‹œ ๋ฏธ๋ฐฐ์„ , prod ํ™˜๊ฒฝ ๋ฏธ๊ตฌ์ถ•์ด๋‹ค (../../infra/terraform/README.md). ํ˜„ํ–‰ ์บ์‹œ๋Š” ์˜จํ”„๋ ˜ publication-api ์ธํ”„๋กœ์„ธ์Šค ์บ์‹œ(Caffeine, ALPHA-433)๋ฟ (../context.md ยง4.2).

๊ฐœ์š”

EDGE ํด๋ผ์šฐ๋“œ(์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ)์˜ AWS ์ธํ”„๋ผ ๊ตฌ์„ฑ๋„. ๊ณ ๊ฐ์‚ฌ(Customer Environment)๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค๋กœ ์œ ์ง€๋˜๊ณ , DMZ์˜ Relay Worker๊ฐ€ edgesignal.dev ๋„๋ฉ”์ธ์„ ํ†ตํ•ด AWS ์ธก๊ณผ ํ†ต์‹ ํ•œ๋‹ค. AWS ์ธก์€ **ํŒŒ์ดํ”„๋ผ์ธ์šฉ ECS ํด๋Ÿฌ์Šคํ„ฐ(Step Functions ๊ธฐ๋ฐ˜)**์™€ ์„œ๋น™์šฉ ECS ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋‚˜๋‰˜๋ฉฐ, 2๊ฐœ AZ์— ๊ฑธ์นœ 3๊ณ„์ธต ์„œ๋ธŒ๋„ท(Public / App Private / Data Private) ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.


1. Customer Environment (๊ณ ๊ฐ์‚ฌ ์˜จํ”„๋ ˆ๋ฏธ์Šค)

๊ตฌ์—ญ ์ปดํฌ๋„ŒํŠธ
Channel Server Widget UI โ€” ํˆฌ์ž์ž(Investor)๊ฐ€ ์ ‘๊ทผ
Internal Control Server Publication Service, Customer Console UI, Customer Console Service, Intake Worker, Screening Worker โ€” ์ค€๋ฒ• ๊ฐ์‹œ์ธ(Compliance Officer)์ด ์ฝ˜์†” ์ ‘๊ทผ
DB Server ๋‹จ์ผ DB (ํ…Œ๋„ŒํŠธ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
DMZ Relay Worker

ํ๋ฆ„

  • Investor โ†’ Widget UI โ†’ Internal Control Server(Publication Service)
  • Compliance Officer โ†’ Customer Console UI/Service
  • Internal Control Server โ†’ DB Server
  • Internal Control Server โ†’ DMZ(Relay Worker)
  • Relay Worker โ†’ sync-dev.edgesignal.dev:443 โ†’ AWS Route 53 โ†’ Tenant Sync ALB (์•„์›ƒ๋ฐ”์šด๋“œ ์ „์šฉ)

2. AWS Cloud (EDGE ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ)

2.1 ์—ฃ์ง€ / ์ง„์ž… ๊ณ„์ธต

์ปดํฌ๋„ŒํŠธ AWS ์„œ๋น„์Šค ์—ญํ• 
DNS AWS Route 53 edgesignal.dev ์กด. ์ง„์ž…์€ ์„œ๋น„์Šค๋ณ„ ํ˜ธ์ŠคํŠธ โ€” sync=sync-dev.edgesignal.dev(prod sync.edgesignal.dev), super-admin UI=admin-dev.edgesignal.dev(CloudFront)ยทAPI=admin-api-dev.edgesignal.dev(ALB) (../adr/0034 ํ˜ธ์ŠคํŠธ 1:1)
CDN AWS CloudFront ์ •์  ์ž์‚ฐ ๋ฐฐํฌ (S3 ์˜ค๋ฆฌ์ง„)
Internet Gateway โ€” VPC ์ธํ„ฐ๋„ท ์ง„์ž…
ALB ร—2 Application Load Balancer ์šฉ๋„๋ณ„ ๋ถ„๋ฆฌ โ€” Tenant Sync Service์šฉ ALB์™€ Super Admin Console Service์šฉ ALB๊ฐ€ ๊ฐ๊ฐ ์กด์žฌ. ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋Š” ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ํ•˜๋‚˜๋กœ ํ‘œํ˜„ํ–ˆ์œผ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๋‘ ์Œ

2.2 ํŒŒ์ดํ”„๋ผ์ธ (AWS Step Functions workflow)

  • Scheduler: AWS EventBridge โ†’ Step Functions ์‹คํ–‰ ํŠธ๋ฆฌ๊ฑฐ
  • ECS Cluster (ํŒŒ์ดํ”„๋ผ์ธ) โ€” VPC ๋‚ด์—์„œ Step Functions๊ฐ€ ํƒœ์Šคํฌ๋ฅผ ๋‹จ๊ณ„๋ณ„ ์‹คํ–‰

ํ˜„ํ–‰ SFN์€ 3ํŽ˜์ด์ฆˆ (../adr/0028) โ€” ์„ค๋ช… ์ƒ์„ฑ(analyze)์€ SFN ํŽ˜์ด์ฆˆ๊ฐ€ ์•„๋‹ˆ๋ผ ์•„๋ž˜ ํŠธ๋ž˜ํ”ฝ ๊ฒฝ๋กœ 4์˜ ํ ์†Œ๋น„์ž๋‹ค:

ํŽ˜์ด์ฆˆ Task (๋Œ€ํ‘œ)
raw ์ˆ˜์ง‘ Ingest News/Price/Disclosure ๋“ฑ โ€” ์ „์ฒด ์†Œ์Šค(FMP ์žฌ๋ฌดยทKIS NAVยทETF ๊ตฌ์„ฑ์ข…๋ชฉ ๋“ฑ)๋Š” SFN ์ •์˜๊ฐ€ SSOT
์ •์ œ (normalize) Process News/Price/Disclosure Task
feature ์ง€ํ‘œยทassertionยทeventยทprice-trigger ์‚ฐ์ถœ โ€” ์„ค๋ช… ์ƒ์„ฑ์˜ ์ž…๋ ฅ
  • ํŒŒ์ดํ”„๋ผ์ธ ํƒœ์Šคํฌ๋Š” AWS S3(๋ฐ์ดํ„ฐ ์ ์žฌ)์™€ ECR(์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€)์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ Data subnet group์˜ RDS์— ์ ์žฌ

โš ๏ธ analyze๋Š” feature ์‚ฐ์ถœ๋ฌผ(assertionยทeventยทprice-trigger)์— ์˜์กดํ•œ๋‹ค โ€” ๋Ÿฐ๋ถยท๋ฆฌ๋ทฐ ์‹œ ์ด ์˜์กด์„ ๋†“์น˜์ง€ ๋ง ๊ฒƒ. ํƒœ์Šคํฌ ๋ชฉ๋ก์€ ๋Œ€ํ‘œ๊ฐ’์ด๋ฉฐ ์ „์ฒด๋Š” infra/terraform/modules/data-pipeline SFN ์ •์˜๊ฐ€ SSOT.

2.3 ์„œ๋น™ (ECS Cluster)

2๊ฐœ AZ์— ๋™์ผ ๊ตฌ์„ฑ์œผ๋กœ ๋ฐฐ์น˜:

์„œ๋ธŒ๋„ท ์ปดํฌ๋„ŒํŠธ
Public subnet (AZ-a / AZ-b) NAT gateway ร—2 โ€” App Private subnet์˜ ์•„์›ƒ๋ฐ”์šด๋“œ ๊ฒฝ๋กœ
App Private subnet (AZ-a / AZ-b) Tenant Sync Service, Super Admin Console Service (ECS ์„œ๋น„์Šค)
Data Private subnet (AZ-a) Primary Cache (AWS ElastiCache), Primary RDB Database (AWS RDS)
Data Private subnet (AZ-b) Replica Cache (AWS ElastiCache), Standby RDB Database (AWS RDS)
  • Data Private subnet 2๊ฐœ๋Š” Data subnet group์œผ๋กœ ๋ฌถ์ด๋ฉฐ, Primary โ†” Standby ๊ฐ„ ๋ณต์ œ
  • ์„œ๋น„์Šค ํ๋ฆ„: Tenant Sync ALB โ†’ Tenant Sync Service โ†’ ์ฝ๊ธฐ ์บ์‹œ(Analysis Result Cache) โ†’ RDS; Super Admin ALB โ†’ Super Admin Console Service โ†’ RDS ์ง์ ‘. ์บ์‹œ๋Š” ํ…Œ๋„ŒํŠธ ๋™๊ธฐํ™” ์ฝ๊ธฐ ๊ฒฝ๋กœ ์ „์šฉ์ด๊ณ  ์ฝ˜์†” ์กฐํšŒ๋Š” ์บ์‹œ๋ฅผ ๊ฒฝ์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค (system-architecture.md ํŠน์ง• ์š”์•ฝ)

โš ๏ธ ์ด ์„œ๋น™ ๊ตฌ์„ฑ์€ ๋ชฉํ‘œ(prod) ํ† ํด๋กœ์ง€ โ€” ํ˜„ํ–‰ dev๋Š” ๋‹จ์ผ NATยท๋‹จ์ผ AZ RDS์ด๊ณ  ํด๋ผ์šฐ๋“œ ์บ์‹œ(ElastiCache)๋Š” ๋ฏธ๋ฐฐ์„ . ์œ„ ๋ฐฐ๋„ˆ ์ฐธ์กฐ.


ํŠธ๋ž˜ํ”ฝ ๊ฒฝ๋กœ ์š”์•ฝ

  1. ํ…Œ๋„ŒํŠธ ๋™๊ธฐํ™”(๋ฐ˜์ž…): Relay Worker(๊ณ ๊ฐ์‚ฌ DMZ) โ†’ Route 53(sync-dev.edgesignal.dev) โ†’ Internet Gateway โ†’ Tenant Sync์šฉ ALB โ†’ Tenant Sync Service โ†’ Cache/RDS
  2. ์Šˆํผ ์–ด๋“œ๋ฏผ ์ฝ˜์†”: Super Admin โ†’ CloudFront(admin-dev.edgesignal.dev) ๋‹จ์ผ ์ง„์ž… โ€” ์ •์  UI ์ž์‚ฐ์€ S3, /api/* ๋Š” CloudFront ๊ฐ€ Super Admin Console์šฉ ALB(admin-api-dev.edgesignal.dev) ์˜ค๋ฆฌ์ง„์œผ๋กœ ํ”„๋ก์‹œ(same-origin ์„ธ์…˜ ์ฟ ํ‚ค, ALPHA-615) โ†’ Super Admin Console Service. ALB ์ง์ ‘ ํ˜ธ์ถœ ๊ฒฝ๋กœ๋„ ์œ ํšจํ•˜๋‹ค(ํ˜ธ์ŠคํŠธ 1:1์€ ์œ ์ง€ โ€” ADR-0034)
  3. ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ: EventBridge โ†’ Step Functions โ†’ ECS Task (raw โ†’ ์ •์ œ โ†’ feature) โ†’ S3 / RDS
  4. ์„ค๋ช… ์ƒ์„ฑ: ๋ถ„๋ด‰ ํŠธ๋ฆฌ๊ฑฐ SQS โ†’ ํ ์†Œ๋น„ ECS ์„œ๋น„์Šค(analysis-engine-v2) โ†’ ๋ถ„์„ SFN โ†’ S3 / RDS โ€” ํŒŒ์ดํ”„๋ผ์ธ SFN ํŽ˜์ด์ฆˆ๊ฐ€ ์•„๋‹ˆ๋ผ ํ ์†Œ๋น„์ž๋‹ค(ALPHA-806)

โš ๏ธ ๋ฐฉํ™”๋ฒฝ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธยท์ธ์ฆ์„œ๋Š” ๊ฐ ์„œ๋น„์Šค FQDN ๊ธฐ์ค€์ด์–ด์•ผ ํ•ด๋‹น ALB์— ๋„๋‹ฌํ•œ๋‹ค โ€” apex edgesignal.dev๋กœ๋Š” sync ALB์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ๋‹ค (../adr/0034 ํ˜ธ์ŠคํŠธ 1:1).

ํŠน์ง• ์š”์•ฝ

  1. ํด๋Ÿฌ์Šคํ„ฐ ๋ถ„๋ฆฌ โ€” ์ƒ์‹œ ์„œ๋น™(ECS ์„œ๋น„์Šค)๊ณผ ๋ฐฐ์น˜ ํŒŒ์ดํ”„๋ผ์ธ(Step Functions RunTask)์„ ๋ณ„๋„ ECS ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์šด์˜
  2. ๋ฉ€ํ‹ฐ AZ ์ด์ค‘ํ™” โ€” ์„œ๋ธŒ๋„ท 3๊ณ„์ธต ร— 2 AZ, RDS Primary/Standby, ElastiCache Primary/Replica
  3. ์•„์›ƒ๋ฐ”์šด๋“œ ์ „์šฉ ํ…Œ๋„ŒํŠธ ์—ฐ๋™ โ€” ๊ณ ๊ฐ์‚ฌ์—์„œ ํด๋ผ์šฐ๋“œ๋กœ์˜ pull๋งŒ ์กด์žฌ, ํด๋ผ์šฐ๋“œ์—์„œ ๊ณ ๊ฐ์‚ฌ๋กœ์˜ inbound ์—†์Œ
  4. ํ”„๋ผ์ด๋น— ๊ฒฉ๋ฆฌ โ€” ์•ฑยท๋ฐ์ดํ„ฐ ๊ณ„์ธต์€ ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ๋‘๊ณ  NAT gateway๋กœ๋งŒ ์•„์›ƒ๋ฐ”์šด๋“œ
  5. ALB ์šฉ๋„๋ณ„ ๋ถ„๋ฆฌ โ€” ํ…Œ๋„ŒํŠธ ๋™๊ธฐํ™” ํŠธ๋ž˜ํ”ฝ(Tenant Sync)๊ณผ ์šด์˜ ์ฝ˜์†” ํŠธ๋ž˜ํ”ฝ(Super Admin Console)์ด ๋ณ„๋„ ALB๋ฅผ ์‚ฌ์šฉํ•ด ์ง„์ž… ๊ฒฝ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ