[Clean Architecture] 1부: 소개

okstring·2022년 9월 4일
0

1부 소개

1장 설계와 아키텍처란?

아키텍처: 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 흔히 사용됨

설계: 저수준의 구조 또는 결정사항 등을 의미할 때

  • 설계와 아키텍처가 하는 일을 살펴보면 이러한 구분은 무의미하다.
  • 이러한 저수준의 세부사항과 고수준의 결정사항은 집의 전체 설계의 구성요소가 된다.
  • 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐

목표는?

소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는데 투입되는 인력을 최소화 하는데 있다.

사례 연구

  1. 실제 사례로 엔지니어링 직원 수는 증가하지만 생산성은 점점 늘지 않고 코드 라인당 비용이 굉장히 커진 사례
  1. 코드를 깔끔하게 유지하는 잘 알려진 수련법 중 하나 테스트 주도 개발(TDD)를 통해 적용하지 않은 날보다 적용한 날이 대략 10% 빠르게 작업이 완성됐다는 사례
  • 엉망으로 만들면 깔끔하게 유지할 때보다 항상 더 느리다
  • 빨리 가는 유일한 방법은 제대로 가는 것이다.

결론

소프트웨어 아키텍처를 심각하게 고려할 수 있으려면 좋은 소프트웨어 아키텍처가 무엇인지 이해해야 한다.

2장. 두 가지 가치에 대한 이야기

소프트웨어 시스템은 이해관계자에게 서로 다른 두가지 가치를 제공하는데 행위(behavior)구조(structure)가 바로 그것이며, 두 가지 가치를 모두 반드시 높게 유지해야 하는 책임을 진다.

행위

  • 이해관계자들을 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서
  • 많은 프로그래머가 이러한 활동이 자신이 해야 할 일의 전부라고 생각하지만 틀렸다.

아키텍처

  • 아키텍처의 가치는 소프트웨어(software)라는 단어와 관련이 있다. '부드러운 - soft'과 '제품 - ware'의 합성으로 soft가 아키텍처의 가치와 관련이 있다.
  • 기계의 행위를 쉽게 변경할 수 있도록인데 소프트웨어는 하드웨어와 달리 반드시 변경하기 쉬워야 한다.
  • 소프트웨어 개발비용의 증가를 결정짓는 주된 요인은 변경사항의 범위형태의 차이에 있다.
  • 새로운 요청사항이 발생할때마다 바로 이전의 변경사항으 적용하는 것보다 조금 더 힘들어지는데 시스템의 형태와 요구사항의 형태가 서로 맞지 않기 때문이다.
  • 이 문제는 당연히 시스템 아키텍처다. 형태에 독립적이어야 하고 그럴수록 더 실용적이다.

더 높은 가치

동작은 하지 않지만 변경이 쉬운 프로그램을 내게 준다면 돌아가도록 만들 수 있고 변경사항이 발생하더라도 유지보수 할 수 있다.

아이젠하워 매트릭스

  • 소프트웨어의 첫 번째 가치인 행위는 긴급하지만 매번 높은 중요도를 가지는 것은 아니다
  • 소프트웨어의 두 번째 가치인 아키텍처는 중요하지만 즉각적인 긴급성을 필요로 하는경우는 절대 없다.

업무관리자는 보통 아키텍처의 중요성을 평가할 만한 능력을 겸비하지 못하기 때문에 개발자는 딜레마에 빠리고 소프트웨어 개발자를 고용하는 이유는 바로 이 딜레마를 해결하기 위해서다.

아키텍처를 위해 투쟁하라

소프트웨어 개발팀은 다른 이해관계자들과 동등하게 논쟁한다.


클린 아키텍처 소프트웨어 구조와 설계의 원칙
로버트 C. 마틴 저

http://www.yes24.com/Product/Goods/77283734

profile
step by step

0개의 댓글