계층(layer)으로 구성된 웹 어플리케이션을 개발해본 적이 있을 것이다.
- 계층을 이용하는 사고 방식은 컴퓨터 과학 수업이나 튜토리얼, 모범 사례를 통해 우리에게 주입돼 왔다.
웹, 도메인, 영속성 계층으로 구성된 전통적인 웹 애플리케이션 구조
- 웹 계층에서는 요청을 받아 도메인, 혹은 비즈니스 계층에 있는 서비스로 요청을 보낸다.
- 서비스에서는 필요한 비즈니스 로직을 수행하고, 도메인 엔티티의 현재 상태를 조회하거나 변경하기 위해 영속성 계층의 컴포넌트를 호출한다.
계층형 아키텍처는 견고한 아키텍처 패턴이다.
-
계층을 잘 이해하고 구성한다면, 웹 계층이나 영속성 계층에 독립적으로 도메인 로직을 작성할 수 있다.
- 도메인 로직에 영향을 주지 않고 웹 계층과 영속성 계층에 사용된 기술을 변경할 수 있다.
- 기존 기능에 영향을 주지 않고 새로운 기능을 추가할 수도 있다!
-
잘 만들어진 계층형 아키텍처는 선택의 폭을 넓히고, 변화하는 요구사항과 외부 요인에 빠르게 적응할 수 있게 해준다.
그렇다면 계층형 아키텍처의 문제점은 무엇일까?
- 계층형 아키텍처는 코드에 나쁜 습관들이 스며들기 쉽게 만든다.
- 시간이 지날수록 소프트웨어를 점점 더 변경하기 어렵게 만드는 수많은 허점들을 노출한다.
계층형 아키텍처는 데이터베이스 주도 설계를 유도한다
전통적인 계층형 아키텍처의 토대는 데이터베이스다.