์๋ณธ:
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) ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
| ๊ตฌ์ญ | ์ปดํฌ๋ํธ |
|---|---|
| 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 (์์๋ฐ์ด๋ ์ ์ฉ)
| ์ปดํฌ๋ํธ | 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๊ฐ ๊ฐ๊ฐ ์กด์ฌ. ๋ค์ด์ด๊ทธ๋จ์์๋ ๊ฐ๋ ์ฑ์ ์ํด ํ๋๋ก ํํํ์ผ๋ ์ค์ ๋ก๋ ๋ ์ |
- 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-pipelineSFN ์ ์๊ฐ SSOT.
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)๋ ๋ฏธ๋ฐฐ์ . ์ ๋ฐฐ๋ ์ฐธ์กฐ.
- ํ
๋ํธ ๋๊ธฐํ(๋ฐ์
): Relay Worker(๊ณ ๊ฐ์ฌ DMZ) โ Route 53(
sync-dev.edgesignal.dev) โ Internet Gateway โ Tenant Sync์ฉ ALB โ Tenant Sync Service โ Cache/RDS - ์ํผ ์ด๋๋ฏผ ์ฝ์: 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) - ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ: EventBridge โ Step Functions โ ECS Task (raw โ ์ ์ โ feature) โ S3 / RDS
- ์ค๋ช ์์ฑ: ๋ถ๋ด ํธ๋ฆฌ๊ฑฐ SQS โ ํ ์๋น ECS ์๋น์ค(analysis-engine-v2) โ ๋ถ์ SFN โ S3 / RDS โ ํ์ดํ๋ผ์ธ SFN ํ์ด์ฆ๊ฐ ์๋๋ผ ํ ์๋น์๋ค(ALPHA-806)
โ ๏ธ ๋ฐฉํ๋ฒฝ ํ์ดํธ๋ฆฌ์คํธยท์ธ์ฆ์๋ ๊ฐ ์๋น์ค FQDN ๊ธฐ์ค์ด์ด์ผ ํด๋น ALB์ ๋๋ฌํ๋ค โ apexedgesignal.dev๋ก๋ sync ALB์ ๋๋ฌํ์ง ๋ชปํ๋ค (../adr/0034 ํธ์คํธ 1:1).
- ํด๋ฌ์คํฐ ๋ถ๋ฆฌ โ ์์ ์๋น(ECS ์๋น์ค)๊ณผ ๋ฐฐ์น ํ์ดํ๋ผ์ธ(Step Functions RunTask)์ ๋ณ๋ ECS ํด๋ฌ์คํฐ๋ก ์ด์
- ๋ฉํฐ AZ ์ด์คํ โ ์๋ธ๋ท 3๊ณ์ธต ร 2 AZ, RDS Primary/Standby, ElastiCache Primary/Replica
- ์์๋ฐ์ด๋ ์ ์ฉ ํ ๋ํธ ์ฐ๋ โ ๊ณ ๊ฐ์ฌ์์ ํด๋ผ์ฐ๋๋ก์ pull๋ง ์กด์ฌ, ํด๋ผ์ฐ๋์์ ๊ณ ๊ฐ์ฌ๋ก์ inbound ์์
- ํ๋ผ์ด๋น ๊ฒฉ๋ฆฌ โ ์ฑยท๋ฐ์ดํฐ ๊ณ์ธต์ ํ๋ผ์ด๋น ์๋ธ๋ท์ ๋๊ณ NAT gateway๋ก๋ง ์์๋ฐ์ด๋
- ALB ์ฉ๋๋ณ ๋ถ๋ฆฌ โ ํ ๋ํธ ๋๊ธฐํ ํธ๋ํฝ(Tenant Sync)๊ณผ ์ด์ ์ฝ์ ํธ๋ํฝ(Super Admin Console)์ด ๋ณ๋ ALB๋ฅผ ์ฌ์ฉํด ์ง์ ๊ฒฝ๋ก๋ถํฐ ๋ถ๋ฆฌ