SW/마이크로서비스

마이크로서비스 : 어플리케이션 아키텍쳐 : 계층형 아키텍처 : 개념, 정의, 개요

얇은생각 2020. 5. 4. 19:30
반응형

Tier와 Layer

Tier는 물리층을 의미하며, Layer는 논리층을 의미합니다. Tier는 물리적인 장비, 서버 컴퓨터가 될 수 있습니다. Layer는 이러한 Tier 내부의 논리적인 분할을 의미합니다. 1:1이 될 수도 있지만 Tier의 내부를 제공하는 기능 성격에 따라 논리적 구분을 할 수 있습니다.

여기 어플리케이션 서버라는 중간층은 세 가지 Layer로 구별될 수 있습니다. 가장 일반적인 어플리케이션 Layer인 Presentation, Business Logic, Data Access층으로 나눠질 수 있습니다. 

 

 

Layered Architecture

Layered Architecture는 설계자들이 복잡한 시스템을 분리할 때 흔히 사용하는 패턴 중 하나로 상위는 하위를 호출하여, 상위는 하위의 여러 Layer를 알 필요 없이 바로 밑에 근접한 Layer를 활용하여 다양한 서비스를 이용할 수 있습니다.

이러한 Architecture는 각 Layer를 표준화, 모듈화 함으로써 위에 Layer가 아래 Layer의 변경에 영향을 받지 않도록 하여 어플리케이션이 쉽게 변경되거나 확장할 수 있게 해줍니다. 따라서 이때 하위 계층은 상위를 알지 못하게 구성해야 합니다.

 

 

다양한 레이어 정의 유형

다음 표를 보면 가장 일반적인 어플리케이션 Layer 구분 방법인 3 계층에서 출발하여 역할에 따라 더 세분화된 계층들을 보여줍니다.

마이크로서비스 : 어플리케이션 아키텍쳐 : 계층형 아키텍처 : 개념, 정의, 개요

 

각 Layer의 이름은 마틴 파울러의 엔터프라이즈 Architecture 패턴에서 정의한 용어 Presentation Layer, Business Logic Layer, Data Access Layer가 가장 많이 쓰이고 있지만, 계층의 역할을 더 구체적으로 표현하여 불리기도 합니다.

 

 

Spring에서 일반적으로 사용되는 구조

JavaScript 진영에서 일반적으로 쓰이는 용어로 Layer를 설명해보도록 하겠습니다.  Presentation Layer층이 있습니다. Presentation Layer층은 컨트롤러라는 구성요소를 가지고 있으며, 화면 표현에 대한 처리를 합니다.

예를 들면 화면전환 버튼을 선택했을 때의 이벤트 처리, 세션 관리 등의 기능을 제공합니다. 다음 Business Logic층은 서비스와 도메인으로 구분되는데, 서비스는 Presentation의 컨트롤러에서 호출되며, 비즈니스도메인 로직을 호출하여 특정 업무의 처리 흐름을 제어합니다.

도메인은 Business Logic을 실행하는 데 있어서 주요 개념 및 로직을 담고 있으며, Spring의 POJO 객체로 보통 구성됩니다. Data Access Layer는 DAO라고 하는 구성요소를 가지고 있으며, DAO는 Data Access Object의 약어이며, 서비스가 처리한 결과를 받아서 데이터로 저장하는 역할을 수행합니다.

 

 

Layer 간의 호출 원칙

각 Layer는 내부의 응집력은 높이고 Layer 간의 낮은 결합도를 갖도록 설계되어야 합니다. 따라서 당연히 Layer 사이의 흐름은 클래스에서 클래스를 직접 호출하지 않고 인터페이스를 통해 호출하는 것이 바람직합니다. 인터페이스를 하나 만드는 것이 번거롭다고 그냥 클래스를 이용해서는 안 됩니다.

또한 인터페이스를 사용한다는 것은 Layer의 경계를 넘어서 들어오는 요청을 명확히 정의하겠다는 것을 의미합니다. 이렇게 구현 클래스에 직접 의존하지 않음으로써 Object 사이에 약한 결합을 유지할 수 있습니다. 이러한 구조는 개발 효율성을 높일 뿐만 아니라 운영 시에도 쉽게 변경/확장 가능하게 해줍니다.

반응형