전체 글(120)
-
21장. 소리치는 아키텍처
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 소리치는 아키텍처 건물의 청사진을 살펴보고 있다고 상상해보자. 아키텍트가 작성한 건물에 대한 일련의 계획을 보여주고 있다. 계획서가 사람이 거주 할 주택이라면 정문, 거실로 연결되는 현관, 그리고 부엌 가족방 등이 있을 가능성이 높다. 이러한 계획서를 보면 이건 한 가족이 사는 주택이라는 느낌을 받을 것이다. 다시 말해, 아키텍처가 난 집이야!!라고 소리칠 것이다. 자, 여러분의 애플리케이션 아키텍처는 뭐라고 소리치는가? 상위 수준의 디렉터리 구조, 최상위 패키지에 담긴 소스 파일을 볼 때, 이 아키텍처는 "헬스케어 시스템이야!", "재고 관리 시스템이야!"라고 소리치는가?? 아니면 "스프링이야!", "ASP..
2023.05.28 -
20장. 업무 규칙
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 업무 규칙 애플리케이션을 업무 규칙과 플러그인으로 구분하려면 업무 규칙이 실제로 무엇인지를 잘 이해해야만 한다. 엄밀하게 말하면 업무 규칙은 사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙 또는 절차다. 더 엄밀하게 말하면 컴퓨터상으로 구현했는지와 상관없이, 업무 규칙은 사업적으로 수익을 얻거나 비용을 줄일 수 있어야 한다. 대출에 N% 이자를 부과한다는 사실은 은행이 돈을 버는 업무 규칙이다. 이건 사람이든 컴퓨터 프로그램이는 하등 관계가 없다. 이러한 규칙을 핵심 업무 규칙(Critical Business Rule)이라고 부를 것이다. 이들 규칙은 사업 자체의 핵심적이며, 규칙을 자동화하는 시스템이 없..
2023.05.27 -
19장. 정책과 수준
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 정책과 수준 소프트웨어 시스템이란 정책을 기술한 것이다. 컴퓨터 프로그램은 각 입력을 출력으로 변환하는 정책을 상세하게 기술한 설명서다. 대다수의 주요 시스템에서 하나의 정책은 이 정책을 서술하는 여러 개의 조그만 정책들로 쪼갤 수 있다. 소프트웨어 아키텍처를 개발하는 기술에는 이러한 정책을 신중하게 분리하고, 정책이 변경되는 양상에 따라 정책을 재편성하는 일도 포함된다. 동일한 이유로 동일한 시점에 변경되는 정책은 동일한 수준에 위치하며, 동일한 컴포넌트에 속해야 한다. 서로 다른 이유로, 혹은 다른 시점에 변겨오디는 정책은 다른 수준에 위치하며, 반드시 다른 컴포넌트로 분리해야 한다. 흔히 아키텍처 개발은..
2023.05.27 -
18장. 경계 해부학
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 경계 해부학 시스템 아키텍처는 일련의 소프트웨어 컴포넌트와 그 컴포넌트들을 분리하는 경계에 의해 정의 된다. 이번 장에서는 경계의 다양한 형태를 알아본다. 경계 횡단하기 런타임에 경계를 횡단한다함은 그저 경계 한쪽에 있는 기능에서 반대편 기능을 호출하여 데이터를 전달하는 일에 불과하다. 적절한 위치에서 경계를 횡당하게 하는 비결은 소스 코드 의존성 관리에 있다. 소스 코드 모듈이 변경되면 의존되는 다른 소스 코드도 다시 컴파일하고 배포해야 한다. 경계는 이러한 변경이 전파 되는 것을 막는 방화벽을 구축하고 관리하는 수단으로써 존재한다. 두려운 단일체 아키텍처 경계 중에서 가장 단순하며 가장 흔한 형태는 물리적..
2023.05.26 -
17장. 경계,선긋기
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 경계: 선 긋기 소프트웨어 아키텍처는 선을 긎는 기술이며, 나는 이러한 선을 경계(boundary)라고 부른다. 경계는 소프트웨어 요소를 서로 분리하고, 경계 한편에 있는 요소가 반대편에 있는 요소를 알지 못하도록 막는다. 프로젝트 초기에 그어진 선은 가능한 오랫동아 결정을 연기시키기 위해, 그래서 이들 결정이 핵심적인 업무 로직을 오염시키지 못하도록 만들려는 목적으로 쓰인다. 아키텍트의 목표는 인적 자원을 최소화하는 것이다. 인적 자원의 효율을 떨어뜨리는 요인은 바로 결합(coupling)이다. 특히 너무 일찍 내려진 결정에 따른 결합이다. 이러한 결정은 시스템의 업무 요구사항, 즉 유스케이스와 아무런 관련..
2023.05.26 -
16장. 독립성
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 독립성 좋은 아키텍처는 다음을 지원해야 한다. 시스템의 유스케이스 시스템의 운영 시스템의 개발 시스템의 배포 유스케이스 첫 번째 주요 항목인 유스케이스의 경우, 시스템의 아키텍처는 시스템의 의도를 지원해야 한다는 뜻이다. 아키텍트의 최우선 관심사는 유스케이스이며, 아키텍처에서도 유스케이스가 최우선이다. 아키텍처는 반드시 유스케이스를 지원해야 한다. 좋은 아키텍처가 행위를 지원하기 위해 할 수 있는 중에서 가장 중요한 사항은 행위를 명확히 하고 외부로 드러내며, 이를 통해 시스템이 지닌 의도를 아키텍처 수준에서 알아볼 수 있게 만드는 것이다. 장바구니 애플리케이션이 좋은 아키텍처를 갖춘다면 이 애플리케이션은 장..
2023.05.25