CS Repository/엔터프라이즈 애플리케이션 아키텍처 패턴 3

[PoEAA] 서비스 계층의 역할

우리는 백엔드 개발을 배울 때, 단순히 '3-Layer 아키텍처를 써라.' 라는 이야기를 듣고, 컨트롤러-서비스-리포지토리를 작성하지만,무작정 XxxService 계층을 도입하면서 정작 서비스 계층에 어떠한 로직을 넣어야 하는지에 대한 고민에는 당황하기 십상이다. 이 서비스 계층의 등장 배경에 대해 완전히 이해할 때, 어떠한 로직을 서비스 계층에 넣고, 어떠한 로직을 도메인 엔티티에 넣을지 이해할 수 있을 것이다.'도메인' 이란?domain = 정의역소프트웨어 공학에서 '도메인'은 해결하고자 하는 문제의 영역을 의미하며, 특정 비즈니스 영역을 구현하게 되었을 때, 그 영역에만 존재하는 지식과 논리를 의미한다.예시로는 다음과 같은 것들이 있다.결제 도메인계정 도메인물류 도메인도메인 모델과 트랜잭션 스크립트..

[PoEAA] 성능 관련 용어

아키텍처의 결정에는 성능과 관련된 것이 많다.일반적으로 성능의 경우, 먼저 시스템을 실행 가능한 상태로 만들고, 성능을 측정한 후, 측정 데이터를 바탕으로 체계적인 절차를 이용한다.그런데 일부 아키텍처 결정은 나중에 최적화를 통해 해결하기 어려운 성능상의 영향을 미치는 경우가 있다.그렇다고 성능 상의 결정 방식을 글로 표현하기는 매우 어려운데, 모든 상황과 환경에 따라 그 결정의 옳고 그름이 완전히 달라질 수 있기 때문이다.하지만 적어도 용어를 정리해두면, 성능과 관련된 논의를 시작할 수는 있다.따라서 아래 용어들의 정의를 살펴보며, 각각이 어떤 의미를 갖는지 알아보자.응답 시간(response time)응답성(responsiveness)대기 시간(latency)처리량(throughput)성능(perfo..

[PoEAA] 백엔드 개발자의 역할 - 소프트웨어 아키텍처와 엔터프라이즈 애플리케이션의 의미

결국 백엔드 개발자는 소프트웨어 아키텍처를 이해하고, 도메인 로직을 코드로 설계해야 한다.여기에 있어 소프트웨어 아키텍처의 의미와 엔터프라이즈 애플리케이션의 정의는 백엔드 개발자가 해야하는 일을 명확히 정의하는 아주 중요한 주제라고 할 수 있다.따라서 이에 대한 정의를 먼저 해두자.아키텍처아키텍처는 아주 많은 사람들이 정의하려고 하지만 의견이 분분한 용어다.하지만 그 안에서 몇 가지 공통적인 정의가 있다.시스템을 구성 요소로 나누는 최상위 수준의 분해이다.번복하기 어려운 결정이다.아키텍처는 한 가지 방법으로는 설명할 수 없다.하나의 시스템 안에도 여러 아키텍처가 있을 뿐 아니라, 아키텍처적으로 무엇이 중요한지에 대한 관점도 시스템의 수명 기간 중 달라질 수 있다.랄프 존슨의 견해에서도 아키텍처에 대한 흥..