-
Notifications
You must be signed in to change notification settings - Fork 0
architecture control data plane
Aegis-Pi는 배포/운영 제어, telemetry 수집, 사용자 API, 실시간 push를 서로 다른 경로로 분리한다.
| 구분 | 담당 | 통과 경로 | 직접 접근 금지 |
|---|---|---|---|
| 제어 플레인 | 배포, rollback, Spoke 등록 | GitHub Actions -> ECR -> Hub ArgoCD -> Tailscale -> K3s API | Dashboard Backend가 ArgoCD/K3s/EKS/Tailscale API를 직접 읽지 않음 |
| 데이터 플레인 | telemetry 수집, 정규화, risk/read model | Edge outbox -> IoT Core -> Lambda data processor -> DynamoDB/S3 | 배포 경로가 telemetry 수집을 운반하지 않음 |
| 사용자/API 플레인 | SPA, 인증, REST API, WebSocket | Browser -> Cognito/CloudFront/ALB/ECS | 사용자가 Tailscale 또는 Hub EKS에 접속하지 않음 |
| Push 플레인 | 상태 변경 fan-out | DynamoDB Streams -> notifier -> Redis -> WebSocket | 브라우저가 DynamoDB Streams나 Redis에 직접 붙지 않음 |
Control / Management VPC와 Data / Dashboard VPC 사이에는 VPC peering, Transit Gateway, 사설 라우팅을 두지 않는다. 공유해야 할 상태는 DynamoDB, S3, CloudWatch 같은 managed/global service의 IAM 권한으로 전달한다.
Developer / Operator
-> GitHub Repository
-> GitHub Actions
- test
- image build
- ECR push
- manifest / Helm values update
-> Amazon ECR
-> Hub ArgoCD (Control / Management VPC, EKS)
-> Tailscale Connector / Operator
-> factory-a K3s API
-> factory-b K3s API
-> factory-c K3s API
-> workload rollout
이 경로는 배포 상태를 관리한다. MQTT 데이터 수집과 Dashboard 사용자 API는 이 경로에 의존하지 않는다. Hub 또는 Tailscale 장애가 발생하면 신규 sync/rollback은 중단되지만, 이미 실행 중인 K3s Pod, Longhorn, InfluxDB, edge workload는 계속 동작한다.
| Factory | 성격 | Sync 정책 |
|---|---|---|
factory-a |
운영형 Raspberry Pi Spoke | manual sync 우선, prune/self-heal 보수적 |
factory-b |
Mac mini VM 테스트베드 | 자동 sync 허용 가능 |
factory-c |
Windows VM 테스트베드 | 자동 sync 허용 가능 |
factory-a Safe-Edge workload
-> InfluxDB / Kubernetes API / local outbox
-> factory-a-log-adapter
-> edge-iot-publisher
-> MQTT mTLS over Public Internet
-> AWS IoT Core / Rules
-> Lambda data processor
-> DynamoDB
- LATEST
- HISTORY#STATE
- GRAPH#5M
- CLOUD#infra
-> S3
- raw/
- processed/
- processed_agg/
- reports/
factory-b/c VM 테스트베드
-> dummy-data-generator
-> edge-iot-publisher
-> MQTT mTLS over Public Internet
-> AWS IoT Core / Rules
-> 동일한 data processor와 read model
Tailscale은 이 경로에 포함되지 않는다. MQTT는 AWS IoT Core 공개 ATS endpoint와 X.509 인증서를 사용한다. Factory별 분리는 topic과 S3 prefix, DynamoDB key의 factory_id로 수행한다.
Browser
-> Route 53 DNS
-> CloudFront (+ WAF/IP 제한은 선택·계획 구성)
-> S3 SPA dashboard-web
-> Cognito Hosted UI
-> ALB HTTPS api.<도메인>
-> ECS Fargate Backend
-> DynamoDB / S3 / RDS PostgreSQL / Redis
Backend는 Cognito JWT를 검증하고, RDS PostgreSQL의 사용자/공장 권한 메타데이터로 응답 범위를 제한한다.
대표 read path는 아래와 같다.
| 화면 / API | Read source |
|---|---|
| 공장 latest | DynamoDB LATEST
|
| 공장 history | DynamoDB HISTORY#STATE
|
| 장기 그래프 | DynamoDB GRAPH#5M
|
| 일간 보고서 | S3 reports/daily/
|
| Cloud infra | DynamoDB CLOUD#infra
|
| 사용자/RBAC | RDS PostgreSQL |
| 캐시 | ElastiCache Redis |
Dashboard Backend는 Spoke K3s API, Hub EKS API, ArgoCD API, Tailscale Admin API를 직접 조회하지 않는다. CloudInfraSlowCollector가 EKS/ArgoCD/S3 freshness를 읽는 경우도 Hub namespace workload가 아니라 외부 Lambda가 제한된 권한으로 read model을 갱신하는 경로다.
Lambda data processor
-> DynamoDB item write
-> DynamoDB Streams
-> Lambda notifier (Data / Dashboard VPC attach)
-> ElastiCache Redis Pub/Sub
-> ECS Fargate Backend
-> WebSocket /ws/factories/{factory_id}
-> Browser state update
WebSocket은 상태 변경을 빠르게 반영하기 위한 push 경로다. 연결 실패 시 Dashboard는 REST polling으로 degrade할 수 있다. Redis는 브라우저가 직접 접근하는 저장소가 아니라 ECS task 간 fan-out과 cache-aside 용도다.
| 도구 | 담당 |
|---|---|
| Terraform | VPC, subnet, NAT, EKS, IAM/OIDC/IRSA, ECR, IoT Core, Lambda/Scheduler, DynamoDB, S3, Dashboard VPC, ALB, ECS, RDS, Redis, Cognito, CloudFront |
| Ansible | EKS bootstrap, namespace/LimitRange, ArgoCD, Grafana, AWS Load Balancer Controller, Tailscale Operator, 검증 |
| GitHub Actions | test, image build, ECR push, manifest/value update |
| GitHub + ArgoCD | Application/ApplicationSet sync, Spoke workload rollout, runtime drift control |
Terraform은 AWS 인프라의 source of truth이고, 장기 운영 애플리케이션의 Kubernetes 상태는 GitHub + ArgoCD가 담당한다. GitHub Actions는 운영 클러스터에 직접 kubectl apply하지 않는다.
- 시스템 아키텍처
- 제어 & 데이터 플레인
- Dashboard VPC 설계
- 하드웨어 배치
- Hub EKS 네임스페이스
- Tailscale Mesh VPN
- 데이터 생명주기
- 데이터 조회 모델
- 실시간 갱신 구조
- IoT 데이터 계약
- Reporting Pipeline
- 로컬 스토리지
- 클라우드 스토리지
- Edge Agent
- Edge AI 탐지
- Factory-A Log Adapter
- Dummy Sensor
- Edge IoT Publisher
- Lambda Data Processor
- Risk Normalizer
- Risk Score Engine
- Pipeline Status Aggregator
- Graph Aggregator 5m
- Cloud Infra Collector
- Daily Report Generator
- Risk Alert Dispatcher
- Image Snapshot Pipeline
- Dashboard Backend
- Dashboard Web
- AI 채팅 어시스턴트