[매일메일] 레이어드 아키텍쳐

남순식·2026년 2월 11일

레이어드 아키텍쳐란(Layered Architecture)?

소프트웨어를 관심사별로 여러 계층으로 나누어 수직적으로 배열한 것을 의미합니다.
여기서 관심사란 유사한 책임들을 의미합니다.

레이어드 아키텍처의 대표적인 구성에는 3가지 레이어가 존재한다.
표현 계층, 도메인 계층, 데이터 소스 계층이 이에 해당
레이어의 종류와 수는 프로젝트 상황마다 달라질 수 있다.

표현 계층(Presentation Layer) 은 사용자 입력을 처리하기 위해 존재한다.
도메인 계층(Domain Layer) 은 비즈니스와 관련된 로직을 수행하기 위해 존재한다.
데이터 소스 계층(Data Source Layer) 은 데이터베이스 접근 및 데이터 조작과 관련된 작업을 수행하기 위해 존재한다.

레이어드 아키텍처를 사용하면 특정 레이어만 독립적으로 확장하거나 변경할 수 있으며, 특정 레이어만 별도로 테스트 환경을 구축하여 테스트할 수 있다는 장점이 있습니다.

싱크홀 안티패턴

요청이 한 레이어에서 다른 레이어로 이동할 때, 각 레이어가 아무 로직도 처리하지 않고 그대로 다음 레이어로 넘겨버리는 안티패턴을 의미한다.

간단한 예

@Service
public class OrderService {

  private OrderDao orderDao;

  // 아무 일도 수행하지 않음
  public OrderResponse getOrder(Long orderId) {
      return orderDao.getOrderById(orderId);
  }
}

레이어드 아키텍처에서 전체 요청의 20% 정도가 싱크홀인 정도면 그런대로 괜찮으나, 그 이상이라면 다른 아키텍처 스타일을 고려해 봐야 한다. 싱크홀이 많아지면 데이터 변환, 취합, 계산 등 일체의 로직 없이 다시 왔던 길을 되돌아가는 셈이고, 불필요한 객체 초기화 및 처리를 빈번하게 유발하고 쓸데없이 메모리를 소모하며 성능에도 부정적 영향을 미친다.

참고
https://velog.io/@d5h22kim/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-101-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%8A%A4%ED%83%80%EC%9D%BC-%EB%A0%88%EC%9D%B4%EC%96%B4%EB%93%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%8A%A4%ED%83%80%EC%9D%BC

profile
응집력있는 시간을 보내기 위한 블로그

0개의 댓글