2025/03/23 2

[클린 아키텍처] 의존성 역전하기

단일 책임 원칙SRP: 하나의 컴포넌트는 오로지 한 가지 일만 해야 하고, 그것을 올바르게 수행해야 한다.단일 책임 원칙의 실제 정의는 “컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다.”‘책임’은 ‘변경할 이유’로 해석해야 한다.(Reason to change)만약 컴포넌트를 변경할 이유가 한 가지라면 우리가 어떤 다른 이유로 소프트웨어를 변경하더라도 이 컴포넌트에 대해서는 전혀 신경 쓸 필요가 없다. 여전히 우리가 기대한 대로 동작하기 떄문이다.단일 책임 원칙을 위배하기 때문에 시간이 갈수록 변경하기가 더 어려워지고 그로 인한 비용도 증가한다. 변경할 이유가 많이 쌓인 후에는 한 컴포넌트를 바꾸는 것이 다른 컴포넌트가 실패하는 원인으로 작용할 수 있다. 의존성 역전 원칙도메인 코드는 애플리케이션에서..

아키텍처 2025.03.23

[클린 아키텍처] 계층형 아키텍처(Layered Architecture)의 문제는 무엇일까?

일반적인 3계층 아키텍쳐(전형적인 웹 애플리케이션 구조): 웹 → 도메인 → 영속성계층형 아키텍처의 문제점은 무엇일까? 코드에 나쁜 습관들이 스며들기 쉽게 만들고 시간이 지날수록 소프트웨어를 점점 더 변경하기 어렵게 만드는 수많은 허점들을 노출한다.계층형 아키텍처는 데이터베이스 주도 설계를 유도한다정의에 따르면 전통적인 계층형 아키텍처의 토대는 데이터베이스이다.웹 계층은 도메인 계층에 의존하고, 도메인 계층은 영속성 계층에 의존하기 때문에 자연스레 데이터베이스에 의존하게된다.우리는 보통 비즈니스를 관장하는 규칙이나 정책을 반영한 모델을 만들어서 사용자가 이러한 규칙과 정책을 더욱 편리하게 활용할 수 있게 한다. 이때 우리는 상태(state)가 아니라 행동(behavior)을 중심으로 모델링한다. 어떤 애..

아키텍처 2025.03.23