📖 [2장] 두 가지 가치에 대한 이야기
📘 클린 아키텍처 북스터디 정리입니다
📚 도서: 로버트 C. 마틴 《Clean Architecture》
🧑💻 목적: 올바른 설계에 대한 감각과 습관을 익히기 위해
🗓️ 진행 기간: 2025년 7월 ~ 매주 2장
✅ 핵심 요약 (Key Takeaways)
이 장의 핵심 문장은?
소프트웨어 개발자는 소프트웨어 시스템이 제공하는 두 가지 가치를 모두 반드시 높게 유지해야 하는 책임을 진다
저자가 전달하고자 하는 메시지 요약
- 아키텍처는 앱의 기능이나 특성보다 우선순위가 되어야 한다
💡내용 정리
서론: 소프트웨어의 두 가지 가치
- 소프트웨어 시스템이 이해관계자에게 제공하는 두 가지 가치:
- 행위 (
behavior)
- 구조 (
structure)
- 개발자는 두 가치를 모두 높게 유지할 책임이 있음
행위(behavior)
- 프로그래머를 고용하는 이유: 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서
- 즉 코딩이라는 행위를 통해 비즈니스 가치 제공
아키텍처(architecture)
- 소프트웨어(
software) = 소프트(soft) + 웨어(ware): 변경이 용이해야 함
- 이해관계자가 기능에 대한 생각을 바꾸면 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 함
- 경의 어려움은 변경되는 범위(
scope)에 비례하고, 형태(shape)와는 무관해야 함
- 좋은 아키텍처는 형태에 독립적
더 높은 가치
- 기능? 아키텍처?
- 시스템을 동작하게 만드는 것 ? 시스템을 더 쉽게 변경 가능하게 하는 것?
아이젠하워 매트릭스
긴급한 문제는 중요하지 않으며, 중요한 문제는 절대 긴급하지 않습니다.
- 소프트웨어의 첫번째 가치인 행위는 긴급하지만 항상 중요한 것은 아님
- 소프트웨어의 두번째 가치인 아키텍처는 중요하지만 긴급하지 않음
최종 우선순위
- 긴급하고 중요한
- 긴급하지는 않지만 중요한
- 긴급하지만 중요하지 않은
- 긴급하지도 중요하지도 않음
결론
- 중요한 일이 우선. 그 다음 긴급성 여부 확인
- 업무 관리자는 보통 아키텍처의 중요성을 평가할만한 능력을 겸비하지 못하기 때문에, 기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 개발팀이 책임져야 함
책임
소프트웨어 개발자의 책임
- 개발자는 소프트웨어를 안전하게 보호해야 할 책임이 있음
소프트웨어 아키텍트
-시스템이 제공하는 특성이나 기능보다는 시스템의 구조에 더 집중해야 함
- 아키텍트는 이러한 특성과 기능을 개발하기 쉽고, 간편하게 수정가능하며, 확장하기 쉬운 아키텍처를 만들어야 함