소프트웨어 아키텍쳐 (5) 아키텍쳐 특성 식별

GJ·2023년 2월 1일
0
post-thumbnail

한빛미디어의 소프트웨어 아키텍쳐 101을 요약 정리했습니다.
이 포스팅은 개인 학습 목적으로 작성되었으며, 한빛미디어 도서 저작권 가이드라인을 준수하였습니다.
도서에 대한 자세한 정보는 아래 링크에서 확인 가능합니다.
https://www.hanbit.co.kr/store/books/look.php?p_code=B1494466807

도메인 관심사에서 아키텍쳐 특성 도출

  • 아키텍트는 1. 도메인 관심사, 2. 요구사항, 3. 암묵적 도메인 지식 이렇게 세가지 출처에서 아키텍쳐 특성을 밝혀낸다.
  • 아키텍트는 도메인의 핵심 목표와 현재 상황을 고려하여 도메인 관심사를 해석한 후, 합리적인 아키텍쳐 결정을 내려야 한다.
  • 최종 목록을 가능한 짧게 해야하며 모든 아키텍쳐 특성을 지원하려고 하면 안된다.
  • 아키텍쳐 특성 하나 하나가 전체 시스템 설계를 복잡하게 만드는 요인이므로 너무나 많은 아키텍쳐 특성을 수용하면 문제 영역 해결이전에 이미 너무 복잡해져버린다.
  • 모든 아키텍쳐 특성에 만장일치로 의견이 모아지는 경우는 거의 없으므로 각자에게 가장 중요한 특성 3개씩 고르도록 하는 방법이 좋은 방법이다.
  • 이렇게 하면 자연스럽게 가장 중요한 것이 무엇인지 논의하게 되고 아키텍트 입장에서도 트레이드오프를 분석하는데 도움이 된다.
  • 대부분의 아키텍쳐 특성은 도메인 이해관계자들의 의견을 듣고 교환하면서 정리된다.
  • 아키텍트는 확장성, 상호운용성, 내고장성, 학습성, 가용성을 말하지만, 도메인 이해관계자는 인수병합, 고객만족, 출시시점, 경쟁우위 등을 말하므로 아키텍트는 도메인 이해관계자의 말을 아키텍쳐 특성으로 변환할 수 있어야 한다.

도메인 관심사를 아키텍쳐 특성으로 변환하는 예시

  • 인수합병: 상호운용성, 확장성, 적응성, 신장성
  • 출시시기: 민첩성, 시험성, 배포성
  • 유저만족: 성능, 가용성, 내고장성, 시험성, 배포성, 민첩성, 보안
  • 경쟁우위: 민첩성, 시험성, 배포성, 확장성, 가용성, 내고장성
  • 시간 및 예산: 단순성, 실행성

요구사항을 아키텍쳐 특성으로

  • 학사 관리 시스템에서 수강신청을 처리한다면 학생들이 고루 이용할것이라는 설계보다는 마감 10분전에 많은 학생들이 한번에 몰리는 것을 예상하고 시스템을 설계하는 것이 적절하다.
  • 수백만명에 이를 수 있는 유저 수: 다수의 동시유저를 처리할 수 있도록 확장성이 중요하다. 순간적으로 폭증한 유저를 처리할수 있는 탄력성도 필요하다.
  • 호텔 예약 시스템: 유저가 전시간에 고루 이용하므로 확장성은 좋아야 하지만 탄력성이 필요하지는 않은 시스템
  • 콘서트 예약 시스템: 유저가 많이 접속하므로 확장성도 좋아야 하지만, 갑작스럽게 몰려드는 유저를 감당할 수 있는 탄력성도 좋아야 함
  • 보안과 성능은 대표적인 암묵적인 특성이다. 다만 매우 중대한 요소라고 판단되면 아키텍쳐 특성으로 간주한다.
  • 커스터마이징이 원활하게 지원되는 아키텍쳐는 장점도 있지만 트레이드 오프가 있음을 명심해야 한다.

아키텍트 특성 고르기 정리

  • 아키텍트는 아키텍쳐 특성에 우선순위를 매기고 가장 단순한 필수세트로 정리해야 한다
  • 어떤 아키텍쳐 특성이 정말 필요한지 모르겠따면 시스템이 성공하기위해서는 무엇이 필요한지 그리고 중요한지 먼저 생각하자
  • 가장 적합하지 않은 아키텍쳐 속성을 솎아내는 것도 좋은 방법이다.
  • 다만 적합하지 않은 아키텍쳐라도 우선순위가 떨어진다는 것이지 중요하지 않다는것은 아니다.
profile
Frontend Developer

0개의 댓글