본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[책 정리] 2장. 두 가지 가치에 대한 이야기 - Clean Architecture

by 돼지왕왕돼지 2020. 4. 6.

-

모든 소프트웨어 시스템은 이해관계자에게 서로 다른 두 가지 가치를 제공한다.

행위(behavior)와 구조(structure)가 바로 그것이다.

소프트웨어 개발자는 두 가치를 모두 반드시 높게 유지해야 하는 책임을 진다.




행위




아키텍처


-

소프트웨어는 '부드러움을 지니도록' 만들어졌다.

소프트웨어는 기계의 행위를 쉽게 변경할 수 있어야 한다.

만약 기계의 행위를 바꾸는 일을 어렵게 만들고자 했다면, 우리는 소프트웨어가 아니라 하드웨어라 불렀을 것이다.



-

소프트웨어가 가진 본연의 목적을 추구하려면 소프트웨어는 반드시 '부드러워'야 한다.

다시 말해 변경하기 쉬워야 한다.

이해관계자가 기능에 대한 생각을 바꾸면, 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다.

이러한 변경사항을 적용하는 데 드는 어려움은 변경되는 범위(scope)에 비례해야 하며, 변경사항의 형태(shape)와는 관련이 없어야 한다.



-

아키텍처가 특정 형태를 다른 형태보다 선호하면 할수록, 새로운 기능을 이 구조에 맞추는 게 더 힘들어진다.

따라서 아키텍처는 형태에 독립적이어야 하고, 그럴수록 더 실용적이다.




더 높은 가치


-

변경이 완전히 불가능한 프로그램이란 존재하지 않는다.

하지만 수정이 현실적으로 불가능한 시스템은 존재하기 마련인데, 변경에 드는 비용이 변경으로 창출되는 수익을 초과하는 경우이다.




아이젠하워 매트릭스


-

다음곽 같이 우선순위를 정할 수 있다.

1. 긴급하고 중요한

2. 긴급하지는 않지만 중요한

3. 긴급하지만 중요하지 않은

4. 긴급하지도 중요하지도 않은


중요한 일인 아키텍처는 가장 높은 두 순위를 차지하는 반면, 행위는 첫번째와 세번째에 위치한다는 점을 주목해야 한다.



-

업무 관리자와 개발자가 흔하게 저지르는 실수는 세 번째에 위치한 항목을 첫 번째로 격상시켜 버리는 일이다.



-

기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다.




아키택처를 위해 투쟁하라.


-

효율적인 소프트웨어 개발팀은 이러한 투쟁에서 정면으로 맞서 싸운다.

이러한 도전은 당신이 소프트웨어 아키텍트라면 두 배로 중요해진다.

소프트웨어 아키텍트는 시스템이 제공하는 특성이나 기능보다는 시스템의 구조에 더 중점을 둔다.

아키텍트는 이러한 특성과 기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 아키텍처를 만들어야 한다.



-

하나만 기억하자,

아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.

이러한 상황이 발생하도록 용납했다면, 이는 결국 소프트웨어 개발팀이 스스로 옳다고 믿는 가치를 위해 충분히 투쟁하지 않았다는 뜻이다.



댓글0