15장 아키텍처란?

 

소프트 시스템 아키텍트란? 프로그래밍 작업에는 지속적으로 참여하며 동시에 팀원들의 생산성을 극대화할 수 있는 설계를 하도록 방향을 이끌어주는 프로그래머.

 

소프트 시스템 아키텍처란? 시스템을 구축했던 사람들이 만들어낸 시스템의 형태. 좋은 아키텍처는 시스템을 쉽게 이해, 개발, 유지보수, 배포하게 해줌.

 

 

 

개발

 

시스템 아키텍처는 개발팀들이 시스템을 쉽게 개발할 수 있도록 만드는데 도움을 주어야함.

 

 

 

팀구조에 따른 아키텍처 결정

 

5명이하 : 초기 아키텍처관련 제약에서 해방 → 모놀리틱(monolithic) 시스템 사용.

7명으로 구성된 5팀 : 안정된 인터페이스, 컴포넌트단위로 분리 → MSA.

 

 

 

배포

 

소프트웨어 아키텍처는 시스템을 단 한번에 쉽게 배포할 수 있도록 만든다.

 

초기 개발단계에서 배포전략을 고려하지 않는다면?

초기 개발단계에 MSA채택 할 경우

→ 배포시기에 수 많은 마이크로서비스들을 연결, 설정, 작동순서 결정시 오작동 발생.

 

 

 

운영

 

소프트웨어 아키텍처는 시스템 운영에서 극적인 영향을 주지는 않음.

 

시스템 운영시 아키텍처가 비효율적?

→ 스토리지, 서버등 하드웨어 추가

 

시스템운영시 아키텍처의 다른역할?

→ 개발자에게 시스템 운영방식, 주요 목표, 시스템 이해를 도우며 개발, 유지보수에 큰 도움을 줌.

 

 

 

유지보수

 

유지보수는 소프트웨어 시스템에서 비용이 가장 많이 들며 그 비용은 탐사 와 이로인한 위험부담이 크게 차지함.

 

탐사란? 기존 소프트웨어에 새로운 기능을 추가, 결함 수정할 때 소프트웨어를 파헤쳐서 어떤방향으로 진행할지 결정하는 행위.

 

아키텍처를 컴포넌트를 분리, 안정된 인터페이스를 두며 신중하게 만들면 비용을 크게 줄일 수 있음.

 

 

 

선택사항 열어 두기

 

소프트웨어시스템은 정책(Policy), 세부사항으로 분해할 수 있음.

소프트웨어시스템을 부드럽게 유지하는 방법은 선택사항을 가능한 많이, 오랫동안 열어 두는것임.

 

선택사항이란? 중요하지 않은 세부사항을 말하며, 또 세부사항은 개발초기에 고수준의 정책이 신경쓸 필요가 없는 데이터베이스 종류를 예로 들 수 있다.

 

좋은 아키텍트는 결정되지 않은 장치독립성(=정책이 세부사항을 의존하지않는것, 그러한 세부사항인 장치)을 가진 세부사항의 수를 최대화하며 오랫동안 미결정 하여 더 많은 정보를 얻으며 이를 기초로 제대로 된 결정을 내릴 수 있음.

'📚 Book > Clean Architecture' 카테고리의 다른 글

17장 경계 : 선긋기  (0) 2020.02.22
16장 독립성  (0) 2020.02.22
14장 컴포넌트 결합  (0) 2020.02.22
13장 컴포넌트 응집도  (0) 2020.02.19
11장 DIP: 의존성 역전 원칙  (0) 2020.02.19