본문 바로가기

아키텍처5

소프트웨어 아키텍처 선택의 중요성 소프트웨어 아키텍처는 높은 추상화 단계에서의 소프트웨어 설계이다. 아키텍처 결정 중 일부는 코드 깊숙이 영향을 미치므로 아키텍처와 디자인 사이의 경계를 구분하기 어려울 수도 있다. 아키텍처가 시스템의 골격 역할을 하고, 품질 속성에 영향을 미치며, 시스템을 제한하기 때문에 소프트웨어 아키텍처 선택은 중요하다. 아키텍처는 시스템 전반에 영향을 끼친다. 시스템의 목적에 따라 올바른 아키텍처를 선택해야만 한다. 아키텍처는 기능에 직접적인 영향을 끼치지 않기 때문에 어느 정도는 아키텍처와 기능을 자유롭게 조합사여 사용할 수 있다. 하지만 필요한 기능과 품질 속성에 아키텍처가 적합하다면 시스템을 구축하기가 훨씬 쉬워진다. 반대로 아키텍처가 접합하지 않다면 요구사항을 충족하는 데 어려움이 있어 어느 선에서 타협해야.. 2023. 1. 28.
아키텍처 세 가지 접근 방식 소프트웨어 아키텍트라면 인정하기 싫겠지만, 개발자가 소프트웨어 아키텍처를 무시하더라도 성공할 수 있는 시스템이 많다. 그렇지만 소프트웨어 아키텍처를 충분히 생각했다면 피할 수 있었던 실패도 많다. 예를 먼저 들어보자. 예전 트럭은 안전벨트가 없었다. 그때의 트럭은 안전벨트가 없었다. 설계자가 차를 설계 할 때 안전에 무관심했다는 뜻이다. 설계자가 차를 설계할 때 안전에 무관심했다는 뜻이다. 그 이후에 나온 차들은 안전벨트가 있었다. 설계자는 아키텍처 집중 설계를 선택하여 안전벨트를 장착했다. 하지만 매번 버클을 맸어야 했다. 버클을 매지 않으면 안전을 보장할 수 없었다. 요즘에 나온 차들은 전부 에어백이 있어야 한다. 아키텍처 수준에서 안정성을 우선하지 않은 차량을 구매할 수 없다. 즉, 아키텍처 상향 .. 2023. 1. 28.
추정 아키텍처와 레퍼런스 아키텍처 추정(Presumptive) 아키텍처와 레퍼런스(Reference) 아키텍처의 이해와 차이 추정 아키텍처는 특정 도메인에서 지배적인 아키텍처군이다. 해당 도메인의 개발자가 추정 아키텍처 이외의 아키텍처를 선택해서 사용하려면 합당한 이유가 있어야 한다. 일반적인 웹 서비스라면 보통 3 레이어의 아키텍처를 가진다. Presentation layer - Business layer - persistence layer 관성에 의해서 움직이거나 호기심이 적은 개발자라면 추정 아키텍처 이외의 아키텍처를 심각하게 고려하지 않거나, 모든 소프트웨어가 추정 아키텍처를 준수해야 한다고 오해할 수도 있다. 추정 아키텍처는 레퍼런스 아키텍처와 유사하다. 레퍼런스 아키텍처는 문제에 대한 이키텍처 해결책을 설명하는 아키텍처군이며 .. 2023. 1. 28.
소프트웨어 아키텍처의 정의 소프트웨어 아키텍처의 정의 이 정의는 가장 널리 사용되는 것으로 소프트웨어 공학 연구소(Software Engineering Institute)[Clements el al., 2010]에서 나온 내용이다. 원문 The software architecture of a computing system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both. 번역 컴퓨팅 시스템의 소프트웨어 아키텍처는 시스템에 대해 추론하는 데 필요한 일련의 구조로, 소프트웨어 요소, 이들 사이의 관계 및 속성으로 구성됩니다. 정의는 명확.. 2023. 1. 24.