설계와 아키텍처의 구분은 무의미하다. 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐이다.
소프트웨어 아키텍처의 목표는
필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다.
"코드는 나중에 정리하면 돼, 당장은 시장에 출시하는 게 먼저야!" 라는 거짓말에 속는다.
이렇게 속아 넘어간 개발자라면 나중에 코드를 정리하는 경우는 한 번도 없는데, 시장의 압박은 절대로 수그러들지 않기 때문이다.
-> 공감하며 반성하게 되는 말! 다음에 만들어야 할 기능은 계속 나를 기다리고 있다...
빨리가는 유일한 방법은 제대로 가는것이다.
자신을 과신한다면 재설계하더라도 원래의 프로젝트와 똑같이 엉망으로 내몰린다.
비용을 최소화하고 생산성은 최대화할 수 있는 설계와 아키텍처를 가진 시스템을 만들려면,
시스템 아키텍처가 지닌 속성을 알고있어야 한다.
소프트웨어 개발자가 높게 유지해야하는 책임을 가지는 "행위" 와 "구조" 라는 2가지 가치
-> 한가지 가치에만 집중하고 나머지 가치는 배제하곤 한다.
-> 혹은 덜 중요한 가치에 집중하는 경우가 있다.
행위
: 요구사항을 기계에 구현하고, 버그를 수정하는 일
-> 프로그래머가 이것만 자기 일이라고 생각하는데 틀렸다.
- 긴급하지만 매번 높은 중요도를 가지는 것은 아니다.
아케텍처
: 소프트웨어(soft부드러운+ware제품)라는 단어와 관련이 있다. = 변경사항을 간단하게 적용할 수 있어야한다.
-> 아키텍처는 형태에 독립적이어야 실용적이게 된다.
- 중요하지만 즉각적인 긴급성을 필요로 하는 경우는 없다.
소프트웨어 시스템이 동작하도록 만드는 것 < 소프트웨어 시스템을 더 쉽게 변경할 수 있도록 하는 것
ex) 변경 요청이 들어올 떄 "비용이 너무 커 현실적으로 적용할 수 없다" -> 변경 불가능한 상태에 처할 떄까지 시스템을 방치한 것
소프트웨어 개발자의 책무
: 소프트웨어를 안전하게 보호해야 할 책임이 있으므로 이해관계자들과 동등하게 논쟁해야한다.
소프트웨어 아키텍트의 책무
: 기능보다는 시스템 구조에 더 중점을 둔다. 개발하기 쉽고, 간편하게 수정가능하며, 확장하기 쉬운 아키텍처를 만들어야한다.
'클린아키텍처' 카테고리의 다른 글
[클린아키텍처] 17장 경계: 선긋기, 18장 경계 해부학 (0) | 2022.03.10 |
---|---|
[클린아키텍처] 15장 아키텍처란?, 16장 독립성 (0) | 2022.03.06 |
[클린아키텍처] 12장~14장 컴포넌트 원칙 (0) | 2022.03.06 |
[클린아키텍처] 7장~11장 설계원칙 - SOLID 원칙 (0) | 2022.02.27 |
[클린아키텍처] 3장~6장 프로그래밍 패러다임 - 구조적 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍 (0) | 2022.02.27 |
댓글