본문 바로가기

책과 강연/온라인 강연

[유튜브] 소프트웨어 아키텍처의 중요성

 

위 영상은 마틴 파울러씨가 좋은 아키텍처에 대해서 설명하는 내용이다.

짧은 영상이라 내용은 간단하지만, 말하는 내용이 명확하고 핵심을 찔러서 정리해본다.

 

아키텍처의 정의

The fundamental organization of a system, embodied in its components, their relationships to each other and to the environment, and the principles governing its design and evolution
:시스템의 구성 요소, (시스템 및 구성요소의) 상호 관계 및 환경과의 관계, 시스템의 설계 및 진화를 관리하는 원칙으로 구현되는 기본 조직

ANSI / IEEE 
1471-2000

 

IEEE(Institute of Electrical and Electronics Engineers)에서 정의한 이 정의는 너무 거시적이라 표현하며, 좀 더 단순하고 구체적으로 정의해야할 필요성을 말해준다.

 

마틴 파울러는 아키텍처의 대한 공통적인 속성 두 가지를 뽑아냈다. 

 

먼저, 아키텍처는 지식을 공유하는 것이다.

전문 개발자들은 시스템 디자인에 대한 지식을 공유한다. 구성원들간에 프로젝트에 대한 이해도를 필요로 하기 때문이다. 아키텍처는 이런 시스템 디자인 단계에서 공유되는 지식이다.

 

그리고, 바꾸기 어려운 것이다. 

아키텍처는 가장 우선적으로 정해지며, 쉽게 변경되서는 안되는 결정이다.

 

이 둘을 조합하여서 마틴 파울러는 아키텍처란 뭔가 중요한 것(the important stuff whatever that is)이라 표현하다. 

더 구체적으로는 프로젝트의 핵심 가치를 의미한다. (프로젝트/코드에 핵심 가치를 녹아내기 위한 결정들이 무엇보다 중요하다 하는 것으로 보아 이런 결정들도 아키텍처라 봐도 될 거 같다.)

 

 

아키텍처가 중요한 이유

그의 답부터 공유하면 "경제적이기 때문이다"

 

다만, 이 부분에서 관점의 차이를 설명해주는데 그 부분이 재밌다.

벽은 소프트웨어 외부와 내부를 나누고 있다.

위 벽은 소프트웨어의 내부와 외부를 나눈다.

개발자는 내부를 볼 수 있고, 고객과 그리고 개발자가 아닌 동료들은 외부만을 볼 수 있다.

그래서 외부의 퀄리티가 동일하다면, 외부만 보는 고객과 동료들은 왜 더 많은 시간을  투자해야하는 지 이해하기 힘들며, 투자한 결과가 동일한 결과물에 대해서 비경제적이라 느끼게 된다.

 

design stamina hypothesis

다만, 이 가설처럼 아키텍처가 좋은 디자인을 가지지 못했다면, 개발을 확장해나가는 부분이 부담이 된다. 정확히는 기능이 추가될때마다 매우 압도적으로 증가한다. 

즉, 장기적인 관점에서 좋은 아키텍처는 낭비되는 개발시간을 최소화하기 때문에 경제적인 선택이 된다. (기술부채를 최소화한다.)

 

 

참고자료

https://martinfowler.com/bliki/DesignStaminaHypothesis.html

 

bliki: DesignStaminaHypothesis

The value of good software design is economic: you can continue to add new functionality quickly even as the code-base grows in size.

martinfowler.com