클린 아키텍처 - 아키텍처1

jaehee kim·2022년 1월 25일
1

Clean Architecture

목록 보기
3/7
post-thumbnail

아키텍처?

시스템을 구축했던 사람들이 만들어낸 시스템의 형태.
시스템을 컴포넌트로 분할하는 방법, 분할된 컴포넌트를 배치하는 방법, 컴포넌트가 서로 의사소통하는 방식에 따라서 모양이 정해진다. 시스템이 쉽게 개발, 배포, 운영, 유지보수되도록 만들어진다.

좋은 아키텍처는 시스템을 쉽게 이해하고, 쉽게 개발하며, 쉽게 유지보수하고, 쉽게 배포하게 해준다.
아키텍처의 궁극적인 목표는 시스템의 수명과 관련된 비용은 최소화하고, 프로그래머의 생산성은 최대화하는 데 있다.


선택사항 열어 두기

모든 소프트웨어 시스템은 정책과 세부사항 2가지 구성요소로 분해할 수 있다.

  • 정책 : 모든 업무 규칙과 업무 절차를 구체화
  • 세부사항 : 사람, 외부 시스템, 입출력 장치, 데이터베이스, 웹 시스템, 서버, 프레임워크, 통신 프로토콜

시스템에서 정책을 가장 핵심적인 요소로 식별하고, 세부사항은 정책에 무관하게 만들 수 있는 형태의 시스템을 구축하는 것이 목표이다.



독립성

좋은 아키텍처가 지원하는 것

  • 유스케이스
  • 운영
  • 개발
  • 배포

유스케이스

시스템의 아키텍처는 시스템의 의도를 지원해야 한다.
좋은 아키텍처가 행위를 지원하기 위해 할 수 있는 가장 중요한 사항은 행위를 명확히하고 외부로 드러내어, 시스템이 지닌 의도를 아키텍처 수준에서 알아볼 수 있게 만드는 것이다.

운영

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

개발

아키텍처는 개발환경을 지원하는 데 있어 핵심적인 역할을 한다.

배포

아키텍처는 배포 용이성을 결정하는 데 중요한 역할을 한다. 좋은 아키텍처라면 시스템이 빌드된 후 즉각 배포할 수 있도록 지원해야 한다.


계층 결합 분리

UI, 애플리케이션에 특화된 비지니스 로직, 애플리케이션과 독립적인 비지니스 로직, 데이터베이스 등의 수평적인 계층으로 시스템을 분리할 수 있다.


유스케이스 결합 분리

시스템을 수평적 계층으로 분할하면서 동시에 해당 계층을 가로지르는 얇은 수직적인 유스케이스로 분할할 수 있다.





Reference

Clean Architecture - Robert C. Martin

0개의 댓글