소프트웨어 아키텍처

아키텍처 품질 속성

meellon 2026. 6. 21. 06:00

학습 목표

주요 아키텍처 품질 속성(quality attribute) 을 정의하고 구분할 수 있다.

이해관계자 concern을 품질 속성·측정 지표로 번역할 수 있다.

품질 시나리오(quality scenario) 로 요구를 구체화할 수 있다.

품질 속성 간 트레이드오프가 구조 선택을 좌우함을 설명할 수 있다.

문제 상황

  • "성능 좋게", "안정적으로", "나중에 바꾸기 쉽게"
    • 요구는 많은데 무엇을 얼마나 만족할지 숫자가 없다
  • p99 200ms인지 2s인지에 따라 캐시·DB 샤딩·동기 호출 설계가 전혀 달라진다
    • 같은 "빠르게"인데 아키텍처 결정이 갈린다
  • 가용성 99.9%와 99.99%는 장애 허용 시간이 10배 차이
    • 멀티 AZ, health check, circuit breaker 여부가 갈린다
  • 테스트하기 어려운 구조는 리팩터링도 느려진다
    • 품질 속성을 나중에 끼워 넣기 어렵다

이해관계자 concern을 봤다. 이번 편은 concern을 설계·평가 가능한 품질 속성으로 내리고, 시나리오로 고정한다.

1. 품질 속성이란

품질 속성 — 시스템이 기능 외에 얼마나 잘 동작하는지를 나타내는 비기능 요구의 설계 관점.

  • 기능: "주문을 생성한다"
  • 품질: "주문 API p99 latency 300ms 이하", "월 가용성 99.95%"

아키텍처 스타일·컴포넌트·커넥터 선택은 대부분 품질 속성을 만족하기 위한 수단이다.

범주 대표 속성 한 줄 정의
운영(Operational) 성능, 가용성, 확장성 런타임에 사용자·운영이 체감하는 특성
개발(Development) 유지보수성, 테스트 용이성 변경·검증 비용
보안(Security) 기밀성, 무결성, 인증 데이터·접근 보호
조직·배포 배포 용이성, 관측성 릴리스·장애 대응 (운영 concern과 겹침)
  • Richards/Ford는 구조에 영향을 주는 속성에 집중한다
    • UI 색상 같은 건 아키텍처 범위 밖

2. 핵심 품질 속성

성능 (Performance)

  • 처리량(throughput), 지연(latency), 자원 사용률
  • 측정: RPS, p50/p95/p99, CPU·메모리
  • 전술 예: 캐시, 비동기, 읽기 복제, CDN, connection pool

가용성 (Availability)

  • 요청이 실패하지 않고 처리될 확률·시간 비율
  • 측정: uptime %, MTBF, MTTR, error rate
  • 전술 예: redundancy, health check, graceful degradation, 다중 AZ

확장성 (Scalability)

  • 부하 증가에 선형에 가깝게 용량을 늘릴 수 있는가
  • Scale up(큰 머신) vs Scale out(인스턴스 추가)
  • 전술 예: stateless 서비스, 샤딩, 파티셔닝, 메시지 큐로 부하 분산

보안 (Security)

  • 기밀성, 무결성, 인증·인가, 감사
  • 아키텍처: zero trust, 네트워크 분리, 암호화 전송·저장, 최소 권한
  • Network 시리즈의 TLS·애플리케이션 계층과 연결

유지보수성 (Modifiability / Maintainability)

  • 기능·요구 변경을 얼마나 싸고 안전하게 반영하는가
  • 측정: 변경 범위(모듈 수), 배포 빈도, 결함 유입률
  • 전술 예: 경계 분리, 의존성 역전, 플러그인 구조

테스트 용이성 (Testability)

  • 결함을 얼마나 빨리·자동으로 찾을 수 있는가
  • mock·stub 가능한 경계, 결정론적 동작, 작은 배포 단위
  • 테스트 어려운 구조는 가용성·유지보수성도 함께 악화된다

3. 품질 시나리오

모호한 요구를 검증 가능한 문장으로 바꾼다. Software Architecture in Practice 의 6요소 형식이 널리 쓰인다.

요소 의미
Source 자극 주체 10,000 동시 사용자
Stimulus 무슨 일 주문 API 호출
Artifact 대상 Order Service
Environment 조건 피크 시간, 정상 모드
Response 기대 동작 요청 처리 완료
Response measure 측정 p99 latency 500ms 이하, error rate 0.1% 미만

예시 (가용성)

운영팀이(Stimulus source) 프로덕션에서(environment) 결제 DB 인스턴스 1대가 다운되면(stimulus), Payment Service는(artifact) 결제 요청을 계속 처리한다(response). 월 가용성 99.95% 이상, MTTR 15분 이하(response measure).

  • 시나리오가 없으면 "고가용성"은 누구나 다른 그림을 그린다
  • ADR·아키텍처 평가(이후 편)의 입력이 된다

4. Concern에서 품질 속성으로

앞 편 concern을 이번 편 언어로 옮기면 논의가 짧아진다.

Concern 품질 속성 아키텍처 전술 예
"느리다" 성능 캐시, read replica, 비동기 이벤트
"배포할 때마다 장애" 가용성, 배포 용이성 blue-green, canary, feature flag
"트래픽 급증 대비" 확장성 HPA, stateless, queue
"규제·개인정보" 보안 암호화, 감사 로그, 네트워크 분리
"레거시 손대기 무서움" 유지보수성, 테스트 용이성 경계 분리, 계약 테스트

5. 트레이드오프

품질 속성은 동시에 극대화하기 어렵다. 구조는 우선순위를 반영한다.

긴장 한쪽 다른 쪽 흔한 선택
성능 vs 보안 암호화·검증 오버헤드 낮은 지연 TLS, HSM, 단계적 검증
일관성 vs 가용성 강한 트랜잭션 분산 가용 saga, eventual consistency
속도 vs 유지보수성 빠른 하드코딩 깨끗한 경계 MVP 후 strangler
테스트 vs 출시 속도 높은 커버리지 짧은 사이클 계약·스모크 우선
  • 아키텍트는 "다 잘됨"이 아니라 순위와 측정을 문서화한다
  • 품질 시나리오 + ADR이 그 기록이다

6. 정리

  • 품질 속성은 기능과 별도로 구조를 결정하는 축이다
  • 성능·가용성·확장성·보안·유지보수성·테스트 용이성이 일상적으로 다루는 핵심이다
  • 품질 시나리오로 측정 가능하게 쓰면 이해관계자 concern과 연결된다
  • 트레이드오프를 숨기지 않는 것이 아키텍처의 정직함이다

다음에 다룰 것

  • 레이어드 아키텍처
  • Presentation / Business / Persistence, 장단점

해당 내용은 Fundamentals of Software Architecture (Mark Richards, Neal Ford) 및 Software Architecture in Practice, 4/E (Bass, Clements, Kazman) 의 내용을 기반으로 합니다.

'소프트웨어 아키텍처' 카테고리의 다른 글

헥사고날과 클린 아키텍처  (3) 2026.06.23
레이어드 아키텍처  (0) 2026.06.22
이해관계자와 Concern  (0) 2026.06.20
아키텍처란 무엇인가  (0) 2026.06.19
소프트웨어 아키텍처 오리엔테이션  (0) 2026.06.17