[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
+148 -105
View File
@@ -2,131 +2,174 @@
id: wiki-2026-0508-sequence-diagram
title: Sequence Diagram
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: []
aliases: [UML Sequence Diagram, Mermaid Sequence, PlantUML Sequence]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [auto-wikified, technical-documentation]
confidence_score: 0.9
verification_status: applied
tags: [uml, diagramming, documentation, architecture]
raw_sources: []
last_reinforced: 2026-05-08
last_reinforced: 2026-05-10
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: unspecified
framework: unspecified
language: text
framework: Mermaid / PlantUML
---
# Sequence Diagram
## 📌 Brief 임무
시퀀스 다이어그램(Sequence Diagram)은 특정 유즈케이스에 대해 시간이 지남에 따라 시스템의 컴포넌트들이 상호작용하는 방식을 시각적으로 보여주는 다이어그램입니다 [1]. 객체 간의 상호작용을 명확히 표현하는 UML(Unified Modeling Language)의 표준화된 시각적 언어 중 하나입니다 [2]. 주로 복잡한 워크플로우를 문서화하거나, API를 설계하고, 분산 시스템을 디버깅하는 데 활용됩니다 [1].
## 매 한 줄
> **"매 시간 축으로 actor 간 message 주고받음 시각화"**. 매 UML 의 dynamic behavior 다이어그램, 매 distributed system / API 흐름 / agent loop 설명에 매 standard. 매 2026: AI agent 가 code → diagram 자동 생성 (Claude, Mermaid Chart, Eraser AI), 매 text-as-code (Mermaid) 가 GUI tool 보다 dominant.
## 📖 구조화된 지식 (Synthesized Content)
* **핵심 구성 요소**: 시퀀스 다이어그램은 액터(Actors) 및 컴포넌트, 이들 간에 주고받는 메시지, 위에서 아래로 흐르는 시간의 흐름(Time flow), 그리고 반환 값(Return values)으로 구성됩니다 [1].
* **시스템 설계 및 모델링에서의 역할**:
* 아키텍처 내에서 컴포넌트 전반의 상호작용을 설명하고, 각 라이프라인(lifelines) 간의 모든 통신이 제대로 지원되는 관계를 맺고 있는지 확인하는 데 사용됩니다 [3].
* 대안적(alternative) 및 병렬(parallels) 상호작용, 루프(loops) 등의 세부 정보를 포함할 수 있어 상세 설계(detailed designs)에 매우 자주 사용됩니다 [3].
* 외부 시스템 관점, 정적 뷰, 프로세스 뷰 등과 함께 비즈니스 유즈케이스 시나리오의 내부 동작을 모델링하고 파악하는 데 널리 활용됩니다 [4, 5].
* **실무적 활용**: API를 정의하는 데 유용할 뿐만 아니라 단위(Unit), 통합(Integration) 및 시스템 테스트 정의를 위한 핵심 기초 자료로 기능합니다 [3]. 최근에는 Greptile과 같은 AI 코드 분석 도구가 아키텍처 맥락을 파악할 수 있도록 상세한 시퀀스 다이어그램을 자동으로 생성하여 제공하기도 합니다 [6].
* **가독성 향상 기법**: 훌륭한 시퀀스 다이어그램은 시청자를 올바르게 안내해야 하며, 이를 위해 다이어그램의 각 단계에 번호를 매기는 방식이 권장됩니다 [7].
## 매 핵심
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
시퀀스 다이어그램에 대안적 상호작용, 병렬 상호작용, 루프 등의 세부적인 실행 흐름을 모두 포함하여 상세 설계를 할 수 있지만 [3], 지나치게 방대한 내용을 담을 경우 시청자의 이해를 돕기 위해 단계에 번호를 매기는 등의 시각적 가이드가 필수적으로 요구됩니다 [7].
이 외에 시퀀스 다이어그램 자체의 기술적 부작용이나 최적화 시 발생할 수 있는 구체적인 반대 급부(Trade-off) 및 제약 사항에 대해서는 소스에 관련 정보가 부족합니다.
### 매 element
- **Lifeline**: 매 actor / object 의 vertical line.
- **Message**: 매 horizontal arrow (sync solid, async dashed, return dotted).
- **Activation bar**: 매 처리 중 vertical bar.
- **Combined fragment**: alt / opt / loop / par / critical.
- **Note**: 매 inline annotation.
## 🔗 지식 연결 (Graph)
### Related Concepts
### 매 vs 다른 다이어그램
- **Flowchart**: control flow, no actors. 매 single perspective.
- **Activity diagram**: state machine 비슷, branching 강조.
- **Component diagram**: static structure.
- **Sequence**: 매 dynamic interaction over time — "누가 누구에게 언제".
#### [아키텍처 및 시스템 모델링]
- [[UML (Unified Modeling Language)]]
- 연결 이유: 시퀀스 다이어그램은 엔지니어 간의 표준화된 시각적 언어인 UML에 속하는 핵심 다이어그램입니다 [2, 4, 5].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: UML 프레임워크 내에서 시퀀스 다이어그램이 어떻게 상태(Statechart)나 통신(Communication) 다이어그램과 연계되어 시스템을 모델링하는지 이해할 수 있습니다 [4, 5].
- [[Class Diagram]]
- 연결 이유: 시퀀스 다이어그램이 객체 간의 '동적 상호작용'을 나타낸다면, 클래스 다이어그램은 시스템의 '정적 구조'를 명확히 표현하여 상호 보완적인 역할을 합니다 [2].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 정적 구조와 동적 흐름을 결합하여 복잡한 코드베이스의 아키텍처를 입체적으로 분석하는 방법을 배울 수 있습니다 [2, 5].
### 매 응용
1. API contract docs (REST/gRPC handshake).
2. Auth flow (OAuth, OIDC, SAML).
3. Distributed transaction (saga, 2PC).
4. AI agent loop (user → LLM → tool → LLM → user).
5. Bug reproduction trace.
6. Onboarding 신입 — 매 system overview.
#### [개발 및 분석 프로세스]
- [[API Design]]
- 연결 이유: 시퀀스 다이어그램은 API 설계 및 정의를 문서화하고 시각화하는 데 주요하게 활용됩니다 [1, 3].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 컴포넌트 간 통신 규약과 데이터 응답/요청 흐름을 명확하게 정의하는 절차를 이해할 수 있습니다.
- [[Distributed Systems]]
- 연결 이유: 분산 시스템 아키텍처의 디버깅과 복잡한 워크플로우를 문서화할 때 시퀀스 다이어그램이 핵심적으로 사용됩니다 [1].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 다수의 독립된 서비스나 노드들이 시간에 따라 어떻게 메시지를 주고받으며 협력하는지 추적하는 방법을 학습할 수 있습니다.
## 💻 패턴
### Deeper Research Questions
- 시퀀스 다이어그램에 표현되는 대안적(alternative) 및 병렬(parallels) 상호작용, 루프(loops)를 실제 복잡한 코드베이스의 제어 흐름과 매핑하는 가장 효과적인 방법은 무엇인가? [3]
- 분산 시스템에서 발생하는 버그를 디버깅할 때, 시퀀스 다이어그램의 컴포넌트 간 메시지 흐름을 어떻게 활용하여 문제의 근본 원인(Root cause)을 빠르게 좁힐 수 있는가? [1]
- Greptile과 같은 AI 도구를 사용하여 자동 생성된 시퀀스 다이어그램이 레거시 코드베이스의 아키텍처적 맥락을 파악하는 데 제공하는 정확도와 실효성은 어느 정도인가? [6]
- 시퀀스 다이어그램의 메시지 흐름을 기반으로 단위(Unit), 통합(Integration), 시스템 테스트를 도출하고 설계하는 구체적인 실무적 절차는 어떻게 되는가? [3]
- UML 클래스 다이어그램(정적 구조)과 시퀀스 다이어그램(동적 상호작용)을 병행하여 대규모 시스템의 코드베이스 오리엔테이션 맵을 구성할 때 인지적 부하를 최소화하는 전략은 무엇인가? [2]
### Practical Application Contexts
- **Implementation:** 복잡한 워크플로우 코드를 작성하기 전, 액터와 컴포넌트 간에 주고받는 메시지, 반환 값, 시간의 흐름을 시퀀스 다이어그램으로 구체화하여 구현 지침으로 삼을 수 있습니다 [1].
- **System Design:** 아키텍처의 라이프라인(lifelines) 간의 모든 통신이 적절한 관계를 맺고 있는지 검증하고, 상세 설계 시 조건부 분기나 반복문(loops)을 표현하여 API 사양을 설계하는 데 적용할 수 있습니다 [3].
- **Operation / Maintenance:** 분산 시스템의 트러블슈팅 시, 시퀀스 다이어그램을 활용하여 각 컴포넌트가 의도된 시간과 순서대로 메시지를 전달하는지 확인하고 결함이 발생한 지점을 추적할 수 있습니다 [1].
- **Learning Path:** 새로운 대규모 코드베이스에 온보딩할 때, 시스템의 특정 유즈케이스 시나리오와 실행 흐름을 파악하기 위해 AI 도구가 추출한 시퀀스 다이어그램을 아키텍처 맥락 지도로 활용할 수 있습니다 [4, 6].
- **My Project Relevance:** 개발된 기능의 품질을 보증하기 위해, 시퀀스 다이어그램에 정의된 상호작용을 기초 자료로 삼아 빠짐없는 단위 테스트 및 통합 테스트 케이스를 구축할 수 있습니다 [3].
### Adjacent Topics
- [[Data Flow Diagram]]
- 확장 방향: 시퀀스 다이어그램이 시간에 따른 컴포넌트 상호작용에 집중한다면, 데이터 흐름 다이어그램은 데이터가 시스템을 어떻게 통과하고 변환되는지 보여주므로 두 다이어그램을 함께 활용하여 시스템의 동적 분석을 확장할 수 있습니다 [8].
- [[C4 Model]]
- 확장 방향: C4 모델은 아키텍처를 컨텍스트, 컨테이너, 컴포넌트, 코드 등 4가지 추상화 수준으로 계층화하는 모델입니다. 시퀀스 다이어그램을 C4 모델의 하위 컴포넌트 혹은 코드 수준 다이어그램과 결합하여 동적 뷰를 확장하는 데 활용할 수 있습니다 [9].
---
*Last updated: 2026-05-02*
## 📌 한 줄 통찰 (The Karpathy Summary)
> *(TODO: 한 문장으로 핵심 통찰을 작성. "X는 Y 조건에서 Z 효과를 낸다" 구조 권장.)*
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
**언제 쓰면 안 되는가:**
- *(TODO)*
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 💻 코드 패턴 (Code Patterns)
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
```text
# TODO
### Mermaid basic
```mermaid
sequenceDiagram
participant U as User
participant A as App
participant DB
U->>A: GET /profile
A->>DB: SELECT * FROM users
DB-->>A: row
A-->>U: 200 OK (json)
```
## 🤔 의사결정 기준 (Decision Criteria)
### Mermaid with alt/loop
```mermaid
sequenceDiagram
actor User
participant API
participant LLM
User->>API: question
loop until done
API->>LLM: prompt
LLM-->>API: tool_call
alt tool == search
API->>SearchAPI: query
SearchAPI-->>API: results
else tool == done
API-->>User: final answer
end
end
```
**선택 A를 써야 할 때:**
- *(TODO)*
### PlantUML
```plantuml
@startuml
actor Client
participant "Auth Service" as Auth
participant "Resource API" as API
Client -> Auth: POST /token (creds)
activate Auth
Auth --> Client: JWT
deactivate Auth
Client -> API: GET /data (Bearer JWT)
API -> API: verify JWT
API --> Client: 200 data
@enduml
```
**선택 B를 써야 할 때:**
- *(TODO)*
### Generate from code (Claude)
```python
import anthropic
c = anthropic.Anthropic()
diagram = c.messages.create(
model="claude-opus-4-7",
max_tokens=2048,
messages=[{
"role": "user",
"content": f"Generate a Mermaid sequenceDiagram from this code:\n```python\n{src}\n```",
}],
).content[0].text
```
**기본값:**
> *(TODO)*
### Embed in MkDocs / GitHub README
````markdown
```mermaid
sequenceDiagram
A->>B: ping
B-->>A: pong
```
````
## ❌ 안티패턴 (Anti-Patterns)
### Mermaid CLI render
```bash
npx -p @mermaid-js/mermaid-cli mmdc -i flow.mmd -o flow.svg -t dark
```
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
### OAuth 2.0 PKCE 매 example
```mermaid
sequenceDiagram
participant App
participant Browser
participant Auth as AuthServer
App->>Browser: redirect /authorize?code_challenge
Browser->>Auth: login
Auth-->>Browser: redirect ?code=
Browser->>App: code
App->>Auth: POST /token (code, code_verifier)
Auth-->>App: access_token
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| README / GitHub / Notion | Mermaid (native render) |
| Detailed UML (combined fragments) | PlantUML |
| Whiteboard 빠르게 | Excalidraw |
| Auto-from-code | Claude / Eraser AI |
| Live trace | OpenTelemetry → Jaeger trace view |
**기본값**: Mermaid in markdown.
## 🔗 Graph
- 부모: [[UML]] · [[System-Documentation]]
- 변형: [[Activity-Diagram]] · [[Flowchart]] · [[Component-Diagram]]
- 응용: [[API-Documentation]] · [[Architecture-Decision-Records]]
- Adjacent: [[Mermaid]] · [[PlantUML]] · [[Distributed-Tracing]]
## 🤖 LLM 활용
**언제**: code/log → diagram 자동화, refactor 후 docs 갱신, agent flow 설명.
**언제 X**: 매 매우 복잡한 system — 단일 sequence diagram 으로 부족, 매 break down.
## ❌ 안티패턴
- **너무 많은 lifeline (>7)**: 매 cognitive overload — split.
- **모든 detail 포함**: 매 high-level abstraction 우선.
- **Static structure 표현**: 매 잘못된 diagram type — component diagram 사용.
- **Out of date**: code 와 sync 안 됨 → CI 에서 lint.
## 🧪 검증 / 중복
- Verified (UML 2.5 spec, Mermaid docs, PlantUML docs).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — Mermaid + AI gen 2026 |