본문 바로가기
발전로그/책장로그-개발

클린 아키텍처 - 소프트웨어 구조와 설계의 원칙 01 2장

by 4lleycat 2022. 1. 9.

2. 두 가치에 대한 이야기

모든 소프트웨어 시스템은 이해관계자에게 행위와 구조라는 두 가지 가치를 제공하며

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

 

소프트웨어의 첫번째 가치 - 행위(behavior, 기능)

이해관계자는 기계(시스템)으로 수익을 창출하기 위해 프로그래머를 고용한다.

프로그래머는 이해관계자의 요구사항을 코드로 작성한다.

이렇게 요구사항을 구현하고 버그를 수정 유지보수하는 일만이 프로그래머의 업무의 모든 것이 아니다!?

 

소프트웨어의 두번째 가치 - 아키텍처(structure 구조)

소프트웨어는 부드러워야하나 즉 변경이 쉬워야 한다 그래서 소프트! 웨어이다.

이해관계자의 변경사항을 간단하고 쉽게 적용 할수 있어야 하며 변경사항 적용의 어려움은 범위에는 비례하지만 형태에는 관련이 없어야 한다.

독립적일수록 실용적이다.

 

더 높은 가치

위 두 가 치중 어떤 것이 더 높은가? (물론 둘 다 높아야 한다! 그중에 중요도를 따지는 것)

행위는 긴급하지만 매번 높은 중요도를 가진 것은 아니다.

아키텍처는 중요하지만 긴급하지 않다.

 

업무는 중요성과 긴급성(아이젠하워 매트릭스)을 가지고 있다.

이 매트릭스로 일의 처리 순서를 정하면 

  1. 긴급하고 중요한
  2. 긴급하지 않지만 중요한
  3. 긴급하지만 중요하지 않은
  4. 긴급하지도 않고 중요하지도 않은 

위 순서중 아키텍처는 1,2에 해당하고 행위는 3에 해당한다.

하지만 일을 진행하다 보면 3에 해당하는 행위를 가장 우선시하는 실수를 흔하게 범할 수 있으니 주의해야 한다!

그리고 개발자가 나서서 중요성이 높은 가치를 계속 업무관리자, 이해관계자에게 설득해야 한다.

그 중요도를 설득하는 일이 개발자를 고용한 가치를 보여주는 것이다.

아키텍처를 위해 투쟁하라!

소프트웨어를 개발하는 개발자도 소프트웨어라는 상품을 제공하는 이해관계자이다.

그렇기 때문에 만드는 소프트웨어를 보호하고 개발팀이 옳다고 믿는 가치, 아키텍처를 위해 투쟁하여야 한다.