💡 설계 & 아키텍쳐
두 개념의 차이점
- 소프트웨어에 있어 두 개념은 본질적인 차이점이 전혀 없음
- 일반적으로, 아키텍처는 고수준의 무언가 / 설계는 저수준의 무언가를 가리키는 용어로 사용하는 경우가 잦으나, 실제로 하는 작업들을 살펴보면 혼용되어 사용되는 경우가 매우 많음
- 건축에 빗대어 보면, 아키텍처가 만든 구조를 보면 외관 / 입면도 등에 대한 서술 ( 고수준 )도 있지만, 콘센트 / 전등 스위치 ( 저수준 ) 등에 대한 서술도 포함되어 있음
목표
- 설계, 아키텍쳐의 최종적인 목표는 필요한 시스템을 만들고 유지보수 하는데 투입되는 인력을 최소화 하는 것
- 설계 품질 측정이란, 고객의 요구를 만족시키는데 드는 비용을 측정하는 것
실제 현장에서의 적용
- 실제 현장에서 지켜보면, 소프트웨어의 규모가 커지면 커질수록 기능 구현에 많은 시간이 소요 되는 것을 확인 할 수 있음
- 첫번째 배포에는, 유지보수 작업이 없기 때문에 기능 구현에 많은 시간이 소요되지 않기 때문
- 하지만, 배포가 지속되면 지속될수록 유지보수 기능이 많아짐에 따라 더욱 많은 시간이 소요 됨
- 좋은 설계 구조를 가지고 있다면 일어나지 않을 일
개발자의 오해
- 개발자들이 좋은 설계에 대해 필요성을 모르는건 아님
- 하지만 실제 소프트웨어 개발은, 기능 구현에 급급하여 설계를 나중에 신경 쓰게 되는 경우가 매우 잦음
- 일단 이것만 개발하고, 나중에 설계를 신경쓰려 하나 기능 구현에 대한 니즈는 항상 있기 때문에, 기술 부채가 시간이 지나면 지날수록 늘어남
- 실제로, TDD를 도입 했을 때 기능 구현에 훨씬 시간이 적게 드는 예시를 제시
<aside>
💡 빨리가는 유일한 방법은 제대로 가는 것임을 책에서 강조
</aside>