**클린 아키텍처(Clean Architecture)**는 프레임워크, 데이터베이스, 사용자 인터페이스 및 기타 외부 요소로부터 비즈니스 로직의 독립성을 보장하는 복잡한 소프트웨어 시스템 설계 접근 방식입니다. 이는 코드가 최소한의 상호 영향을 유지할 수 있도록 여러 계층으로 나누는 것입니다.
클린 아키텍처의 전통적인 구조에서는 내부 계층(유스 케이스, 엔티티)과 외부 계층(프레임워크, 게이트웨이, 컨트롤러)를 볼 수 있습니다. 의존성은 내부로만 이동(의존성 역전 원칙)할 수 있어, 비즈니스 로직에 대한 위험 없이 시스템을 쉽게 구성하고 수정하며 테스트할 수 있습니다.
코드 예시(파이썬):
# 엔티티 class Order: def __init__(self, id, total): self.id = id self.total = total # 유스 케이스 class CompleteOrderUseCase: def __init__(self, order_repository): self.order_repository = order_repository def execute(self, order_id): order = self.order_repository.get_by_id(order_id) order.completed = True self.order_repository.save(order)
주요 특징:
클린 아키텍처의 모든 계층은 별도의 서비스로 구현될 수 있습니까?
반드시 그럴 필요는 없습니다. 때때로 각 계층을 별도의 서비스로 분리하는 것이 높은 결합이나 통신 오버헤드로 인해 비효율적일 수 있습니다. 계층은 논리적 분할이며, 물리적 분리는 타당한 필요가 있을 때만 필요합니다.
개발 속도를 높이기 위해 클린 아키텍처의 의존성 방향성을 위반할 수 있습니까?
아니요, 짧은 시간 절약이 향후 유지 보수를 복잡하게 만들기 때문입니다. 의존성 방향성은 클린 아키텍처의 기본 원칙이며, 이를 위반하면 구조의 이점을 잃게 됩니다.
비즈니스 규칙은 항상 내부 계층에만 구현되어야 합니까?
네, 모든 중요한 비즈니스 규칙은 비즈니스 로직에 외부 의존성이 영향을 미치지 않도록 내부 계층(엔티티 또는 유스 케이스)에 있어야 합니다.