1. Layered(계층화) 패턴이란?
- N-Tier 패턴이라고도 부르는 소프트웨어 아키텍쳐 패턴으로 가장 일반적으로 사용되는 패턴이다.
- 일반적으로 4개의 표준 계층으로 구성되지만, 특별히 계층의 수와 유형을 지정하지는 않는다.
- 계층화 패턴의 핵심은 구성 요소들 간의 관심사 분리이다. 각 계층은 인접한 계층과만 연결되며, 더 먼 계층과는 격리된다.
- 이를 통해 종속성을 낮추고, 독립성을 높여 애플리케이션의 SOLID 원칙을 지키고, 트랜잭션의 영속성을 보장할 수 있다.
※ SOLID 원칙 : https://melll.tistory.com/15 - 필요할 때 필요한 걸 찾아쓰면 빠른데, 왜 격리시키는 걸까? 이는 격리를 통한 유지보수의 강점이 더 크기 때문이다.
웹 페이지를 교체하고 싶다면 HTML 파일을 교체하거나, Controller의 URL Mapping만 바꾸면 된다.
데이터베이스를 바꾸고 싶다면 DAO 클래스를 교체하고, Repository의 DAO 구현체만 바꾸면 된다.
2. Spring Framework의 구조

3. Layered Pattern 에 대한 평가
- Overall agility(유연성) : Low
- Ease of deploymentRating(배포 용이성) : Low
- TestabilityRating(테스트 용이성) : High
- PerformanceRating(성능) : Low
- ScalabilityRating(확장성) : Low
- Ease of developmentRating(개발 용이성) : High
처참하다. 이걸 대체 왜 쓰는걸까? 다른 패턴과 비교해보자.

뭔가 한 눈에 들어오는 게 있다. Event-driven Pattern이다. 정확히 Layered Pattern과 정 반대되는 평가를 보인다. Spring은 Layered Pattern을 따르며 여러 명이 함께 개발하는 웹 프로젝트의 문제를 해결하고, 이에 따라 부족한 Event-driven Pattern의 장점들을 AOP(관점 지향 프로그래밍)을 통해 구현해냈다.
Spring을 사용하는 우리는 효율적인 협업을 위해 계층화 패턴을 지키며, TDD(Test-driven Development)를 통해 장점을 살리고, 부족한 부분을 AOP를 통해 구현함으로써 좋은 애플리케이션을 만들 수 있다.
[참조문서]
https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html
반응형
'JAVA > CONCEPT' 카테고리의 다른 글
| [JAVA] Proxy Pattern (0) | 2023.01.27 |
|---|---|
| [JAVA] Singleton Pattern (0) | 2023.01.24 |
| [JAVA] MVC Pattern (0) | 2023.01.17 |
| [JAVA] 객체 지향 설계의 5가지 원칙 - SOLID 원칙 (0) | 2023.01.16 |
| [JAVA] 객체 지향 프로그래밍 (OOP) - 특징 (0) | 2023.01.15 |
댓글