Skip to content

Commit 7f3cbc1

Browse files
committed
docs: 하드코어 문서를 탄력성 운영 아키텍처로 전환
1 parent b005c84 commit 7f3cbc1

4 files changed

Lines changed: 80 additions & 69 deletions

File tree

docs/v2_FINANCIAL-LEDGER/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ npm run start
9292

9393
### 아키텍처
9494
- [🏗️ 전체 개요](architecture/00-overview.md)
95+
- [🛡️ 탄력성 운영](architecture/03-resilience-operations.md)
9596
- [📁 디렉터리 구조](architecture/04-directory-structure.md)
9697
- [💡 핵심 원칙](architecture/02-core-principles.md)
9798
- [📋 설계 결정](architecture/01-decisions.md)
@@ -211,4 +212,4 @@ npm run start
211212

212213
> "필요해서 만들기 시작했고,<br>
213214
> 혼자 쓰기엔 아까워서 공유합니다.<br>
214-
> 함께 만들어가는 도구가 되길 바랍니다."
215+
> 함께 만들어가는 도구가 되길 바랍니다."

docs/v2_FINANCIAL-LEDGER/architecture/00-overview.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ Plugins (Optional)
3333
> 📖 **디렉터리 구조:**
3434
> `architecture/04-directory-structure.md`
3535
36+
> 📖 **탄력성 운영 아키텍처:**
37+
> `architecture/03-resilience-operations.md`
38+
3639
---
3740

3841
## 배포 아키텍처
@@ -714,6 +717,7 @@ rclone copy backup_$(date +%Y%m%d).tar.gz gdrive:backups/
714717
### 아키텍처
715718
- 📌 `architecture/01-decisions.md` - 핵심 결정 사항
716719
- 📖 `architecture/02-core-principles.md` - 설계 원칙
720+
- 📖 `architecture/03-resilience-operations.md` - 장애 대응/복구 운영
717721
- 📖 `architecture/04-directory-structure.md` - 폴더 구조
718722

719723
### 기술

docs/v2_FINANCIAL-LEDGER/architecture/03-hard-core-architecture.md

Lines changed: 0 additions & 68 deletions
This file was deleted.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
## 📄 시스템 탄력성 운영 아키텍처 (System Resilience Operations)
2+
3+
이 문서는 Fieldstack의 장애 대응 전략을 커널 계층이 아닌 사용자 공간(Ring 3) 기준으로 정의합니다.
4+
본 설계의 목적은 특권 제어가 아니라 서비스 가용성 유지입니다.
5+
6+
---
7+
8+
### 1. 설계 원칙
9+
10+
* **Single Runtime, Clear Recovery:** 애플리케이션은 단일 런타임으로 유지하고 복구 경로를 명확히 합니다.
11+
* **Supervisor First:** 프로세스 생명주기 관리는 `systemd` 같은 OS 서비스 매니저가 담당합니다.
12+
* **Graceful Degradation:** 일부 의존성(DB/API) 장애 시 전체 종료보다 안전 모드로 축소 동작합니다.
13+
* **Operational Transparency:** 장애 감지, 복구 시도, 결과를 로그와 UI 상태로 명확히 노출합니다.
14+
15+
---
16+
17+
### 2. 실행 계층 정의
18+
19+
| 계층 | 역할 | 실행 위치 |
20+
| --- | --- | --- |
21+
| Application Core | 금융 원장 로직, API 처리, 이벤트 기록 | User space (Ring 3) |
22+
| Resilience Layer | 헬스체크, 재시도 정책, 안전 모드 전환, 장애 요약 | User space (Ring 3) |
23+
| Service Supervisor | 프로세스 자동 재시작, 부팅 자동 시작, 시작 제한 정책 | OS 서비스 매니저 (`systemd`) |
24+
25+
> 참고: 본 문서의 탄력성 설계는 커널 드라이버/안티치트 모델과 다른 범주입니다.
26+
27+
---
28+
29+
### 3. 장애 대응 시퀀스
30+
31+
1. **감지:** 앱 내부 헬스체크가 DB/API 타임아웃 또는 하트비트 이상을 감지합니다.
32+
2. **완화:** 재시도, 서킷 브레이커, 읽기 전용/제한 모드로 즉시 전환합니다.
33+
3. **기록:** 실패 원인, 영향 범위, 요청 ID를 구조화 로그로 남깁니다.
34+
4. **복구:** 프로세스 비정상 종료 시 `systemd`가 재시작 정책에 따라 자동 복구합니다.
35+
5. **보고:** `/health` 및 운영 대시보드에 복구 상태를 반영합니다.
36+
37+
---
38+
39+
### 4. 운영 구성 권장안
40+
41+
#### 4.1 `systemd` 서비스 정책
42+
43+
* `Restart=always`
44+
* `RestartSec=3`
45+
* `StartLimitIntervalSec`, `StartLimitBurst`로 재시작 폭주 방지
46+
* 부팅 자동 시작(`systemctl enable`)
47+
48+
#### 4.2 애플리케이션 내부 안정화
49+
50+
* DB/API 호출에 `timeout + retry + circuit breaker`
51+
* 치명적 예외는 즉시 실패하고, 비치명적 예외는 안전 모드로 격리
52+
* 종료 시그널 처리(SIGTERM/SIGINT)로 안전 종료 보장
53+
54+
#### 4.3 관측성
55+
56+
* `/health`를 liveness/readiness 관점으로 분리
57+
* 구조화 로그(JSON)와 장애 이벤트 태깅
58+
* 운영 알림(Webhook/Email) 연동 포인트 정의
59+
60+
---
61+
62+
### 5. 기대 효과
63+
64+
* **단순성:** 과도한 이중 코어 구조 없이 운영 복잡도를 낮춥니다.
65+
* **가용성:** 프로세스 장애 시 자동 복구 경로가 표준화됩니다.
66+
* **명확성:** 보안 계층(Ring 0)과 운영 안정성 계층(Ring 3)을 혼동하지 않습니다.
67+
68+
---
69+
70+
### 6. 향후 과제
71+
72+
* [ ] 장애 등급(critical/major/minor) 기반 복구 정책 세분화
73+
* [ ] 안전 모드에서 허용/차단 API 목록 명세화
74+
* [ ] 복구 리포트 템플릿(원인, 조치, 재발 방지) 표준화

0 commit comments

Comments
 (0)