Song's Tech Blog

기술 블로그

소리치는 아키텍처

Clean Architecture - Item 21

아키텍처의 테마 소프트웨어 아키텍처는 시스템의 유스케이스를 지원하는 구조 {: width=”45%” height=”30%”} 소프트웨어 애플리케이션의 아키텍처도 애플리케이션의 유스케이스에 대해 소리쳐야 한다. 또한 아키텍처는 프레임워크에 대한 것이 아니다. 아키텍처를 프레임워크로부터 제공받아서는 안된다. 아키텍처의 목적 좋은 아키텍처는 유스케이스를 ......

업무 규칙

Clean Architecture - Item 20

업무규칙: 사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙, 또는 절차 즉 컴퓨터상으로 구현했는지와 상관없이 사업적으로 수익을 얻거나, 비용을 줄일 수 있어야 한다. 심지어 사람이 수동으로 직접 수행하더라도 마찬가지다. 핵심 업무 규칙: 사업 자체에 핵심적이며 규칙을 자동화하는 시스템이 없더라도 그대로 존재 ex) 대출에 N% 이자를 부과한다는 사......

정책과 수준

Clean Architecture - Item 19

소프트웨어 시스템이란 정책을 기술한 것이다. 컴퓨터 프로그램은 각 입력을 출력으로 변환하는 정책을 상세하게 기술한 설명서이다. {: width=”50%” height=”30%”} 소프트웨어 아키텍처를 개발하는 기술에는 정책을 신중하게 분리하고, 정책이 변경되는 양상에 따라 재편성하는 일도 포함된다. 동일한 이유로 동일 시점에 변경되는 정책은 동일한 ......

경계 해부학

Clean Architecture - Item 18

시스템 아키텍처는 일련의 소프트웨어 컴포넌트와 그 컴포넌트들을 분리하는 경계에 의해 정의된다. 가장 흔한 경계의 예들을 살펴보자. 런타임에 경계 횡단하기: 경계 한쪽에 있는 기능에서 반대편 기능을 호출하여 데이터를 전달하는 일 적절한 위치에서 경계를 횡단하게 하는 비결은 소스코드 의존성 관리에 있다. 소스코드 모듈 하나 변경 -> 이를 의존......

경계 : 선긋기

Clean Architecture - Item 17

소프트웨어 아키텍처는 선을 긋는 기술이다. 이러한 선을 “경계” 라고 부른다. 경계는 소프트웨어 요소를 서로 분리하고, 서로 알지 못하도록 막는다. 아키텍트의 목표는 필요한 시스템을 만들고 유지하는데 드는 인적 자원을 최소화하는 것이다. 이러한 인적 자원의 효율을 떨어뜨리는 요인이 “결합” 이다. 특히 너무 일찍 내려진 결정에 따른 결합이다. 이......

독립성

Clean Architecture - Item 16

좋은 아키텍처가 지원해야 하는 것들 시스템의 유스케이스 시스템의 운영 시스템의 개발 시스템의 배포 유스케이스 유스케이스 다이어그램 시스템의 아키텍처는 시스템의 의도를 지원해야 한다. 시스템이 장바구니 애플리케이션이라면, 장바구니와 관련된 유스케이스를 지원해야 한다. 아키텍처에게 유스케이스가 최우선이다.좋은 아키텍처는 행위를 명확히 하고 외부로 ......

아키텍처란?

Clean Architecture - Item 15

소프트웨어 아키텍트 프로그래머 코드와 동떨어져서는 안된다. 최고의 프로그래머이며 나머지 팀원들의 생산성을 극대화 할 수 있는 설계를 하도록 방향을 이끌어준다 소프트웨어 아키텍처 시스템을 구축했던 사람들이 만들어낸 시스템의 형태 컴포넌트로 분할하는 방법, 분할된 컴포넌트를 배치하는 방법, 컴포넌트가 서로 의사소통하는 방식에 따라 정해진다. ......

컴포넌트 응집도

Clean Architecture - Item 13

컴포넌트 응집도어느 클래스를 어느 컴포넌트에 포함시켜야 할까? 다음은 컴포넌트 응집도에 관련된 세 가지 원칙이다. REP : 재사용/릴리스 등가 원칙CCP : 공통 폐쇄 원칙CRP : 공통 재사용 원칙REP : 재사용/릴리스 등가 원칙 재사용 단위는 릴리스 단위와 같다. semantic versioning 우리에게 REP 는 어찌보면 너무나 당......

컴포넌트 결합

Clean Architecture - Item 14

컴포넌트 결합컴포넌트 결합은 컴포넌트 사이의 관계를 설명 한다. ADP : 의존성 비순환 원칙 컴포넌트 의존성 그래프에 순환(cycle)이 있어서는 안된다. 숙취 증후군(the morning after syndrome) 많은 개발자가 동일한 소스파일을 수정하는 환경에서 발생한다. 소스 코드가 의존하고 있던 무엇인가가 수정되는게 주된 이유이다. 해......

컴포넌트

Clean Architecture - Item 12

컴포넌트컴포넌트는 배포단위다. 즉, 시스템의 구성요소로 배포할 수 있는 가장 작은 단위다. ex) 자바의 jar, 루비의 gem, 닷넷의 DLL 또한 여러 컴포넌트를 서로 묶어서 .war 파일과 같은 단일 아카이브로 만들 수도있다. 또한 컴포넌트를 각각 .jar나 .dll 과 같이 동적으로 로드할 수 있는 플러그인이나, exe 파일로 만들어서 독립적으......