[Book]Clean Architecture 5부(15~19장)

아키텍처란?

  • SW아키텍트는 코드와 동떨어져서는 안 된다.
  • 아키텍처의 주된 목적은 시스템의 생명주기를 지원하는 것이다.
  • 좋은 아키텍처는 시스템을 쉽게 이해하고, 쉽게 개발하며, 쉽게 유지보수하고, 또 쉽게 배포하게 해준다.
  • 아키텍처의 궁극적인 목표는 시스템의 수명과 관련된 비용은 최소화하고, 프로그래머의 생산성은 최대화하는 데 있다.

개발

  • 개발하기 힘든 시스템이라면 수명이 길지도 않고 건강하지도 않을 것이다.

배포

  • SW 아키텍처는 시스템을 단 한 번에 쉽게 배포할 수 있도록 만드는 데 그 목표를 두어야 한다.

운영

  • 좋은 SW아키텍처는 시스템을 운영하는데 필요한 요구를 알려준다.

유지보수

  • 모든 측면에서 봤을 때, SW시스템에서 비용이 가장 많이 든다.
  • 신중하게 아키텍처를 만들면 이 비용을 크게 줄일 수 있다.

선택사항 열어두기

  • 아키텍트의 목표는 시스템에서 정책을 가장 핵심적인 요소로 식별하고, 동시에 세부사항은 정책에 무관하게 만들 수 있는 형태의 시스템을 구축하는 데 있다. 이를 통해 세부사항을 결정하는 일은 미루거나 연기할 수 있다.

독립성

유스케이스

  • 시스템 아키텍처는 시스템의 의도를 지원해야 한다.
  • 아키텍트의 최우선 관심사는 유스케이스이며, 아키텍처에서도 유스케이스가 최우선이다.

운영

  • 시스템의 운영 지원 관점에서 볼 때, 아키텍처는 더 실질적이며 덜 피상적인 역할을 맡는다.

개발

  • 콘웨이의 법칙

시스템을 설계하는 조직이라면 어디든지 그 조직의 의사소통 구조와 동일한 구조의 설계를 만들어 낼 것이다.

배포

  • 목표는 즉각적인 배포

유스케이스 결합분리

경계 : 선긋기

  • 소프트웨어 아키텍처는 선을 긋는 기술이며, 경계라고 부른다.
  • 어떤 종류의 결정이 이른 결정일까?
    • 시스템의 업무 요구사항
    • ex) 프레임워크, 데이터베이스, 웹 서버, 유틸리티 라이브러리, 의존성 주입에 대한 결정
  • 좋은 아키텍처는 이러한 결정을 최후의 순간에 내릴 수 있게 해주며, 결정에 따른 영향이 크지 않게 해준다.

경계 해부학

  • 경계 횡단하기
  • 두려운 단일체
  • 배포형 컴포넌트
  • 스레드
  • 로컬 프로세스
  • 서비스

정책과 수준

  • 좋은 아키텍처라면 각 컴포넌트를 연결할 때, 의존성 방향이 컴포넌트의 수준을 기반으로 연결되도록 만들어야 한다. 즉, 저수준 컴포넌트가 고수준 컴포넌트에 의존하도록 설계되어야 한다.
  • 소스코드의존성은 그 수준에 따라 결합되어야하며, 데이터 흐름을 기준으로 결합되면 안된다.

카테고리:

업데이트:

댓글남기기