# 아키텍처_1
# 트레이드 오프
- 아키텍처처럼 생각하는 것은 기술 여부와 상관없이 모든 솔루션의 트레이드오프를 분석하고 결정하는 것 (아키텍처는 구글링해도 안된다)
아키텍처는 질문마다 "경우에 따라 다르다"라는 대답이 많다.
듣는 사람 입장에서는 짜증나지만 사실이다. REST와 메시징 중 어느게 더 나을지, MAS가 딱 맞는 아키텍처 스타일일지 상황에 따라 다르다는 것이다.
아키텍처가 어렵다는 말이 나오는건, 환경, 상황, 문제를 안고 있기 때문이다.
아키텍처는 정답도, 오답도 없다.
# 모듈성
# 응집
- 한 모듈의 구성요소가 동일한 모듈 안에 얼마나 포함되어 있는지는 나타냄
- 이상적으로 응집되면 모든 구성요소가 함께 패키징 되어있음
응집도의 측점 범위
좋은 응집부터 안좋은 응집 순차적
기능적 응집
- 모듈의 각 파트는 다른 파트와 연관되어 있고 기능상 꼭 필요한 모든 것이 모듈이 포함
순차적 응집
- 두 모듈이,한쪽이 데이터를 출력하면 다른 한쪽이 그것을 입력받는 형태의 상호작용
소통적 응집
- 두 모듈이, 각자 정보에 따라 작동하고 어떤 출력을 내는 형태로 통신체인을 형성
절차적 응집
- 두 묘듈은 정해진 순서대로 실행되어야 함
일시적 응집
- 모듈은 시점 의존성에 따라 연관됨
- 많은 시스템들이 시동 할 때 관련이 없어 보이는 것들까지 초기화과 되는 것
논리적 응집
- 모듈의 내부 데이터는 기능적 뿐만 아니라 논리적으로도 연관 되어있음
동시적 응집
- 같은 소스 파일에 들어있찌만 아무 연관성이 없음
아키텍처에서 가장 흔한 안티패턴, 모든 아키텍처 특성을 지원하는 제네릭 아키텍처를 설계하려는 것
아키텍처 특성 하나하나가 전체 시스템 설계를 복잡하게 만드는 요인이기에, 너무 많은 특서을 수용하면 의도했떤 문제 영역을 해결하기 전에 너무 복잡해 짐 -> 가급적 설계를 단순화하는게 좋음
아키텍처 특성은 핵심 도메인 이해관계자의 의견을 듣고 도메인 관점에서 무엇이 중요한지 의견을 교환하며 정리하게 됨
아키텍트와 이해관계자들이 서로 다른 언어로 말하는게 문제가 됨
- 아키텍처는 확장성, 상호운용성, 학슴성, 가용성을 생각함
- 이해관계자는 인수병합, 고객만족, 출시 시점, 경쟁우위 등을 생각함
말이 안통하니 서로 답답한 문제가 생김.
도메인 관심사를 아키텍처 특성으로 옮겨야하는데, 아래는 일반적인 관심사와 특성을 정리 한 표
도메인관심사 | 아키텍처 특성 |
---|---|
인수 합병 | 상호운용성, 확장성, 적응성, 신장성 |
출시 시기 | 민첩성, 시험성, 배포성 |
유저 만족 | 성능, 가용성, 내고장성, 시험성, 배포성, 민첩성, 보안 |
경쟁 우위 | 민첩성, 시험성, 배포성, 확장성, 가용성, 내고장성 |
시간 및 예산 | 단순성, 실행성 |