- 아키텍처 특성 측정
- 운영적 측정
- 구조적 측정
- 프로세스 측정
- 거버넌스와 피트니스 함수
- 아키텍처 특성 관리
- 피트니스 함수
Q. 아키텍처 특성은 어떻게 정의하고 측정할 수 있을까?
-
운영적 측정
- 동일한 지표여도 팀 목표가 무엇인지에 따라 세부적으로 다른 요소를 측정하게 될 수 있으며, 해석도 다양함.
- 핵심은 엔지니어가 임의의 수치를 목표로 삼는 것이 아니라, 그동안 측정된 통계 분석 결과와 추이를 토대로 목표를 수립하는 것.
-
구조적 측정
- 코드가 더러운지를 측정하기 위해 순환 복잡도를 계산하는 것도 가능.
- 자바 진영은
Crap4j
로 CC와 코드 커버리지를 함께 측정함!
-
프로세스 측정
- 민첩성의 경우 시험성, 배포성 등의 세부 아키텍처 특성들로 분류됨.
- 시험성은 테스트 커버리지 등으로 측정 가능
- 배포성은 실패 대비 배포 성공률, 배포 소요 시간, 배포시 발생한 이슈/버그 등으로 측정 가능.
- 민첩성은 소프트웨어 개발 프로세스와 관련되면서, 동시에 아키텍처 구조에도 영향을 미치는 아키텍처 특성. 시험성, 배포성을 추구하는 과정에서 아키텍처 구조에 영향을 미칠 수 있음.
- 민첩성의 경우 시험성, 배포성 등의 세부 아키텍처 특성들로 분류됨.
Q. 거버넌스란 무엇인가?
- 거버넌스란 아키텍트가 확정한 아키텍처 특성을 개발자들이 잘 지키도록 관리하는 업무
Q. 피트니스 함수란 무엇인가?
- 피트니스 함수: 결과가 목표에 얼마나 근접했는지를 나타내는 목표 함수. (기본적으로 진화적 컴퓨팅의 유전자 알고리즘의 개념)
- 아키텍처 피트니스 함수: 어떠한 아키텍처 특성의 객관적인 무결성을 평가하는 모든 메커니즘
- 아키텍처 특성에 따라 피트니스 함수는 다양한 도구로 구현 가능.
- 특정한 프레임워크 및 도구가 아니라, 기존 도구를 바라보는 새로운 시각.
- 마치 체크리스트와 같음. 잊지 말아야 할 중요한 아키텍처 원칙을 표현하고 자동으로 검증할 수 있는 메커니즘.
Q. 거버넌스 메커니즘을 어떻게 구축할 수 있는가?
-
모듈성 관련 피트니스 함수들
- 순환 의존성 방지를 위해, 순환 참조가 하나라도 발견되면 실패하는 테스트 코드를 작성할 수 있음. (ft.
JDepend
) - 메인 시퀀스로부터의 거리에 대한 수용 가능한 임계치를 설정하고, 이를 넘어가면 실패하도록 테스트 작성 가능.
- 순환 의존성 방지를 위해, 순환 참조가 하나라도 발견되면 실패하는 테스트 코드를 작성할 수 있음. (ft.
-
레이어드 아키텍처 관련 피트니스 함수
ArchUnit
를 통해 자바 진영에서 레이어 의존성을 확인하는 피트니스 함수 작성 가능NetArchTest
를 통해 닷넷 진영(C#)에서도 레이어 의존성을 확인하는 피트니스 함수 작성 가능
-
넷플릭스의 카오스 멍키와 시미안 아미도 피트니스 함수를 응용한 사례들
개인 정리 자료의 6장 관련 마크다운 확인
아키텍트가 아키텍처 특성과 그 우선순위를 정했을 때 개발자들이 이를 지키도록 꾸준히 관리하는 것이 필요하다.
아키텍트의 이러한 업무는 다양한 툴과 수단을 통해 자동화될 수 있으며, 아키텍처 피트니스 함수란 어떠한 아키텍처 특성의 객관적인 무결성을 평가하는 모든 메커니즘이다.