1 Conceptual Architecture의 정의
Conceptual Architecture는 시스템 설계의 첫 번째 추상화 계층으로, 비즈니스 요구사항을 기술 구현 없이 고수준의 개념으로 표현
핵심 특징:
- 기술 스택 미포함: 어떤 도구를 사용할지 정하지 않음
- 비즈니스 로직 중심: “무엇을 해야 하는가”에 집중
- 이해관계자 소통: 기술팀과 비즈니스팀 모두 이해 가능
- 추상적 컴포넌트: “데이터 소스”, “처리 엔진”, “저장소” 등 범용 용어 사용
2 Conceptual Architecture 작성 단계
2.1 요구사항 정의
- 목표: 시스템이 해결할 비즈니스 문제가 무엇인가?
- 입력: 어떤 데이터가 들어오는가?
- 출력: 어떤 결과가 나가야 하는가?
- 주요 기능: 시스템이 수행해야 할 핵심 작업은 무엇인가?
예시: RAG 기반 코드 분석 시스템
- 목표: 비기술 이해관계자가 GitHub 저장소의 코드와 알고리즘을 이해하도록 지원
- 입력: 소스 코드, 문서, 플로우차트 이미지
- 출력: 자연어 설명, 요약, 답변
- 핵심 기능: 문서화, 의미 검색, 자동 요약, 질문 응답
2.2 주요 컴포넌트 식별
- 시스템을 구성하는 논리적 단위를 식별
- 구체적 기술이 아닌 기능 기반으로 명명
일반적인 패턴:
| 컴포넌트 역할 | 설명 | 예시 |
|---|---|---|
| Source/Input | 데이터 입력 지점 | GitHub Repository, Document Files |
| Processing | 핵심 처리 로직 | Data Parsing, Embedding Generation |
| Storage | 데이터 저장소 | Knowledge Base, Metadata Repository |
| Retrieval | 정보 검색 | Search Engine, Query Processor |
| Output/Service | 사용자 인터페이스 | API, Chat Interface, Dashboard |
2.3 데이터 흐름 정의
컴포넌트 간의 데이터 이동 경로를 단계별로 표현
Source → Ingestion → Processing → Storage → Retrieval → Response Generation → Output
각 단계에서:
- 어떤 데이터가 입력되는가?
- 어떤 변환이 일어나는가?
- 어떤 데이터가 출력되는가?
2.4 상호작용 패턴 정의
컴포넌트 간의 통신 방식을 정의합니다:
- 동기식: 요청-응답 (Synchronous)
- 비동기식: 이벤트 기반 (Asynchronous)
- 배치: 주기적 처리 (Batch Processing)
3 Conceptual Architecture 시각화 방법
3.1 블록 다이어그램 (가장 기본적)
┌─────────────────────────────────────────────────────────┐
│ Conceptual Architecture │
└─────────────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Source │────────▶│Processing│────────▶│ Storage │
│ Data │ │ Engine │ │Repository│
└──────────┘ └──────────┘ └──────────┘
▲ │
│ │
│ ▼
┌──────────┐ ┌──────────┐
│ Query │◀────────│Retrieval │
│Processor │ │ Engine │
└──────────┘ └──────────┘
│
▼
┌──────────────┐
│ Output │
│ (API/Chat UI)│
└──────────────┘
3.2 데이터 흐름 다이어그램 (Swimlane)
User/System │ System Core │ External
│ │
Request ──────▶│ ┌──────────────────┐ │
│ │ Request Handler │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Data Processor │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌──────────────────┐ │ ┌──────────┐
│ │ Search/Retrieve │──▶│ Knowledge│
│ └────────┬─────────┘ │ │ Base │
│ ▼ │ └──────────┘
│ ┌──────────────────┐ │
│ │Generate Response │ │
│ └────────┬─────────┘ │
│ ▼ │
Response ◀─────│ ┌──────────────────┐ │
│ │Output Formatter │ │
│ └──────────────────┘ │
3.3 컴포넌트 상호작용 테이블
| 컴포넌트 | 입력 | 처리 | 출력 | 상호작용 |
|---|---|---|---|---|
| Data Ingestion | Raw Files | Parse & Validate | Standardized Data | → Processing |
| Processing | Standardized Data | Transform & Enrich | Processed Data | → Storage |
| Storage | Processed Data | Index & Organize | Indexed Data | ← Retrieval |
| Retrieval | Query | Search & Rank | Relevant Data | → Response Gen |
| Response Gen | Relevant Data | Format & Compose | Natural Language | → Output |
4 실제 예시: RAG 시스템의 Conceptual Architecture
4.1 시스템 목표
비기술 이해관계자가 복잡한 소스 코드와 알고리즘 문서를 자연어로 이해할 수 있도록 지원하는 AI 기반 질문응답 시스템.
4.2 주요 컴포넌트
1. 소스 수집 (Source Collection)
- GitHub 코드 저장소
- 마크다운 문서
- 플로우차트 이미지
2. 데이터 준비 (Data Preparation)
- 텍스트 추출 및 파싱
- 이미지 분석 및 OCR
- 메타데이터 추출
3. 지식 저장소 (Knowledge Repository)
- 구조화된 데이터 저장
- 임베딩 벡터 저장
- 메타데이터 관리
4. 검색 및 검색 (Retrieval & Search)
- 의미 기반 검색
- 컨텍스트 관련성 판단
- 결과 순위 지정
5. 응답 생성 (Response Generation)
- 관련 컨텍스트 결합
- 자연어 응답 생성
- 출력 포맷팅
6. 사용자 인터페이스 (User Interface)
- 채팅 인터페이스
- REST API
- 대시보드
4.3 데이터 흐름 및 상호작용
┌─────────────────────────────────────────────────────────────────────┐
│ RAG System - Conceptual Architecture │
└─────────────────────────────────────────────────────────────────────┘
GitHub Repo ─┐
│
Documents ───┼──▶ ┌──────────────┐ ┌─────────────────┐
│ │ Ingestion │─────▶│ Knowledge │
Images ──────┘ │ & Parsing │ │ Repository │
└──────────────┘ │ (with vectors) │
└────────┬────────┘
│
┌──────────────┐ │
│ User Query │ │
└──────┬───────┘ │
│ │
▼ │
┌──────────────┐ │
│Query Encoder │ │
└──────┬───────┘ │
│ │
▼ ▼
┌──────────────────────────────────┐
│ Semantic Search & Retrieval │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ Context Aggregation │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ Response Generation │
│ (Reasoning + Composition) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ Output Formatting │
│ (Natural Language Response) │
└──────────────────────────────────┘
5 Conceptual Architecture 작성 체크리스트
Conceptual Architecture를 완성하기 전에 확인할 사항:
6 Conceptual에서 Logical으로의 전환
Conceptual Architecture가 완성되면, 다음 단계에서 Logical Architecture로 전환:
변화:
- 추상적 “Processing Engine” → 구체적 “Data Transformation Pipeline”, “Feature Engineering Module”
- 추상적 “Storage” → 구체적 “Vector Store”, “Relational Database”, “Document Store”
- 데이터 구조 정의: 스키마, 인터페이스 계약
- 모듈 간 통신 프로토콜 정의
예시:
Conceptual: "Query Processor"
Logical: "Embedding Generator" + "Similarity Search Engine" + "Ranking Module"
7 정리
Conceptual Architecture는:
- 비즈니스 관점 중심의 고수준 설계
- 기술 중립적이지만 기능적으로 명확
- 이해관계자 커뮤니케이션 도구
- Logical 및 Physical 설계의 기초
이를 체계적으로 작성하면 후속 설계 단계가 명확해지고, 팀 전체가 같은 비전을 공유할 수 있다.