레이어드 아키텍처는 IT 시스템을 구성하는 전통적인 방법으로, 애플리케이션이 각각의 추상화 레벨을 구현하는 여러 계층으로 구조화됩니다: 사용자 인터페이스, 비즈니스 로직, 데이터 접근 및 인프라 메커니즘. 일반적으로 Presentation Layer (UI), Business Logic Layer, Data Access Layer 및 Data Layer로 구분됩니다.
각 계층은 인접한 계층과만 상호작용하며, 이는 모듈성을 촉진하고 코드 유지보수를 단순화합니다. 이러한 접근 방식은 시스템의 개별 부분을 쉽게 테스트하고 리팩토링할 수 있게 해줍니다.
코드 예시 (파이썬의 레이어드 아키텍처):
# Data Layer class UserRepository: def get_user(self, user_id): # DB에서 사용자 가져오기 pass # Business Logic Layer class UserService: def __init__(self, repo): self.repo = repo def get_user_profile(self, user_id): user = self.repo.get_user(user_id) # 비즈니스 로직 return user # Presentation Layer class UserController: def __init__(self, service): self.service = service def get(self, user_id): user_profile = self.service.get_user_profile(user_id) return user_profile
주요 특징:
상위 계층에서 하위 계층으로 바로 접근할 수 있습니까, 중간 계층을 건너뛰면서?
아니요, 레이어드 아키텍처의 개념에 따르면 각 계층은 바로 아래의 계층과만 상호작용합니다. 이 원칙을 위반하면 강한 결합을 초래하고 유지보수를 악화시킵니다.
레이어드 아키텍처가 확장성이 떨어진다고 할 수 있습니까?
항상 그런 것은 아닙니다. 확장이 가능하지만 마이크로서비스와 비교할 때 더 복잡할 수 있습니다. 개별 계층(예: 백엔드 서비스)의 수평적 확장은 표준적인 관행입니다.
하나의 계층이 여러 계층에 걸친 로직을 구현할 수 있습니까?
이론적으로는 아니오. 교차 비즈니스 로직은 혼란을 초래하고 유지보수를 복잡하게 만듭니다. 함수와 클래스는 해당 계층에 있어야 합니다.