소프트웨어 아키텍처란 소프트웨어 시스템의 구성방법에 대한 중대한 결정사항을 모아 놓은 것.
(시스템 구성요소, 이 구성요소들이 제공하는 인터페이스, 이 구성요소들의 협력방법, 이 구성요소들의 조립방법)
소프트웨어 아키텍처는 시스템의 유용성, 기능성, 성능, 탄력성, 재사용성, 이해가능성, 경제성, 기술한계, 미학과 같은 모든 기준들을 어떻게 절충할지 결정.
프로그램이나 컴퓨팅 시스템에서 소프트웨어 아키텍처는 소프트웨어 구성요소와 그들이 가진 특성 중에 외부에 드러나는 요소의 특성, 그리고 구성요소들 간의 관계를 표현하는 시스템의 구조나 구조체.
이해관계자들이 시스템을 이해하고 의사 소통할 수 있게 돕는다.
이해관계자들은 시스템의 다른 특징에 관심이 있다. 따라서, 이해관계자들의 관심을 표현하고 상충하는 관심을 협상을 통해 절충할 수 있는 공통 언어가 필요하다.
이 공통언어가 바로 아키텍처고 이해관계자들은 아키텍처를 통해 시스템을 이해할 수 있다.
초기에 중요한 결정을 내린다.
구현 제약 사항을 정의하며, 시스템 개발을 조직화한다.
시스템 품질 속성을 결정, 시스템 변경을 추정하고 관리하기 쉽게 한다.
재사용을 촉진한다.
특정 문제영역에 적합한 아키텍처를 표준화하여 구성요소와 상호작용방식을 재사용할 수 있으며, 얻은 경험을 재사용할 수 있다.
시스템을 진화시킨다.
진화는 쉬워야 하며, 새로운 기능을 쉽게 추가할 수 있어야 한다. 또한 다른 기능에 영향을 주지 않고 기존 기능을 쉽게 수정할 수 있어야 한다.
IEEE 1471-2000에서 제시한 아키텍처를 둘러싼 주변 상황에 대한 개념
시스템은 달성해야 할 사명(Mission)을 가지며(보통 비즈니스 목표가 될 것이다.) 개발되고 운영되는 환경(Environment)에 영향을 받는다. 이해관계자(Stakeholder)들이 이런 사명과 환경을 결정한다. 이해관계자들은 시스템의 모든 부분에 똑같은 수준의 관심(Concern)을 가질 수 없다. 자기에게 중요한 부분에 관심을 더 많이 가지고 그 부분이 시스템에 어떻게 반영될지 궁금해한다.
모든 시스템(System)에는 아키텍처(Architecture)가 딱 하나(여러 아키텍처를 가질 수 없다.)있다. 아키텍처는 시스템이 놓인 환경에서 이해관계자들의 관심을 조절해서 시스템의 목표를 달성해야 한다.
아키텍처는 개념만 있는 것이 아니다.
다양한 이해관계자들의 욕구를 만족시키려면 실체화된 무엇이 있어야 한다.
따라서, 아키텍처를 체계가 잘 잡힌 방법으로 문서화해야 한다. 이 문서가 바로 아키텍처 기술서(Architecture Description)다.
아키텍처 기술서는 아키텍처 활동의 제일 중요한 산출물이다.
이해관계자들은 아키텍처 기술서를 통해 시스템을 이해하고 서로 의사 소통한다. 또, 아키텍처 기술서는 아키텍처를 결정한 근거(Rationale)를 제시해서 쓸데 없는 논쟁을 막고 후임 아키텍트나 유지보수자가 시간을 낭비하는 일을 막아야 한다.
아키텍처 기술서는 아키텍처를 표현하고 이해관계자와 이해관계자들의 관심을 정의한다. 누가 이해관계자이고 이 들의 정확한 관심이 무엇인지 정의하는 것은 굉장히 중요한 일이다. 아키텍처 기술서로 이해관계자와 이 들의 관심을 반드시 문서화해야 한다.
아키텍처 기술서는 뷰(View)들로 이루어진다. 이 뷰가 바로 앞에서 이야기한 이해관계자들이 시스템에 대해 알고 싶어하는 하는 것을 정리한 것이다.
뷰는 설계 산출물에 해당하는 모델(Model)들 가운에 중요하고 꼭 필요한 부분을 모아서 만든다. 어떤 모델에서 어떤 부분을 모아 뷰를 만들지는 해당 뷰의 관점(Viewpoint)이 결정한다. 관점이란 뷰들의 양식이라고 생각할 수 있다. 이해관계자마다 관심사가 다르기 때문에 다양한 관점으로 아키텍처를 기술해야 한다. 의학에서도 관심에 따라 사람을 신경계, 혈관계, 골격, 내장, 피부로 나누어 보는 것과 마찬가지다. 관점은 처음부터 새로 만들 수도 있고 이미 널리 쓰이는 관점을 관점 라이브러리(Library Viewpoint)에서 찾아서 재사용할 수도 있다.
이상으로 소프트웨어 아키텍처 스타일이 무엇인지 알아보았다.
알고보니 - 아키텍처 스타일 및 종류 (2/2) (0) | 2022.04.01 |
---|---|
알고보니 - 아키텍처 스타일 및 종류 (1/2) (0) | 2022.03.29 |
알고보니 - REST 아키텍처 스타일 (0) | 2022.03.23 |
알고보니 - 하이퍼레저 패브릭(블록체인 오픈 소스) (0) | 2022.03.11 |
알고보니 - MSA란? (0) | 2022.03.08 |
댓글 영역