레이어드 아키텍처란 무엇인가요?
레이어드 아키텍처(Layered Architecture) 란 소프트웨어를 관심사별로 여러 계층으로 나누어 수직적으로 배열한 것을 의미합니다.
→ 시스템을 서로 다른 역할을 하는 층(Layer)으로 쪼개서 바로 아래층에만 의존하게 만드는 구조
Presentation Layer(표현계층)
- 사용자 인터페이스(UI)
- 사용자의 요청을 받고 응답을 보여주는 곳
- 웹 화면, REST API 컨트롤러
|
v
Business Layer(비즈니스 계층 / 서비스 계층)
- 애플리케이션 핵심 로직(비즈니스 로직) 수행
|
v
Persistence Layer(영속성 계층)
- 데이터베이스에 접근
- 데이터를 저장하고 불러오는 로직만 존재
- DAO, Repository
|
v
Database Layer(데이터베이스 계층)
- 실제 데이터가 저장되는 DBMS
- 데이터 보관
장점
- 관심사의 분리
- 유지보수 용이성
- 교체 가능성
→ 특정 레이어만 독립적으로 확장하거나 변경할 수 있으며, 특정 레이어만 별도로 테스트 환경을 구축하여 테스트 할 수 있음
싱크홀 안티패턴(Architecture Sinkhole Anti-pattern)
요청이 한 레이어에서 다른 레이어로 이동할 때, 각 레이어가 아무 로직도 처리하지 않고 그대로 다음 레이어로 넘겨버리는 안티패턴
→ 불필요하게 요청을 전달받고 다시 전달만 하는 중간코드로 인해 CPU 및 메모리 낭비