You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
***스키마 변경 없는 확장**: 만약 새로운 Task에 `timeout`이라는 파라미터가 추가되더라도, DB 스키마를 변경(`ALTER TABLE`)할 필요 없이 `parameters` JSON의 내용만 수정하면 됩니다. 이는 잦은 변경과 확장이 예상되는 플랫폼에서 **변경에 대한 유연성**을 극대화합니다.
73
+
***Task의 재사용성 증대**: `TASK`는 순수한 '템플릿'으로 존재하고, 실제 동작에 필요한 구체적인 값은 `WORKFLOW`의 `default_config`를 통해 주입됩니다. 이 덕분에 동일한 '키워드 검색 태스크'를 A 워크플로우에서는 `naver`로, B 워크플로우에서는 `google_trends`로 **재배포 없이** 다르게 동작시킬 수 있어 **Task의 재사용성**이 크게 향상됩니다.
74
+
***구조적 데이터 저장**: 단순 `TEXT` 타입과 달리, Key-Value 형태의 구조적인 데이터를 저장할 수 있어 애플리케이션에서 데이터를 파싱하고 사용하기 용이합니다.
75
+
76
+
#### **3. 기타 설계 원칙**
77
+
78
+
***네이밍 컨벤션**: 일관성을 위해 테이블 이름은 **단수형**(`user`, `workflow`)으로, PK는 `[table_name]_id` 형식(`workflow_id`)으로 통일했습니다.
79
+
***외래 키(FK) 제약 조건 미설정**: 물리적인 FK 제약 대신 **애플리케이션 레이어에서 참조 무결성을 보장**하여, 데이터 마이그레이션과 배포 유연성을 확보했습니다.
80
+
***인조키(Surrogate Key) 사용**: 다대다 관계의 중간 테이블에도 독립적인 인조키를 PK로 사용하여 **JOIN 성능을 향상**시키고 유지보수성을 높였습니다.
81
+
82
+
---
83
+
84
+
## 4. 시스템 아키텍처
40
85
41
86
역할과 책임을 명확히 분리하기 위해 `Spring Boot`가 **Orchestrator**, `FastAPI`가 **Worker** 역할을 수행하는 이중 레이어 아키텍처를 채택했습니다.
42
87
@@ -48,7 +93,7 @@
48
93
49
94
---
50
95
51
-
## 4. 유스케이스 다이어그램
96
+
## 5. 유스케이스 다이어그램
52
97
53
98
시스템의 주요 액터는 **관리자(Admin)** 와 **스케줄러(Scheduler)** 입니다.
54
99
관리자는 워크플로우와 스케줄을 관리하고 수동 실행이 가능하며, 스케줄러는 자동 실행을 담당합니다.
@@ -57,9 +102,9 @@
57
102
58
103
---
59
104
60
-
## 5. 시퀀스 다이어그램
105
+
## 6. 시퀀스 다이어그램
61
106
62
-
### 5.1. 워크플로우 실행 흐름 (스케줄/수동)
107
+
### 6.1. 워크플로우 실행 흐름 (스케줄/수동)
63
108
64
109
1.**트리거**: Quartz 스케줄러 또는 사용자의 `POST /v0/workflows/{id}/run` 요청으로 워크플로우 실행 시작
65
110
2.**비동기 실행**: `WorkflowController`가 `WorkflowExecutionService`를 `@Async`로 호출하고 즉시 `202 Accepted` 응답
@@ -69,13 +114,13 @@
69
114
70
115
#### 수동 실행
71
116
72
-
.png)
117
+
.png)
73
118
74
119
#### 스케줄 실행
75
120
76
-
.png)
121
+
.png)
77
122
78
-
### 5.2. CI/CD 파이프라인
123
+
### 6.2. CI/CD 파이프라인
79
124
80
125
GitHub Actions 기반으로 빌드 → 테스트 → Docker 빌드 및 푸시 → EC2 배포까지 자동화되어 있습니다.
81
126
@@ -86,7 +131,7 @@ GitHub Actions 기반으로 빌드 → 테스트 → Docker 빌드 및 푸시
86
131
87
132
---
88
133
89
-
## 6. 기술 스택
134
+
## 7. 기술 스택
90
135
91
136
### Backend (Orchestrator - `user-service`)
92
137
@@ -119,7 +164,7 @@ GitHub Actions 기반으로 빌드 → 테스트 → Docker 빌드 및 푸시
119
164
120
165
---
121
166
122
-
## 7. 주요 구성 요소 및 역할
167
+
## 8. 주요 구성 요소 및 역할
123
168
124
169
***WorkflowExecutionService**: 워크플로우 전체 실행 흐름 제어
125
170
***TaskExecutionService**: Task 실행 및 재시도 정책 관리
@@ -130,7 +175,7 @@ GitHub Actions 기반으로 빌드 → 테스트 → Docker 빌드 및 푸시
0 commit comments