What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

개발에서 아키텍쳐가 중요한 이유

  • 아키텍쳐의 정의
  • Design Stamina Hypothesis
  • 개발에서 아키텍쳐가 중요한 이유

아키텍쳐의 정의

The set of design decisions that must be made early 아키텍쳐에 대한 일련의 설계 결정은 초기에 내려야 한다.

The decisions that you wish you could get right early 그 결정들은 당신이 초기에 올바르게 내릴 수 있기를 바란다.

The decisions that are hard to change 결정하면 변경하기 어렵다.

  • Martin Fowler

아키텍쳐 설계는 가장 먼저 우선해서 이루어져야만 하는 올바른 결정이다.

개발에는 품질적인 측면과 기능적인 측면이 있다.

개발자는 장인정신을 발휘해서 품질적인 측면을 개발할 수도 있고, 경제성을 고려하여 기능적인 측면을 개발할 수도 있다.

하지만 현실에서 결국 중요한 것은 경제성이다.

여기서 왜 결국 아키텍쳐가 중요한지 말할 수 있는 가장 중요한 가치를 발견할 수 있다.

아키텍쳐는 경제성과 관련이 있다.

우리는 품질을 비용과 트레이드할 수 있는 가치라고 생각한다.

invisiblearchitecture

하지만 소프트웨어에서는 그 가치가 평가하는 외부의 사람들에게는 보이지 않는다.

즉, 평가하는 외부의 사람들에게는 소프트웨어의 좋은 아키텍쳐좋은 모듈러 설계(design)는 직접적으로 보이지 않는다.

누군가 완전 기능이 동일하지만 100달러 더 비싼 품질의 소프트웨어동일 기능에 품질이 낮은 소프트웨어를 고르라고 한다면 누구도 높은 품질의 소프트웨어(가격이 100달러 더 비쌈)를 고르지 않을 것이다.


Design Stamina Hypothesis(설계 체력 가설)

designstaminahypothesis

위 그래프는 Martin Fowler가 제시한 Design Stamina Hypothesis에 따른 의사그래프이며, 시간의 흐름에 따른 누적되는 기능을 보여주고 있다.

설계되지 않은 아키텍쳐를 가지는 소프트웨어는 시간이 지날 수록 이미 기존에 존재하는 소스코드를 바꾸는 게 어렵기 때문에 새로운 기능을 추가하는 비용이 엄청나게 높아진다.

반면 설계된 아키텍쳐를 가지는 소프트웨어는 시간이 지날 수록 소프트웨어가 잘 컴포넌트화 되어 있고, 이미 존재하는 소스코드가 플랫폼화가 되어 있다.

그렇기 때문에 개발자는 그 플랫폼에 익숙해질 수록 더욱 더 빠르게 새로운 기능을 고안하고 추가할 수 있게 된다.


개발에서 아키텍쳐가 중요한 이유

당연히 내부적으로 퀄리티가 떨어지는 제품을 100달러 더 싸게 제품을 사는 것이 그 당시에는 좋은 선택일 수 있다.

하지만 더 나은 내부 퀄리티를 가진 소프트웨어를 고른다면, 새로운 기능을 더 빠르게 많이 추가할 수 있다.

반면 내부 퀄리티가 낮은 제품은 금방 개선 불가능하게 된다.

내부 퀄리티가 낮은 제품은 지속적으로 시간을 비효율적으로 소모하게 만들고 결과적으로 더 큰 비용을 소비한다.

우리가 좋은 소프트웨어 내부 품질을 추구하지 않는다면, 우리는 소프트웨어를 사용하는 고객을 속이는 것이고,결국은 그 결과로써 고객이 이탈할 것이다.

우리가 지속적으로 업데이트하기 위해 CI, CD를 도입하는 것도 이러한 맥락이다.

지속적인 업데이트는 그만큼 중요하다.

결국 개발에 있어서 아키텍쳐경제학적으로 중요하다.


댓글남기기