Home 소프트웨어 아키텍처 101 - CHAPTER 7 아키텍처 특성 범위
Post
Cancel

소프트웨어 아키텍처 101 - CHAPTER 7 아키텍처 특성 범위

6.1 아키텍처 특성 특정

  • 아키텍처 특성을 정의할 때 발생하는 문제들
    • 물리학이 아니다.
      • 아키텍처 특성은 대부분 의미가 모호합니다.
      • 동일한 용어도 업계에서 바라보는 시각이 제각각이고 법적인 상황에 따라 좌지우지되거나 우발적으로 의미가 정해지는 경우도 있습니다.
    • 정의가 너무 다양하다
      • 성능과 같은 중요한 특성에 대한 정의가 같은 조직에서도 부서마다 일치하지 않아 개발자, 아키텍트, 운영자 모두 정의를 통일하기 전까지는 원활하게 소통하기 어렵습니다.
    • 너무 복합적이다.
      • 바람직한 아키텍처 특성은 대부분 더 작은 다른 여러 특성들로 구성됩니다.
  • 이 세가지 문제는 아키텍처 특성을 객관적으로 정의하면 모두 해결됩니다.

6.1.1 운영적 측정

  • 아키텍처 특성은 성능, 확장성처럼 비교적 정확하게 측정할 수 있는 것도 많지만, 팀 목표에 따라 그에 따른 해석은 미묘하게 갈릴 때가 많습니다.
  • 수준 높은 팀은 달성하기 어려운 성능 수치를 정하는 대신, 통계 분석 결과로 얻은 나름대로의 정의에 기반합니다.

6.1.2 구조적 측정

  • 아키텍트는 다른 메트릭과 공통 도구를 이용해서 코드 구조에 관한 중요한 부분을 들여다볼 수 있습니다.

6.1.3 프로세스 측정

  • 소프트웨어 개발 프로세스와 교차하는(intersect) 아키텍처 특성도 있습니다. 예를 들어 민첩성은 시험성(테스트 용이성), 배포성 등의 특성으로 나눌 수 있는 복합적인 아키텍처 특성입니다.
  • 시험성은 거의 모든 플랫폼에서 테스트의 완전성을 평가하는 코드 커버리지 도구로 측정할 수 있습니다.
  • 배포성 역시 실패 대비 배포 성공률(%), 배포 소요 시간, 배포 시 발생한 이슈/버그 등 다양한 메트릭으로 측정됩니다.

6.2 거버넌스와 피트니스 함수

6.2.1 아키텍처 특성 관리

  • 아키텍처 거버넌스는 아키텍트가 영향력을 행사하려는 모든 소프트웨어 개발 프로세스를 포괄합니다.

6.2.2 피트니스 함수

  • 결과가 목표에 얼마나 근접했는지를 나타내는 목표 함수가 바로 피트니스 함수(fitness function)입니다.

순환 의존성

  • 컴포넌트 간의 커플링이 증가할수록 아키텍처는 점점 진흙잡탕 안티패턴에 빠져들 것입니다.
    • 이 문제는 JDepend 등의 메트릭 도구를 이용한 피트니스 함수로 순환 참조 여부를 발견함으로써 해결할 수 있습니다.

‘메인 시퀀스로부터의 거리’ 피트니스 함수

‘메인 시퀀스로부터의 거리’라는 다소 난해한 메트릭도 피트니스 함수를 이용해 확인할 수 있습니다.

요약

6.1 아키텍처 특성 측정

  • 아키텍처 특성을 정의할 때 발생하는 문제들
    • 물리학이 아니다
      • 아키텍처 특성은 의미가 모호하고, 동일한 용어도 업계에서 바라보는 시각이 다름.
      • 법적 상황에 따라 의미가 변하거나 우발적으로 정해지는 경우가 있음.
    • 정의가 너무 다양하다
      • 성능 등 중요한 특성에 대한 정의가 조직 내 부서마다 일치하지 않아 소통에 어려움이 있음.
    • 너무 복합적이다
      • 바람직한 아키텍처 특성은 여러 작은 특성들로 구성된 복합체임.
  • 해결 방안
    • 아키텍처 특성을 객관적으로 정의하여 위 세 가지 문제를 해결할 수 있음.

6.1.1 운영적 측정

  • 성능, 확장성 등은 정확하게 측정 가능하지만 팀 목표에 따라 해석이 다를 수 있음.
  • 우수한 팀은 통계 분석 결과에 기반한 정의를 사용하여 목표를 설정함.

6.1.2 구조적 측정

  • 아키텍트는 다양한 메트릭과 도구를 활용하여 코드 구조의 중요한 부분을 분석함.

6.1.3 프로세스 측정

  • 소프트웨어 개발 프로세스와 교차하는 아키텍처 특성이 존재함.
    • 예: 민첩성은 시험성(테스트 용이성), 배포성 등의 복합적인 특성으로 구성됨.
  • 시험성
    • 코드 커버리지 도구를 사용하여 테스트의 완전성을 측정.
  • 배포성
    • 배포 성공률, 배포 시간, 배포 시 발생한 이슈 및 버그 등의 메트릭으로 측정.

6.2 거버넌스와 피트니스 함수

6.2.1 아키텍처 특성 관리

  • 아키텍처 거버넌스는 아키텍트가 영향력을 행사하고자 하는 모든 소프트웨어 개발 프로세스를 포괄함.
  • 참고: 거버넌스(governance)는 그리스어 kybernan(이끌다)에서 유래됨.

6.2.2 피트니스 함수

  • 피트니스 함수(fitness function)
    • 결과가 목표에 얼마나 근접했는지를 나타내는 목적 함수.
  • 아키텍처 피트니스 함수
    • 특정 아키텍처 특성 또는 그 조합의 객관적인 무결성을 평가하는 모든 메커니즘.

순환 의존성

  • 컴포넌트 간 커플링이 증가하면 ‘진흙탕(Ball of Mud)’ 안티패턴에 빠질 위험이 있음.
  • 해결 방법
    • JDepend 등의 메트릭 도구를 활용한 피트니스 함수로 순환 참조를 발견하고 수정.

‘메인 시퀀스로부터의 거리’ 피트니스 함수

  • ‘메인 시퀀스로부터의 거리’라는 복잡한 메트릭도 피트니스 함수를 통해 검증 가능.
This post is licensed under CC BY 4.0 by the author.

소프트웨어 아키텍처 101 - CHAPTER 5 아키텍처 특성 식별

소프트웨어 아키텍처 101 - CHAPTER 7 아키텍처 특성 범위