Computer Science/Software Design

아키텍처 패턴의 종류 (1) Layered Pattern

마이트너 2024. 7. 4. 19:23
 국내에서 주로 많이 사용하는
5가지 아키텍처 패턴 中 하나

(Layered, Broker, MVC, State-Logic-Display, Sense-Compute-Control Patterns)

 

작성일 : 20230729, 20230730, 20230813, 2024.08.08

➡️ 레이어드 패턴 (Layered Pattern)

계층화 패턴이라고도 부른다. 이 아키텍처는 시스템을 여러 계층으로 나누어, 각 계층이 특정한 역할을 수행하도록 하는 소프트웨어 아키텍처 패턴의 한 종류이다. 레이어드 아키텍처의 주요 장점은 계층 간의 역할이 명확히 분리되어 있어, 시스템의 유지보수와 확장이 용이하다는 것이다. 또한, 각 계층은 독립적으로 개발될 수 있으므로 팀 간의 협업에도 유리하다.

 

layer 1 (최상위 레이어)
layer 2
layer 3
...
layer n (최하위 레이어)
CF. Layered 패턴 사용 예시

https://mysoftworld.tistory.com/40
https://jojoldu.tistory.com/603
https://kimjingo.tistory.com/159
https://6mini.github.io/software%20architecture%20pattern/2022/11/16/layered-architecture/

 

 

 

✅ 레이어를 나누는 방식

 

① 계층이 바로 아래에 있는 계층만 알고 있는 엄격한 방식

② 계층이 그 아래에 있는 모든 계층에 액세스할 수 있는 보다 유연한 접근 방식

CF. 마틴 파울러 (Martin Fowler)에 따르면, ②는 중간 계층에서 프록시 메소드나 완전한 프록시 클래스)의 생성을 피하고 라자냐 아키텍처의 안티 패턴으로 저하 될 수 있기 때문에 실제로 더 잘 작동된다고 말한다.

 

 

 

레이어와 티어의 차이점

 : 아키텍처를 다룰 때, 티어(Tier)와 레이어(Layer)를 자주 언급하게 되는데, 이를 구분 없이 사용하는 경우가 있다. 하지만 티어는 물리적인 영역의 분리이고, 레이어는 논리적인 영역의 분리를 의미한다. 때문에 티어는 서비스에 필요한 영역을 서브넷을 기준으로 하여 물리적으로 서버가 구분되는 경우에 사용하고, 레이어는 논리적으로 역할을 구분하는 용도 등으로 사용4되므로 용어 사용에 유의할 필요가 있다.

 

 

 

✅ 레이어드 패턴 사용 시 유의할 점

  • Layered Anti-pattern
    • Architecture Sinkhole Anti-pattern : 이유없이 존재하는 레이어가 있는 경우
    • Lasagna Architecture(라자냐 아키텍처) : 결국 계층이 너무 많아져 복잡해지고 전체 시스템의 성능이 저하되는 경우를 가리킨다.

 

 


➡️ 레이어드 패턴을 사용한 네트워크 구조의 종류

 

2계층 아키텍처 구조 (2-Tier Architecture)

  • Presentation Layer (표현 계층)
  • Data Layer (데이터 계층)

 

 

3계층 아키텍처 구조 (3-Tier Architecture)

  • Presentation Layer (표현 계층)
  • Application Layer (응용 계층)
  • Data Layer (데이터 계층)

 

 


4계층 아키텍처 구조 (4-Tier Architecture)

CF. 4계층 아키텍처 구조를 통해 스프링부트 구조 이해하기

https://meitner.tistory.com/entry/SpringBoot-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EC%9D%98-%EA%B5%AC%EC%A1%B0

 

  • Presentation Layer (표현 계층)
  • Business Layer (비지니스 계층) 
  • Persistence Layer (영속성 계층)
  • Database Layer (데이터베이스 계층)

 

 

 

도메인 주도 설계 (Domain Driven Design)

  • Presentation Layer (표현 계층)
  • Application Layer (응용 계층) 
  • Domain Layer (도메인 계층)
  • Infra Layer (인프라 계층)

 

 

 

 OSI 7계층 (OSI 7 Layer)

 : 네트워크 통신이 일어나는 과정을 7개의 계층으로 나눈 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델로, 각 계층을 지날 때마다 각 계층에서 헤더가 붙이고 수신 측은 역 순으로 헤더를 분석하는 형식을 갖는다.

CF. OSI 모델 자세히 보기

https://meitner.tistory.com/entry/Network-OSI-%EB%AA%A8%EB%8D%B8%EA%B3%BC-TCPIP-%EB%AA%A8%EB%8D%B8

 

  • Application Layer (응용 계층)
  • Presentation Layer (표현 계층)
  • Session Layer (세션 계층)
  • Transport Layer (전송 계층)
  • Network Layer (네트워크 계층)
  • DataLink Layer (데이터링크 계층)
  • Physical Layer (물리 계층)

 

 


➡️ 참고자료

 

✅ Layered Pattern

 

[블로그]
https://han-py.tistory.com/443
https://mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/
https://velog.io/@hojin11choi/TIL-%EA%B3%84%EC%B8%B5%ED%98%95-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90-Layered-Architecture
https://bnzn2426.tistory.com/64
https://jojoldu.tistory.com/603

 

 

 

✅ 2 Tier and 3 Tier

 

[블로그]

https://btcd.tistory.com/16

https://adjh54.tistory.com/105#4%EA%B3%84%EC%B8%B5%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98(4-Tier%20Architecture)-1

 

 

✅ Domain-Driven Design – Layered Architecture

 

[아티클]
https://www.nareshbhatia.dev/articles/domain-driven-design-6-layered-architecture)

 

[기술블로그]
https://tech.kakao.com/2022/12/12/ddd-of-recommender-team/

 

728x90