콘텐츠로 이동

아키텍처 설계 방법론

목표 모델(TO-BE) 설계를 위한 SW 아키텍처 프로세스 및 방법론


graph TD
    A["1. 요구사항 정의"]
    A -->|기능 요구사항| B["기능 요구사항"]
    A -->|품질 속성| C["품질 속성<br/>(비기능 요구사항)"]
    A -->|제약사항| D["제약사항"]
    
    B --> E["2. ASR 도출"]
    C --> E
    D --> E
    E -->|QAW / PALM / Utility Tree| F["3. 아키텍처 설계"]
    
    F -->|시나리오 → 전술 → 패턴 → 체크리스트| G["4. 아키텍처 평가"]
    G -->|ATAM / LAE| H["5. 아키텍처 문서화"]
    
    H -->|모듈 뷰| I["모듈 뷰"]
    H -->|C&C 뷰| J["C&C 뷰<br/>Component & Connector"]
    H -->|할당 뷰| K["할당 뷰"]

유형설명아키텍처 영향
기능 요구사항시스템이 해야 할 것책임 할당
품질 속성기능의 자격 요건 (성능, 보안 등)구조와 행위 설계
제약사항선택 여지 없는 결정 (언어, 플랫폼 등)설계 조건
graph LR
    A["기능 요구사항"]
    B["SW 아키텍처"]
    C["품질 속성"]
    D["제약사항"]
    
    A -->|책임 할당| B
    C -->|구조와 행위 설계| B
    D -->|설계 조건| B

2. ASR (Architecturally Significant Requirement)

섹션 제목: “2. ASR (Architecturally Significant Requirement)”

아키텍처에 중요한 영향을 미치는 요구사항으로, 이 요구사항이 없으면 아키텍처가 완전히 달라질 수 있음

SW 아키텍처 완성 전, 이해당사자 참여를 통해 품질 속성 시나리오를 도출

단계활동
1QAW 소개
2업무/미션 발표
3아키텍처 계획 발표
4아키텍처 동인 파악
5시나리오 브레인스토밍
6시나리오 통합
7시나리오 우선순위 부여
8시나리오 정련

품질 속성을 계층적으로 정리하고 우선순위를 부여

graph TD
    A["시스템"]
    B["성능"]
    C["보안"]
    D["변경용이성"]
    E["응답시간"]
    F["처리량"]
    G["인증"]
    H["권한"]
    I["모듈화"]
    J["확장성"]
    K["시나리오(H,H)"]
    L["시나리오(M,H)"]
    M["시나리오(H,M)"]
    
    A --> B
    A --> C
    A --> D
    
    B --> E
    B --> F
    C --> G
    C --> H
    D --> I
    D --> J
    
    E --> K
    G --> L
    I --> M

품질 속성정의주요 관심사
가용성 (Availability)시스템이 필요할 때 운영 가능한 정도장애 감지, 복구, 예방
상호운영성 (Interoperability)다른 시스템과 정보 교환 능력인터페이스, 프로토콜
변경용이성 (Modifiability)변경 비용과 위험모듈화, 결합도, 응집도
성능 (Performance)시간 제약 내 응답 능력응답시간, 처리량, 자원
보안 (Security)무단 접근 방지인증, 인가, 기밀성, 무결성
테스트 가능성 (Testability)결함 발견 용이성관찰 가능성, 제어 가능성
사용성 (Usability)사용자가 원하는 작업 수행 용이성학습성, 효율성, 오류 방지
graph TD
    Title["품질 속성 시나리오"]
    S["① 원천 Source<br/>자극을 생성하는 주체"]
    St["② 자극 Stimulus<br/>시스템에 도착하는 조건/이벤트"]
    A["③ 대상 Artifact<br/>자극을 받는 시스템 부분"]
    E["④ 환경 Environment<br/>자극 발생 시 시스템 상태"]
    R["⑤ 응답 Response<br/>자극에 대한 시스템 반응"]
    M["⑥ 응답 측정 Measure<br/>응답의 정량적 측정 기준"]

    Title --- S
    S --> St
    St --> A
    A --> E
    E --> R
    R --> M

    style Title fill:#f0f0f0,stroke:#333,stroke-width:2px,font-weight:bold
요소성능 시나리오 예시 (좋은생각)
원천정기구독팀 사용자
자극고객 통합 조회 요청 (PT_Customer + PT_Subscribe + PT_Finance)
대상통합 웹 관리자 시스템 (고객 관리 모듈)
환경정상 운영 상태, 동시 접속 15명
응답고객 상세 정보 + 구독 이력 + 결제 이력 반환
응답 측정3초 이내 응답 (JOIN 3개 테이블, 결과 50건 이내)

graph TD
    A["1. 설계할 시스템 요소 선택"]
    B["Breadth-first / Depth-first / Mixed"]
    C["2. 선택된 요소에 대한 ASRs 파악"]
    D["3. 선택된 요소에 대한 설계 솔루션 생성"]
    E["패턴, 전술, 프레임워크, 체크리스트 활용"]
    F["4. 잔여 요구사항 검증/정련,<br/>다음 반복 투입물 선택"]
    G["5. 모든 ASRs 충족할 때까지<br/>1~4 반복"]
    
    A --> B
    B --> C
    C --> D
    E -.->|활용| D
    D --> F
    F --> G
범주설명예시
① 책임 할당각 요소에 책임 할당모듈별 기능 분배
② 조정 모델요소 간 상호작용 방식동기/비동기, 이벤트 기반
③ 데이터 모델데이터 구조와 저장ERD, 데이터 흐름
④ 아키텍처 요소간 매핑요소 간 관계 정의인터페이스, 의존성
⑤ 자원 관리공유 자원 관리 방식커넥션 풀, 캐시
⑥ 바인딩 시간 결정결정 시점 (컴파일/런타임)설정, 플러그인
⑦ 기술 선택구현 기술 결정프레임워크, 라이브러리

ATAM (Architecture Tradeoff Analysis Method)

섹션 제목: “ATAM (Architecture Tradeoff Analysis Method)”

SW 아키텍처를 체계적이고 종합적으로 평가하는 방법

단계활동설명
1단계발표 (Presentation)
step1ATAM 소개평가 리더가 프로세스 설명
step2사업 동인 설명프로젝트 대표가 비즈니스 관점 설명
step3아키텍처 설명아키텍트가 아키텍처 설명
조사와 분석 (Investigation)
step4아키텍처 접근법 파악아키텍처 분석
step5품질 속성 Utility Tree 생성품질 속성 목표 정교화
step6아키텍처 접근법 분석시나리오 분석, 위험 문서화
2단계우선순위 부여 및 확정
step7브레인스토밍과 우선순위시나리오 우선순위 결정
step8아키텍처 접근법 분석/확정구현 방안 설명
보고 (Reporting)
step9결과 발표이해당사자에게 설명

ATAM의 경량화 버전 (총 4~6시간)

단계소요 시간
비즈니스 동인 소개15분
아키텍처 소개30분
아키텍처 접근법 식별15분
품질속성 Utility Tree 작성30분~1시간 30분
아키텍처 접근법 분석2~3시간

효율성유연성보안유지보수성능사용성
가용성-+
효율성----
유연성-+
보안----
유지보수성-+
신뢰성-+++

+ : 긍정적 영향, - : 부정적 영향 (tradeoff)


산출물설명
아키텍처 명세서전체 아키텍처 구조 및 설계 원칙
품질 속성 시나리오주요 품질 속성별 시나리오
Utility Tree품질 속성 우선순위
아키텍처 뷰모듈 뷰, C&C 뷰, 배치 뷰
설계 가이드라인아키텍처/DB/프로그래밍 가이드
프로토타입아키텍처 검증용 실행 코드

단계방법론ISP 산출물상태비고
ASR 도출QAW (간소화)품질 속성 시나리오90%17개 시나리오, 6개 품질 속성
우선순위Utility TreeUtility Tree90%품질 속성별 우선순위, Tradeoff 분석
설계ADD Method웹 시스템 아키텍처80%12모듈, NestJS+React+MSSQL
평가LAE (경량화 ATAM)utility-tree.md 내 Tradeoff 분석80%비용/리스크/기술 Tradeoff

QAW → 품질 속성 시나리오 (quality-scenarios.md)

섹션 제목: “QAW → 품질 속성 시나리오 (quality-scenarios.md)”

QAW 8단계를 좋은생각 ISP에 적용한 결과:

QAW 단계좋은생각 적용결과
1-3킥오프 미팅 (3/3~4) + ISP 소개사업 배경, 아키텍처 방향 공유
4현행 시스템 역공학 (DB 151t 분석)아키텍처 동인: C/S 폐쇄성, DB 이원화, 수동 이관
5-6DB 분석 + 업무 플로우 기반 시나리오 도출17개 시나리오 (성능 3, 보안 3, 가용성 2, 상호운영 4, 변경용이 3, 사용성 2)
7우선순위 부여 (H/M/L × 비즈니스/기술)P-1~P-3 등급 분류
8현행 DB 테이블/SP 기반 시나리오 정련실제 PT_Customer, PT_Subscribe 등 매핑

Utility Tree → 품질 속성 우선순위 (utility-tree.md)

섹션 제목: “Utility Tree → 품질 속성 우선순위 (utility-tree.md)”
최상위 품질 속성하위 항목 수최고 우선순위 항목
상호운용성4건다채널 주문 자동 수집 (H,H)
변경용이성3건C/S 비즈니스 로직 → API 전환 (H,H)
성능3건월간지 발송 5만건 배치 처리 (H,M)
보안3건5만 고객 개인정보 보호 (H,M)
가용성2건업무 시간 99.5% SLA (M,L)
사용성2건비IT 실무자 30분 내 학습 (M,L)

ADD Method → TO-BE 아키텍처 (web-architecture.md)

섹션 제목: “ADD Method → TO-BE 아키텍처 (web-architecture.md)”

ADD 7가지 설계 체크리스트를 좋은생각 시스템에 적용:

체크리스트좋은생각 적용 결과
① 책임 할당12개 도메인 모듈 (대시보드~시스템 관리), 각 모듈에 DB 테이블/SP 매핑
② 조정 모델RESTful API (동기) + BullMQ (비동기 배치), 트리거 → 이벤트 핸들러 전환
③ 데이터 모델MSSQL 통합 스키마 ~100t, PT_Customer 허브 엔티티, TypeORM 엔티티 매핑
④ 요소간 매핑모듈 의존 관계 (고객→구독→주문→결제/배송), API Gateway 라우팅
⑤ 자원 관리Redis 캐시 (세션, 빈번 조회), S3 파일 스토리지, DB 커넥션 풀
⑥ 바인딩 시간환경별 설정 (Dev/Staging/Prod), 코드 마스터 런타임 로딩
⑦ 기술 선택NestJS (백엔드) + React/Ant Design (프론트) + MSSQL (AWS RDS)

주요 Tradeoff 결정:

Tradeoff 항목선택근거
MSSQL 유지 vs PostgreSQLMSSQL 유지 (1단계)이관 리스크 최소화, 49개 로직 일부 재활용
모놀리식 vs MSA모놀리식 (NestJS 모듈)15명 규모에 MSA 오버 엔지니어링, 점진적 분리 가능
ECS Fargate vs K8sECS Fargate 또는 EC2K8s 운영 비용/복잡도 > 이점 (월 ~$73 절감)
자체 인프라 vs AWS 전면 이전AWS 전면 이전On-Prem MSSQL 유지 비용 > RDS 비용, VPN 취약점 해소
주차계획실적
1-2주킥오프 + 현행 분석킥오프 완료 (3/3~4), Google Drive 23개 파일 전수 분석, DB 역공학
3-4주QAW 워크샵, Utility Tree 작성DB 분석 기반 시나리오 17건 도출, Utility Tree 작성 (인터뷰 후 보정 예정)
5-6주ADD 기반 아키텍처 설계TO-BE 아키텍처 설계 (12모듈, 기술스택 권장안), 자동화 프로세스 설계
7-8주LAE 평가, RFP 작성Tradeoff 분석 완료, RFP 초안 작성 중

날짜작성자변경 내용
2026-02-26-초안 작성 (방법론 이론 정리)
2026-03-03김명직좋은생각 ISP 적용 결과 반영: QAW→17개 시나리오 연결, ADD→12모듈 체크리스트 매핑, LAE→Tradeoff 4건, 시나리오 예시 좋은생각 맥락으로 구체화, 일정 실적 반영