본문 바로가기
웹개발

레이어드 아키텍처(Layered Architecture)

by 개발자K씨 2024. 1. 8.

레이어드 아키텍처, 또는 n-계층 아키텍처는 소프트웨어 엔지니어링에서 소프트웨어 애플리케이션을 설계하기 위해 사용되는 인기 있는 아키텍처 패턴입니다. 이 아키텍처는 코드를 별도의 계층으로 구성하는 것이 특징이며, 각 계층은 자체적으로 명확한 책임을 가집니다. 이러한 아키텍처는 관심사의 분리를 촉진하여 애플리케이션을 더 관리하기 쉽고, 확장 가능하며, 유지보수가 용이하게 만듭니다. 레이어드 아키텍처의 주요 구성 요소와 그 역할에 대해 자세히 살펴보겠습니다.

 

레이어드 아키텍처의 계층

  • 프레젠테이션 계층: 이 계층은 애플리케이션의 최상위 계층으로, 사용자와의 상호작용을 담당합니다. 사용자 인터페이스와 사용자 경험 구성 요소를 처리합니다. 프레젠테이션 계층은 비즈니스 계층과 통신하여 사용자 요청을 수행하고 결과를 표시합니다.
  • 비즈니스 로직 계층: 도메인 계층이라고도 불리는 이 계층은 애플리케이션의 비즈니스 로직과 규칙을 포함하고 있습니다. 데이터 액세스 계층과 프레젠테이션 계층 사이에서 중재자 역할을 하며, 사용자 입력을 처리하고, 비즈니스 규칙을 실행하며, 논리적 결정을 내립니다.
  • 데이터 액세스 계층: 이 계층은 데이터베이스 또는 기타 저장 메커니즘과 상호작용하는 책임을 집니다. 주로 데이터 지속성에 대한 추상화를 제공하며 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 제공합니다. 데이터 저장 세부사항으로부터 비즈니스 계층을 독립시킵니다.
  • 서비스 계층: 일부 구현에서는 서비스 계층이라고 불리는 추가 계층이 있습니다. 이는 비즈니스 로직 계층과 외부 서비스 또는 API 사이의 연결점으로, 서비스 통합 및 오케스트레이션을 위한 중앙 위치를 제공합니다.
  • 데이터베이스 계층: 공식적인 계층으로 항상 간주되는 것은 아니지만, 데이터베이스 또는 저장 메커니즘은 애플리케이션의 데이터를 지속적으로 저장하는 중요한 구성 요소입니다.

레이어드 아키텍처의 장점

  • 모듈성: 각 계층은 독립적이며 특정 역할에만 집중합니다. 이러한 분리는 애플리케이션을 더 쉽게 관리하고 확장할 수 있게 합니다.
  • 유지보수성: 한 계층에서의 변경이 일반적으로 다른 계층에 영향을 미치지 않습니다. 이러한 관심사의 분리는 유지보수와 업데이트를 더 간단하게 만듭니다.
  • 유연성: 특정 계층을 쉽게 교체하거나 업데이트할 수 있으며, 이는 나머지 애플리케이션에 영향을 미치지 않습니다.
  • 테스트 용이성: 각 계층은 독립적으로 테스트할 수 있어 단위 테스트와 디버깅을 단순화합니다.

레이어드 아키텍처의 단점

  • 성능 오버헤드: 계층이 많을수록 데이터가 계층을 통과하는 데 더 많은 시간이 소요되어 성능에 영향을 줄 수 있습니다.
  • 복잡성: 경우에 따라 아키텍처가 과도하게 설계될 수 있으며, 불필요한 계층이 복잡성을 더할 수 있습니다.

사용 사례

  • 유지보수성과 확장성이 중요한 엔터프라이즈 애플리케이션
  • 사용자 인터페이스와 비즈니스 로직 간에 명확한 분리가 필요한 애플리케이션

예시

  • 프론트엔드(프레젠테이션 계층), 서버 사이드 백엔드(비즈니스 로직 및 데이터 액세스 계층), 그리고 데이터베이스(데이터베이스 계층)를 가진 웹 애플리케이션
  • GUI, 비즈니스 규칙, 데이터 저장이 명확하게 분리된 데스크톱 애플리케이션

관심사의 분리와 모듈성에 중점을 둔 레이어드 아키텍처는 견고하고 확장 가능하며 유지보수가 용이한 소프트웨어 애플리케이션 설계의 핵심 요소로 남아 있습니다.

'웹개발' 카테고리의 다른 글

Reactive Streams  (0) 2023.12.31
Reactive Programming의 이해  (0) 2023.12.31
Reactive System의 개념  (1) 2023.12.30
동기와 비동기, 블로킹과 논블로킹  (0) 2023.12.27
소프트웨어 배포 전략  (1) 2023.12.21