👩🏻💻 [클린 아키텍처 소프트웨어 구조와 설계의 원칙 - 로버트C.마틴] 을 읽으면서 정리한 글입니다. 읽으면서 기억하고 싶거나 다시 보고 싶은 문구 위주로 정리합니다.
2장 두 가지 가치에 대한 이야기
소프트웨어 시스템은 서로 다른 두 가지 가치 ‘행위 Behavior’와 ‘구조 structure’를 제공한다. 소프트 웨어 개발자는 두 가지 가치를 모두 반드시 높게 유지해야 하는 책임을 진다.
행위 Behavior
소프트웨어의 첫 번째 가치는 바로 행위다.
프로그래머는 요구사항을 구현하고 버그를 수정하는 일이 전부가 아니다.
아키텍처
소프트웨어는 행위를 쉽게 변경할 수 있어야 한다.
변경사항을 적용하는 데 드는 어려움은 변경되는 범위 Scope에 비례해야 하며, 변경사항의 형태 shape와는 관련이 없어야 한다.
개발자 입장에서는 복잡도가 지속적으로 증가하는 퍼즐 판에서 이해관계자가 계속해서 퍼즐 조각을 맞추라는 지시를 하는 것처럼 느껴진다 (ㅠㅠ공감)
시스템의 형태와 요구사항의 형태가 서로 맞지 않기 때문이다.
문제는 시스템의 아키텍처다.
아키텍처가 특정 형태를 다른 형태보다 선호하면 할수록 새로운 기능을 구조에 맞추는데 더 힘들어진다. 따라서 아키텍처는 형태에 독립적이어야 하고 그럴수록 실용적이다.
더 높은 가치
기능인가 아니면 아키텍처인가?
소프트웨어 시스템이 동작하도록 만드는 것이 더 중요한가? 더 쉽게 변경할 수 있도록 하는 것이 더 중요한가?
아이젠하워 매트릭스
- 긴급하고 중요한
- 긴급하지는 않지만 중요한
- 긴급하지만 중요하지 않은
- 긴급하지도 중요하지도 않은
(아키텍처 = 중요한, 행위 = 긴급) 아키텍처는 가장 높은 두 순위를 차지하는 반면 행위는 첫 번째와 세 번째에 위치한다.
긴급하지만 중요하지 않은 기능과 진짜로 긴급하면서 중요한 기능을 구분하지 못하는 실수를 흔히 저지른다.
기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다.
아키텍처를 위해 투쟁하라
아키텍트는 시스템이 제공하는 특성과 기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 아키텍처를 만들어야 한다.
아티텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.
👩🏻💻 아키텍처의 중요성은 알겠다. 실전에서도 좋은 아키텍처를 만들고 유지할 수 있을지는 직접 해보아야 알겠다. 뒤에 내용들이 궁금하다. 어서 읽어봐야겠다.
'IT 서적 > Clean Architecture' 카테고리의 다른 글
9장. LSP: 리스코프 치환 원칙(Liskov Substitution Principle) (0) | 2022.03.21 |
---|---|
SOLID 설계원칙 - 8장. OCP: 개방-폐쇄 원칙(Open-Closed Principle) (0) | 2022.03.04 |
SOLID 설계원칙 7장. SRP:단일 책임 원칙(Single Responsibility Principle) (0) | 2022.03.04 |
[클린 아키텍처] 2부. 벽돌부터 시작하기: 프로그래밍 패러다임 (구조적/객체지향/ 함수형 프로그래밍) (0) | 2022.02.27 |
[클린 아키텍처] 1부 1장. 설계와 아키텍처란? (0) | 2022.02.11 |
댓글