[Clean Architecture 정리] 1장. 설계와 아키텍처란?
설계와 아키텍처
- 설계는 저수준의 구조 또는 결정사항을 아키텍처는 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 흔히 사용된다.
- 저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소이기 때문에 설계와 아키텍처는 개별로 존재할 수 없고, 경계는 뚜렷하지 않다.
- 고수준에서 저수준으로의 의사결정의 연속성만이 존재한다.
설계의 목표
- 소프트웨어 아키텍처의 목표는 필요한 시스템 개발과 유지보수의 비용을 최소화하는 것이다.
시간의 흐름에 따라 비용은 높아지고 생산성은 낮아지는 소프트웨어
무엇인 잘못되었는가?
1) 개발자 스스로에 대한 과신
- "코드는 나중에 정리하면 돼. 당장은 시장에 출시하는 게 먼저야!"
- 개발자는 생산성을 유지할 수 있다고 자신의 능력을 과신하고, 엉망진창인 코드 쌓여 생산성은 낮아지고 엉망이 되는 추세는 낮아지지 않는다.
2) 지저분한 코드가 단기간에 빠르게 갈 수 있다는 견해
- 지저분한 코드는 장기적으로 볼 때만 생산성이 낮아진다고 생각하지만, 엉망으로 만들어진 코드는 깔끔하게 유지할 때보다 항상 느리다.
빨리 가는 유일한 방법은 제대로 가는 것
- 생산성이 감소되고 비용이 증가하는 현상을 되돌릴 수 있는 유일한 벙법은 개발자로 하여금 스스로의 과신을 버리는 것이다.
- 엉망진창의 코드를 개발자가 스스로 책임을 지도록 한다.
좋은 설계와 아키텍처의 필요성
- 개발조직이 할 수 있는 최고의 선택지는 조직에 스며든 과신을 방지하고, 소프트웨어 아키텍처의 품질을 고민하는 것이다.
- 아키텍처의 품질을 고민하기 위해서는 아키텍처의 이해가 필요하다.
- 즉, 비용을 최소화하고 생산성은 최대화할 수 있는 설계와 아키텍처를 가진 시스템을 만들기 위해선 아키텍처가 지닌 속성을 이해해야 한다.
서적 : http://www.yes24.com/Product/Goods/77283734