한빛미디어의 소프트웨어 아키텍쳐 101을 요약 정리했습니다.
이 포스팅은 개인 학습 목적으로 작성되었으며, 한빛미디어 도서 저작권 가이드라인을 준수하였습니다.
도서에 대한 자세한 정보는 아래 링크에서 확인 가능합니다.
https://www.hanbit.co.kr/store/books/look.php?p_code=B1494466807
도메인 관심사에서 아키텍쳐 특성 도출
- 아키텍트는 1. 도메인 관심사, 2. 요구사항, 3. 암묵적 도메인 지식 이렇게 세가지 출처에서 아키텍쳐 특성을 밝혀낸다.
- 아키텍트는 도메인의 핵심 목표와 현재 상황을 고려하여 도메인 관심사를 해석한 후, 합리적인 아키텍쳐 결정을 내려야 한다.
- 최종 목록을 가능한 짧게 해야하며 모든 아키텍쳐 특성을 지원하려고 하면 안된다.
- 아키텍쳐 특성 하나 하나가 전체 시스템 설계를 복잡하게 만드는 요인이므로 너무나 많은 아키텍쳐 특성을 수용하면 문제 영역 해결이전에 이미 너무 복잡해져버린다.
- 모든 아키텍쳐 특성에 만장일치로 의견이 모아지는 경우는 거의 없으므로 각자에게 가장 중요한 특성 3개씩 고르도록 하는 방법이 좋은 방법이다.
- 이렇게 하면 자연스럽게 가장 중요한 것이 무엇인지 논의하게 되고 아키텍트 입장에서도 트레이드오프를 분석하는데 도움이 된다.
- 대부분의 아키텍쳐 특성은 도메인 이해관계자들의 의견을 듣고 교환하면서 정리된다.
- 아키텍트는 확장성, 상호운용성, 내고장성, 학습성, 가용성을 말하지만, 도메인 이해관계자는 인수병합, 고객만족, 출시시점, 경쟁우위 등을 말하므로 아키텍트는 도메인 이해관계자의 말을 아키텍쳐 특성으로 변환할 수 있어야 한다.
도메인 관심사를 아키텍쳐 특성으로 변환하는 예시
- 인수합병: 상호운용성, 확장성, 적응성, 신장성
- 출시시기: 민첩성, 시험성, 배포성
- 유저만족: 성능, 가용성, 내고장성, 시험성, 배포성, 민첩성, 보안
- 경쟁우위: 민첩성, 시험성, 배포성, 확장성, 가용성, 내고장성
- 시간 및 예산: 단순성, 실행성
요구사항을 아키텍쳐 특성으로
- 학사 관리 시스템에서 수강신청을 처리한다면 학생들이 고루 이용할것이라는 설계보다는 마감 10분전에 많은 학생들이 한번에 몰리는 것을 예상하고 시스템을 설계하는 것이 적절하다.
- 수백만명에 이를 수 있는 유저 수: 다수의 동시유저를 처리할 수 있도록 확장성이 중요하다. 순간적으로 폭증한 유저를 처리할수 있는 탄력성도 필요하다.
- 호텔 예약 시스템: 유저가 전시간에 고루 이용하므로 확장성은 좋아야 하지만 탄력성이 필요하지는 않은 시스템
- 콘서트 예약 시스템: 유저가 많이 접속하므로 확장성도 좋아야 하지만, 갑작스럽게 몰려드는 유저를 감당할 수 있는 탄력성도 좋아야 함
- 보안과 성능은 대표적인 암묵적인 특성이다. 다만 매우 중대한 요소라고 판단되면 아키텍쳐 특성으로 간주한다.
- 커스터마이징이 원활하게 지원되는 아키텍쳐는 장점도 있지만 트레이드 오프가 있음을 명심해야 한다.
아키텍트 특성 고르기 정리
- 아키텍트는 아키텍쳐 특성에 우선순위를 매기고 가장 단순한 필수세트로 정리해야 한다
- 어떤 아키텍쳐 특성이 정말 필요한지 모르겠따면 시스템이 성공하기위해서는 무엇이 필요한지 그리고 중요한지 먼저 생각하자
- 가장 적합하지 않은 아키텍쳐 속성을 솎아내는 것도 좋은 방법이다.
- 다만 적합하지 않은 아키텍쳐라도 우선순위가 떨어진다는 것이지 중요하지 않다는것은 아니다.