[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,124 +2,190 @@
|
||||
id: wiki-2026-0508-integration-architecture-diagram
|
||||
title: Integration Architecture Diagrams
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Integration Diagrams, System Integration Diagram, Context Diagram]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [auto-wikified, technical-documentation]
|
||||
confidence_score: 0.85
|
||||
verification_status: applied
|
||||
tags: [architecture, diagrams, integration, c4, documentation]
|
||||
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: mermaid
|
||||
framework: c4-plantuml
|
||||
---
|
||||
|
||||
# Integration Architecture Diagrams
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
통합 아키텍처 다이어그램(Integration Architecture Diagrams)은 다양한 시스템 구성 요소가 서로 어떻게 상호 작용하는지, 그리고 외부 시스템과는 어떻게 연결되는지에 초점을 맞춘 시각적 아키텍처 문서이다 [1]. 이 다이어그램은 통합에 사용되는 통신 프로토콜과 메서드를 강조하여 보여줌으로써 잠재적인 문제를 쉽게 식별하게 해준다 [1]. 특히 마이크로서비스 아키텍처(Microservices Architecture) 환경에서 서비스 간의 복잡한 상호 작용과 의존성을 매핑하는 데 매우 가치 있는 도구로 활용된다 [1].
|
||||
## 매 한 줄
|
||||
> **"매 system 의 external collaborators (services, APIs, queues, DBs) 의 visual mapping 의 통한 boundary + flow 의 communication"**. 매 Brown 의 C4 model (2018) 의 Context/Container level, 매 ArchiMate 의 application/technology layer, 매 modern 의 diagrams-as-code (Mermaid, Structurizr, D2) 의 dominant.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **통신 및 상호 작용의 시각화:** 통합 아키텍처 다이어그램의 핵심 목적은 시스템 내부의 서로 다른 구성 요소 간 상호작용뿐만 아니라 외부 시스템과의 통신 방식을 명확히 드러내는 것이다 [1].
|
||||
* **원활한 데이터 흐름 보장:** 통합을 위해 사용되는 프로토콜 및 통신 메서드를 다이어그램상에 하이라이트하여 표현한다 [1]. 이를 통해 시스템 전반에 걸친 데이터의 흐름이 매끄럽게 이어지는지 확인할 수 있고, 병목 현상이나 오류 지점을 사전에 파악하여 예방하는 데 도움을 준다 [1].
|
||||
* **마이크로서비스 환경에서의 역할:** 현대의 복잡한 마이크로서비스 아키텍처에서 서비스들은 거미줄처럼 복잡하게 연결되어 있다. 통합 아키텍처 다이어그램은 이러한 서비스 간의 의존성(Dependencies)과 상호작용을 한눈에 파악할 수 있는 지도를 제공하므로, 분산 환경의 시스템을 개발하거나 유지보수할 때 필수적인 역할을 수행한다 [1].
|
||||
* **의사소통 간소화:** 복잡한 통합 포인트를 시각적으로 단순화하여 보여주므로, 개발 팀, 운영 팀, 이해관계자 간의 원활한 의사소통을 지원하고 서로 간의 이해를 일치시킨다 [1].
|
||||
## 매 핵심
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
통합 아키텍처 다이어그램 자체의 고유한 단점보다는 아키텍처 다이어그램을 운용할 때 공통으로 발생하는 부작용과 제약 사항이 소스에 명시되어 있다.
|
||||
* **아키텍처 표류(Architectural Drift):** 소프트웨어는 업데이트, 새로운 기능 추가, 요구사항 변경 등을 통해 지속적으로 발전한다 [2]. 통합 아키텍처 다이어그램을 수동으로만 관리할 경우, 시스템은 동적으로 변하는데 다이어그램은 초기 설계 상태로 멈춰있는 '아키텍처 표류' 현상이 발생하기 쉽다 [2].
|
||||
* **오해와 잘못된 지표 제공:** 최신 상태로 유지되지 않은 오래된 통합 다이어그램은 실제 코드 및 인프라 구조와 일치하지 않는다 [2]. 이는 문제를 해결하거나 새로운 개발자를 온보딩할 때 혼란을 초래하며, 시스템 확장을 계획할 때 치명적인 판단 오류를 유발할 수 있다 [2, 3].
|
||||
* 따라서 다이어그램이 실제 환경과 일치하도록 vFunction 등과 같은 동적/자동화 툴을 사용해 지속적으로 구조를 모니터링하고 반영해야 하는 유지보수 비용(Trade-off)이 발생한다 [4].
|
||||
### 매 Diagram 종류
|
||||
- **System Context** (C4 L1): 매 system + users + external systems.
|
||||
- **Container** (C4 L2): 매 deployable units (web, api, db, queue).
|
||||
- **Component** (C4 L3): 매 container 내부 의 logical block.
|
||||
- **Sequence**: 매 time-ordered 의 message flow.
|
||||
- **Data Flow Diagram (DFD)**: 매 process / store / external entity / flow.
|
||||
- **Deployment**: 매 infra topology (regions, VPCs, nodes).
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
### Related Concepts
|
||||
### 매 Notation
|
||||
- C4 (simple, opinionated).
|
||||
- ArchiMate (enterprise, exhaustive).
|
||||
- UML deployment / component (legacy but valid).
|
||||
- Custom (Mermaid + emoji label).
|
||||
|
||||
#### [아키텍처 및 시스템 기반 기술]
|
||||
- [[Microservices Architecture]]
|
||||
- 연결 이유: 통합 아키텍처 다이어그램이 가장 빛을 발하는 환경이 바로 수많은 소형 서비스가 네트워크를 통해 통신하는 마이크로서비스 구조이기 때문이다 [1].
|
||||
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 마이크로서비스 간의 독립성과 분산된 데이터 처리가 왜 통합 다이어그램과 같은 명확한 매핑 도구를 필요로 하는지 알 수 있다.
|
||||
- [[Architectural Drift]]
|
||||
- 연결 이유: 통합 다이어그램을 비롯한 시스템 문서가 지속적인 코드 변경(현대화)을 따라가지 못해 발생하는 현실적인 문제를 설명하는 개념이다 [2, 3].
|
||||
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 정적 다이어그램의 한계와 실시간 코드 기반 아키텍처 추적의 중요성을 배울 수 있다.
|
||||
### 매 응용
|
||||
1. Onboarding doc — 매 new hire 의 system map.
|
||||
2. ADR 의 visual aid.
|
||||
3. Threat modeling (STRIDE) 의 trust boundary 의 mark.
|
||||
|
||||
#### [문서화 및 다이어그램 기법]
|
||||
- [[System Context Diagram]]
|
||||
- 연결 이유: 통합 아키텍처 다이어그램과 마찬가지로 외부 엔티티(사용자, 외부 시스템)와 전체 시스템 간의 관계 및 의존성을 블랙박스 형태로 보여주는 다이어그램이다 [5, 6].
|
||||
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 비기술적 이해관계자를 위해 복잡한 통합 세부 사항을 추상화하여 시스템의 큰 그림을 그리는 방법을 익힐 수 있다.
|
||||
- [[C4 Model]]
|
||||
- 연결 이유: 아키텍처를 Context, Container, Component, Code라는 네 가지 추상화 수준으로 나누어 그리는 방법론으로 [7, 8], 통합과 통신 흐름을 단계적으로 파악하는 데 쓰인다.
|
||||
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 대규모 코드베이스를 하향식으로 탐색하고 문서화할 때, 추상화 계층을 어떻게 나누어 표현해야 하는지 배울 수 있다.
|
||||
## 💻 패턴
|
||||
|
||||
### Deeper Research Questions
|
||||
- 마이크로서비스 환경에서 수많은 내부 서비스와 외부 시스템이 얽혀 있을 때, 통합 아키텍처 다이어그램의 시각적 복잡도를 어떻게 관리하고 추상화 수준을 조절해야 하는가?
|
||||
- 통합 아키텍처 다이어그램에 표기되는 통신 프로토콜(예: HTTP/REST, gRPC, 메시지 큐 등)의 선택이 전체 시스템의 결합도(Coupling)와 성능에 구체적으로 어떤 영향을 미치는가?
|
||||
- CI/CD 파이프라인이 지속적으로 동작하는 환경에서 통합 아키텍처 다이어그램을 실시간으로 코드와 동기화(Architecture as Code)하여 관리하는 최적의 프랙티스는 무엇인가?
|
||||
- 복잡한 레거시 시스템을 해독할 때(하향식 접근법), 통합 아키텍처 다이어그램을 활용하여 비즈니스 가치 사슬과 기술적 한계를 어떻게 효율적으로 연결하여 분석할 수 있는가?
|
||||
- 통합 아키텍처 다이어그램은 System Context Diagram이나 Container Diagram과 비교했을 때, 어떤 고유한 표현 요소(예: 데이터 포맷, 엔드포인트 세부 정보 등)를 더 강조해야 하는가?
|
||||
|
||||
### Practical Application Contexts
|
||||
- **Implementation:** 외부 결제 서비스, 알림 시스템, 혹은 내부의 서로 다른 도메인 서비스들을 연동하는 코드를 작성할 때, 어떤 프로토콜과 인터페이스를 따라야 하는지 기준점으로 사용된다 [1, 6].
|
||||
- **System Design:** 소프트웨어 설계 시 시스템 내 데이터가 어떻게 흘러가는지, 의존성이 어떻게 형성되는지 시각화하여 통신 병목 현상이나 아키텍처적 결함을 조기에 발견할 수 있도록 돕는다 [1, 9].
|
||||
- **Operation / Maintenance:** 운영 중인 서비스에 통신 장애나 버그가 발생했을 때, 장애 지점이 어느 통합 지점인지 신속하게 격리하고 영향을 받는 컴포넌트를 파악하는 데 참조된다 [1, 10, 11].
|
||||
- **Learning Path:** 복잡한 거대 코드베이스에 새로 합류한 개발자가 각 코드 블록을 상세히 읽기 전에, 먼저 각 시스템 모듈들이 어떻게 맞물려 돌아가는지 파악하기 위한 '학습 지도(Map)' 역할을 한다 [1, 12].
|
||||
- **My Project Relevance:** 방대한 코드베이스를 해독하고 문서화하는 현재의 임무에서, 단일 파일의 구문 분석에 매몰되지 않고 전체 시스템이 어떻게 소통하는지(통합 관점) 파악하기 위한 핵심 프레임워크로 활용된다.
|
||||
|
||||
### Adjacent Topics
|
||||
- [[Event-Driven Architecture]]
|
||||
- 확장 방향: 시스템 간의 동기적 통신 통합을 넘어, 이벤트와 메시지 브로커를 활용해 구성 요소들을 비동기적이고 느슨하게 결합(Loose Coupling)하여 통합하는 패러다임으로 이해를 확장할 수 있다 [13, 14].
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-02*
|
||||
|
||||
## 🤖 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
|
||||
### C4 System Context (Mermaid)
|
||||
```mermaid
|
||||
C4Context
|
||||
title System Context — Order Platform
|
||||
Person(customer, "Customer", "Buys products")
|
||||
System(order, "Order Platform", "Handles order lifecycle")
|
||||
System_Ext(stripe, "Stripe", "Payment processor")
|
||||
System_Ext(shipping, "ShipEngine", "Shipping carrier API")
|
||||
System_Ext(email, "SendGrid", "Transactional email")
|
||||
Rel(customer, order, "Places order", "HTTPS")
|
||||
Rel(order, stripe, "Charges card", "REST")
|
||||
Rel(order, shipping, "Creates shipment", "REST")
|
||||
Rel(order, email, "Sends confirmation", "SMTP API")
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
### C4 Container (Structurizr DSL)
|
||||
```dsl
|
||||
workspace {
|
||||
model {
|
||||
user = person "Customer"
|
||||
order = softwareSystem "Order Platform" {
|
||||
web = container "Web App" "Next.js 15"
|
||||
api = container "API" "Node.js / Fastify"
|
||||
db = container "Postgres" "RDS" "Database"
|
||||
cache = container "Redis" "ElastiCache"
|
||||
queue = container "Kafka" "MSK"
|
||||
}
|
||||
user -> web "Uses" "HTTPS"
|
||||
web -> api "JSON/HTTPS"
|
||||
api -> db "SQL"
|
||||
api -> cache "RESP"
|
||||
api -> queue "produces"
|
||||
}
|
||||
views { container order { include * autolayout lr } }
|
||||
}
|
||||
```
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
### Sequence — Distributed Transaction (Mermaid)
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant C as Client
|
||||
participant O as Order API
|
||||
participant P as Payment
|
||||
participant I as Inventory
|
||||
participant K as Kafka
|
||||
C->>O: POST /orders
|
||||
O->>I: Reserve stock
|
||||
I-->>O: OK (reservation_id)
|
||||
O->>P: Charge card
|
||||
P-->>O: success
|
||||
O->>K: publish OrderCreated
|
||||
O-->>C: 201 Created
|
||||
Note over K: Async fanout to Shipping, Email, Analytics
|
||||
```
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
### Data Flow Diagram (D2)
|
||||
```d2
|
||||
direction: right
|
||||
customer: Customer { shape: person }
|
||||
api: Order API
|
||||
db: Postgres { shape: cylinder }
|
||||
queue: Kafka { shape: queue }
|
||||
analytics: Analytics WH { shape: cylinder }
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
customer -> api: POST /order
|
||||
api -> db: INSERT
|
||||
api -> queue: OrderCreated
|
||||
queue -> analytics: stream
|
||||
```
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
### Deployment (PlantUML)
|
||||
```plantuml
|
||||
@startuml
|
||||
!include <C4/C4_Deployment>
|
||||
Deployment_Node(aws, "AWS us-east-1") {
|
||||
Deployment_Node(eks, "EKS cluster") {
|
||||
Container(api, "Order API", "Node.js")
|
||||
}
|
||||
Deployment_Node(rds, "RDS Multi-AZ") {
|
||||
ContainerDb(db, "Postgres 16")
|
||||
}
|
||||
}
|
||||
Rel(api, db, "TLS")
|
||||
@enduml
|
||||
```
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
### Trust Boundary (Threat Model overlay)
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph Public[Public Internet]
|
||||
U[User]
|
||||
end
|
||||
subgraph DMZ
|
||||
LB[ALB / WAF]
|
||||
end
|
||||
subgraph Private[Private VPC]
|
||||
API[Order API]
|
||||
DB[(Postgres)]
|
||||
end
|
||||
U -- TLS 1.3 --> LB
|
||||
LB -- mTLS --> API
|
||||
API --> DB
|
||||
classDef boundary stroke-dasharray: 5 5
|
||||
class Public,DMZ,Private boundary
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Quick wiki diagram | Mermaid (GitHub renders inline) |
|
||||
| Versioned + reviewed | Structurizr DSL or PlantUML in repo |
|
||||
| Enterprise governance | ArchiMate (Archi tool) |
|
||||
| Generated from code | terraform-graph, kroki, arkade |
|
||||
| Threat modeling | DFD + trust boundaries (Microsoft TMT) |
|
||||
|
||||
**기본값**: 매 C4 model — Context + Container 의 minimum, diagrams-as-code 의 (Mermaid / Structurizr).
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Software-Architecture]] · [[Documentation]]
|
||||
- 변형: [[C4-Model]] · [[ArchiMate]] · [[UML]]
|
||||
- 응용: [[Mermaid]] · [[Structurizr]] · [[PlantUML]] · [[D2]]
|
||||
- Adjacent: [[ADR]] · [[Threat-Modeling]] · [[System-Design-Interview]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: diagram 의 Mermaid/D2 source 의 generate, existing diagram 의 explanation, missing actor 의 detect.
|
||||
**언제 X**: 매 enterprise architecture 의 governance decision (human + tool standard 필요).
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **PowerPoint architecture**: PNG screenshot 의 stale, source 의 X.
|
||||
- **Box-and-line soup**: 매 label 없이 arrow 의 multitude.
|
||||
- **Mixing levels**: Context 의 component-level detail 의 cram.
|
||||
- **No legend**: 매 reader 의 notation 의 guess.
|
||||
- **Aspirational diagram**: actual deployment 의 mismatch — 매 onboarding 의 misleading.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Brown "Software Architecture for Developers", c4model.com, ArchiMate 3.2 spec).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — integration architecture diagrams 의 full content |
|
||||
|
||||
Reference in New Issue
Block a user