SLA 및 High Availability 경계
이 문서는 six-VM fully offline deployment에 적용됩니다. 구성은 application / Swarm node 3대, PostgreSQL HA node 2대, witness node 1대입니다.
Architecture Baseline
섹션 제목: “Architecture Baseline”| Layer | Current Design | High Availability Boundary |
|---|---|---|
| Application runtime | Enterprise New compose는 고정된 tier0_app_active_node에서 실행됩니다. |
backend, redis, EMQX, SourceFlow, EventFlow, Marimo, OPC UA Server는 아직 automatic multi-replica service가 아닙니다. |
| HTTP entry | 3개의 application node가 keepalived APP VIP + HAProxy를 실행합니다. | VIP는 float할 수 있습니다. HAProxy는 8088/TCP의 active node로 forward하고 /healthz를 check합니다. |
| MQTT / OPC UA | EMQX는 1883/8883/8083/8084를 사용하고 OPC UA는 4840을 사용합니다. |
이들은 active node에 직접 연결됩니다. TCP VIP proxying에 포함되지 않으므로 protocol-entry HA는 약속하지 않습니다. |
| Database | PostgreSQL / TimescaleDB streaming replication + repmgr + witness + DB VIP. | primary 장애 시 standby를 자동 promote할 수 있습니다. asynchronous replication은 strict zero RPO를 약속할 수 없습니다. |
| Backup and restore | backup-db.sh / restore-db.sh. |
recoverability를 제공하지만 online HA와 동일하지는 않습니다. |
권장 SLA
섹션 제목: “권장 SLA”| Service Object | Recommended Statement | Constraints |
|---|---|---|
| Platform HTTP entry | monthly availability 99.5%부터 시작합니다. |
VIP failover는 active application node의 automatic migration과 같지 않습니다. |
| Database access | 운영 목표: RTO <= 2 minutes. |
RPO는 replication lag에 따라 달라집니다. 같은 architecture의 과거 failover test는 약 59-64초였습니다. |
| MQTT / OPC UA | 현재 설계에서는 HA SLA를 약속하지 않습니다. | HAProxy TCP proxying, 별도 VIP 또는 service clustering을 먼저 추가해야 합니다. |
| Backup and restore | Daily backup, major change 전 mandatory backup. | restore time은 data volume과 on-site I/O에 따라 달라집니다. |
99.9% 이상을 주장하기 전에 application automatic migration 또는 multi-replica deployment, protocol-entry HA, monitoring alert, recovery drill을 완료하세요. 계획된 capability를 이미 제공된 capability처럼 설명하지 마세요.
Acceptance Gates
섹션 제목: “Acceptance Gates”각 deployment 또는 upgrade는 최소한 다음 조건을 만족해야 합니다.
verify-materials.sh가 통과하고 delivery package SHA256 check가 통과합니다.- 3개의 Swarm node가
Ready입니다. APP VIP /healthz와/readyz가200을 반환하며 home page와/uns에 접근할 수 있습니다.- active node의 7개 compose service가 실행 중입니다.
DB VIP:5432에 접근할 수 있으며 primary, standby, witness topology가 정상입니다.- default account가 실제로 login할 수 있습니다. IAM initialization 성공 여부를 port, container, HTTP 200 response만으로 판단하지 마세요.
- HTTP, EMQX port, WebSocket/WSS, OPC UA TCP smoke check가 통과합니다.
Inspection 및 Alert
섹션 제목: “Inspection 및 Alert”매일 아래 command를 실행합니다.
./bin/verify.sh --site config/site.conf./bin/smoke-business-emqx.sh --site config/site.conf최소한 다음 alert를 설정합니다.
- APP VIP
/healthz또는/readyzfailure. - DB VIP unreachable, no primary, split-brain risk, replication interruption 또는 threshold 초과 replication lag.
- keepalived, HAProxy, PostgreSQL, repmgrd abnormal status.
backend,redis,EMQX같은 key container가 exit하거나 자주 restart됩니다.- data disk usage가
80% / 90%를 초과합니다. - 최신 backup이 실패했거나 생성되지 않았습니다.
Drill 요구사항
섹션 제목: “Drill 요구사항”| Drill | Frequency | Verification Criteria |
|---|---|---|
| APP VIP failover | 납품 전 및 분기별 | 현재 VIP node에서 keepalived를 중지한 뒤 /healthz와 /readyz가 복구됩니다. |
| DB primary failure | 납품 전 및 6개월마다 | standby가 promote되고 DB VIP가 복구되며 old primary가 standby로 rebuild됩니다. |
| Database restore | monthly sample 및 major change 전 | backup이 restore 가능합니다. restore 후 verify, smoke check, login verification이 통과합니다. |
| Material verification | package build마다 | source material, package SHA, unpacking verification이 통과합니다. |
Incident Handling Principles
섹션 제목: “Incident Handling Principles”- 먼저 impact scope를 확인합니다: HTTP, MQTT, OPC UA, database, single-node impact.
- VIP, HAProxy, active application, database primary 복구를 우선합니다.
- log, data directory, backup을 보존합니다. incident site를 직접 clean하거나 overwrite하지 마세요.
- database incident에서는 현재 primary를 먼저 확인한 뒤 failover, rejoin, restore 중 무엇을 할지 결정합니다.
- recovery 후
verify, smoke check, 실제 login verification을 실행합니다.
High-SLA Hardening Items
섹션 제목: “High-SLA Hardening Items”- application을 multi-replica로 만들거나 active node의 검증 가능한 automatic migration process를 구축합니다.
- EMQX를 cluster화하거나 dedicated VIP가 있는 HAProxy TCP / TLS를 통해 routing합니다.
- OPC UA에 대해 HAProxy TCP, dedicated VIP 또는 service clustering 기반 high-availability entry를 제공합니다.
- PostgreSQL synchronous replication을 사용하거나 허용 가능한 replication lag와 RPO를 명확히 정의합니다.
- backup scheduling, off-site replication, 정기 restore drill을 자동화합니다.
- container, host, database, log, black-box probe를 unified alerting에 연결합니다.
관련 절차: 운영 Runbook 및 표준 Port 목록.