설계와 아키텍처란?
설계(Design)과 아키텍처(Architecture) 사이에는 많은 혼란이 있었다.
어떤 차이가 있는가?
이 책의 목적은 이러한 혼란을 없애고, 설계와 아키텍처가 무엇인지를 완전하게 정의하는 것이다.
'아키텍처'는 저수준의 세부사항과는 분리된 고수준의 무언가를 가르킬 때 주로 사용
'설계'는 저수준의 구조 또는 결정사항 등을 의미할 때가 많다.
하지만 아키텍처를 보고도 저수준을 알 수 있다.
결국 저수준의 세부사항과 고수준의 구조는 모두 전체 설계를 위한 구성요소이다.
이 둘을 따로 보는 것이 아닌 합쳐서 하나의 설계로 봐야한다.
고수준 -> 저수준으로 향하는 의사결정의 연속
목표는?
그렇다면 의사결정의 목표는?
좋은 소프트웨어 설계 목표는?
소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데에 있다.
회사가 성장하면 직원이 많아진다.
직원이 많아지면 당연히 회사 입장에서는 비용이 많이 든다.
하지만 대부분의 회사들을 보면 작성되는 코드 라인 수는 그만큼 증가하지 않는다.
-> 회사 성장 -> 직원 더 뽑음 -> 코드 라인수 대비 비용 증가 -> 회사 입장 손실
엉망진창이 되어 가는 신호
시스템을 급하게 만들거나, 결과물의 총량을 순전히 프로그래머 수만으로 결정하거나
코드와 설계의 구조를 깔끔하게 만들지 않으면 비용 곡선은 파국으로 치닫는다.
개발자 입장에서는 초반에는 높은 효율을 내지만, 가면 갈수록 떨어져서 결국엔 사소한 기능을 추가하는 일도 이리저리 파일을 옮겨다니며 코드 작성에 애를 먹는다.
경영자의 시각
왜 직원들 월급은 더 나가는데, 진도가 늦어?
무엇이 잘못되었나?
이솝우화 중 토끼와 거북이 있다.
- 느려도 꾸준하면 이긴다.
- 급할수록 돌아가라
현대의 개발자도 비슷한 경주를 한다.
그렇다고 개발자가 자는 것은 아니다. 오히려 뼈 빠지게 일한다. 하지만 그들의 뇌는 잔다.
훌륭하고 깔끔하게 설계된 코드가 중요하다는 사실을 알고 있는 뇌가 잔다.
"이 코드는 나중에 정리하면 돼. 당장은 시장에 출시하는 게 먼저야"
-> 경쟁자가 뒤 쫓고 있고, 앞서 가려면 빠르게 출시해야 하기 때문이다.
하지만 개발자는 태세를 전환하지 않는다. 이전 코드들을 정리하는 일은 발생하지 않는다.
출시 후에는 다음 기능, 다음 기능 .....
엉망으로 만들면 깔끔하게 유지할 때보다 언제나 항상 더 느리다
결론
어떤 경우라도 개발 조직이 할 수 있는 최고의 선택지는 능력을 과신하지 않고, 소프트웨어 아키텍처의 품질에 대해 고민하는 것이다.
고민하기 위해서는 좋은 소프트웨어 아키텍처가 무엇인지 알아야 한다.
비용은 최소화, 생산성을 최대화 하는 시스템을 만들려면, 결국 아키텍처가 갖는 속성을 알아야 한다.
'스터디 > 클린아키텍처' 카테고리의 다른 글
[Clean Architecture] 클린 아키텍처(객체 지향 프로그래밍) - 5 (0) | 2021.03.31 |
---|---|
[Clean Architecture] 클린 아키텍처(구조적 프로그래밍) - 4 (0) | 2021.03.31 |
[Clean Architecture] 클린 아키텍처(패러다임 개요) - 3 (0) | 2021.03.31 |
[클린 아키텍처] Clean Architecture(두가지 가치에 대한 이야기) - 2 (0) | 2021.03.30 |
[클린 아키텍처] Clean Architecture - 0 (0) | 2021.03.30 |