아키텍처(Architecture)란?
- 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다.
- 시스템의 전체적인 동작을 결정하고, 시스템의 품질 성능(성능, 확장성, 유지보수성, 보안 등)에 직접적으로 영향을 미친다.
Layered Architecture
- 소프트웨어 개발에서 가장 일반적으로 널리 사용되는 아키텍처이다.
- 소프트웨어 시스템을 관심사 별로 여러 개의 계층으로 분리한 아키텍처를 뜻한다.
- 각 계층은 어플리케이션 내에서 특정 역할과 책임이 있는데, 그들은 자신의 역할에만 집중한다. 중요한 것은 구성 요소간에 관심사가 분리(separation of concerns)되었다는 점이다.
- 추상화된 인터페이스로만 소통한다. 소통은 자신에게 인접한 하위 계층에 요청을 보내는 방식으로 진행된다.
- 단방향 의존성이다. 하위 계층은 상위 계층을 몰라야한다. 하위 계층은 인터페이스만 제공하고 요청만 받을 뿐이다.
- 일반적으로 4-tier 아키텍처(Presentation Layer, Business Layer, Persistence Layer, Database Layer)이다.
Presentation Layer
- 클라이언트의 요청을 받고 응답하는 계층
- 어떻게 클라이언트의 요청을 처리할 것인지는 관심이 없고, 요청을 어떻게 받고 응답을 어떻게 할지에 대해 관심이 있는 계층
- 요청에 대한 처리는 Business Layer로 전달한다.
Business Layer
- 비즈니스 로직을 담당하는 계층
- 클라이언트의 실제 요청에 대한 처리를 하는 부분이다.
- 클라이언트가 웹이던 앱이던 혹은 database를 어떤 것을 사용하는 지는 관심이 없고 그저 비즈니스 로직을 처리한다.
Persistence Layer
- 데이터베이스에 접근하는 계층이다.
- Business의 요청 처리에 따라 데이터베이스에서 데이터를 저장, 조회, 삭제 등의 로직을 수행한다.
Database Layer
- 데이터베이스 그 자체
Flow
- 사용자가 보고있는 화면(View)에서 사용자는 고객 정보를 요청한다.
- 요청은 그 요청을 처리할 수 있는 모듈이 무엇인지 알고있는 Controller로 전달된다. Controller는 해당 요청을 처리하기 위해 Business Layer의 Customer Object로 요청을 보낸다.
- Customer Object는 요청을 받고 비즈니스 로직을 수행하기 위한 데이터를 얻기 위해, Persistence Layer의 Customer DAO 와 Order DAO 에 요청을 보낸다.
- Persistence Layer 의 DAO들은 요청을 수행하기 위해 Database Layer 에 접근하여 데이터를 가져온다.
- 이 요청은 다시 반대로 Persistence Layer → Business Layer → Presentation Layer 로 전달되고 최종적으로 사용자에게 전달된다.
'Spring' 카테고리의 다른 글
DTO의 생성 위치(with 장점) (2) | 2025.01.19 |
---|---|
Spring Security의 흐름과 개념 설명 (0) | 2024.08.11 |
HTTP요청부터 응답까지의 과정 (0) | 2023.09.25 |
IoC 컨테이너 (0) | 2023.09.20 |