본문 바로가기

공부

클린아키텍쳐 1부 정리

1장. 설계와 아키텍쳐란?

1. 설계와 아키텍쳐의 차이

  • 아무런 차이가 없다.
  • 저수준의 세부사항과 고수준의 구조는 모두 전체 설계의 구성요소
  • 개별로 존재하지 않고 고수준에서 저수준으로 향하는 의사결정의 연속성만이 있음
    • 수준?

 2. 목표

  • 소프트웨어 아키텍쳐의 목표는 필요한 시스템 구축, 유지보수 최소화
  • 고객의 요구를 만족시키는데 드는 비용을 최소화, 수명이 다할 때까지 낮게 유지

3. 무엇이 잘못되었나?

  • 훌륭하고 잘 설계된 코드가 중요하다는 사실을 망각
    • 당장 정리되지 않는 코드는 계속 정리되지 않고 생산성은 0으로 수렴
    • 지저분한 코드를 작성 시 단기간엔 빠르게, 장기적으로 볼 때만 생산성이 낮아짐
  • 빨리 가는 유일한 방법은 제대로 가는 것
  • 이럴 때 처음부터 재설계하는 것이 해답이라고 착각
    • 자신을 과신한다면 재설계하더라도 원래의 프로젝트와 똑같이 엉망으로 내몰린다

4. 결론

  • 개발조직의 최고의 선택지는 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는 것
  • 좋은 아키텍처가 무엇인지 이해해야함
    • 비용을 최소화, 생산성은 최대화

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

1. 두가지 가치

  • 행위 Behavior
    • 요구사항을 만족하도록 코드를 작성
    • 위반 시 디버거를 열고 문제를 고침
    • 이 것이 전부라고 생각하는 프로그래머가 많음 
  • 구조 Structure
    • 기계의 행위를 쉽게 변경하기 위해 소프트웨어가 등장
    • 변경하기 쉬워야한다.
      • 어려움은 변경되는 범위(scope)에 비례
      • 변경사항의 형태(shape)에는 관련 없어야 함
    • 개발 비용 증가 원인 변경사항의 범위와 형태의 차이
    • 아키텍처는 형태에 독립적, 그럴수록 실용적

2. 더 높은 가치

  • 완벽하게 동작하지만 수정이 불가능
    • 요구사항이 변경될때 동작하지 않음
    • 프로그램이 쓸모 없어짐
  • 동작은 하지 않지만 변경이 쉬움
    • 프로그램이 돌아가게 수정 가능
    • 변경사항이 발생해도 동작하도록 유지보수 가능
    • 유용한 프로그램
  • 현실적으로 수정이 불가능한 시스템
    • 변경에 드는 비용 > 변경으로 창출되는 수익

3. 아이젠하워 매트릭스

  • 4가지 유형
    • 중요함, 긴급함
    • 중요함, 긴급하지 않음
    • 중요하지 않음, 긴급함
    • 중요하지 않음, 긴급하지 않음
  • 하지만 긴급한 문제는 중요하지 않으며, 중요한 문제는 절대 긴급하지 않다
  • 긴급하지만 중요하지 않은 기능, 긴급하면서 중요한 기능을 구분 못함 -> 아키텍쳐 무시하고 기능 위주
  • 이를 설득할 수 있는 사람이 개발팀을 이끌어야 하고 책임져야 한다

4. 아키텍쳐를 위해 투쟁

  • 소프트웨어를 안전하게 보호해야 할 책임이 있다.
  • 아키텍쳐가 후순위가 되면 시스템 개발하는 비용 증가
  • 시스템 변경이 현실적으로 불가능해짐
  • 이렇게 된 것은 개발팀이 투쟁하지 않았기 때문에 발생 

'공부' 카테고리의 다른 글

클린아키텍쳐 2부 정리  (0) 2024.05.08