3계층 티어(3-tier architecture)는 소프트웨어 애플리케이션의 아키텍처 모델 중 하나로, 애플리케이션을 세 가지 주요 구성 요소로 분리하여 효율적으로 관리하고 유지보수할 수 있도록 도와줍니다. 이 모델은 프레젠테이션 계층, 비즈니스 계층, 데이터 계층으로 나뉩니다. 각 계층은 독립적으로 기능하며, 특정 역할을 담당합니다.
1. 프레젠테이션 계층 (Presentation Layer)
- 역할: 사용자와 상호작용하는 부분입니다. 사용자의 입력을 받고, 데이터를 시각적으로 표시하는 역할을 합니다.
- 기능:
- 사용자 인터페이스(UI)와 관련된 모든 작업을 담당합니다.
- 브라우저, 모바일 애플리케이션, 데스크탑 애플리케이션 등 클라이언트 측에서 실행되는 코드가 이 계층에 속합니다.
- 요청을 받아 비즈니스 로직 계층에 전달하고, 비즈니스 로직의 처리 결과를 사용자에게 표시합니다.
- 예시: 웹 애플리케이션의 HTML, CSS, JavaScript, 모바일 앱의 UI, Angular, React, Vue.js와 같은 프론트엔드 프레임워크.
2. 비즈니스 계층 (Business Layer)
- 역할: 애플리케이션의 핵심 비즈니스 로직을 처리합니다. 사용자 요청을 처리하고, 데이터를 처리하며, 로직을 실행하는 계층입니다.
- 기능:
- 비즈니스 로직을 수행하는 데 필요한 계산이나 데이터를 처리합니다.
- 유효성 검사, 트랜잭션 관리, 승인 절차 등의 비즈니스 규칙을 구현합니다.
- 프레젠테이션 계층에서 요청을 받아 데이터 계층과 상호작용하고, 그 결과를 반환합니다.
- 예시: 서버 측 애플리케이션 코드, Spring, Node.js, Django의 백엔드 로직, API 서버 등.
3. 데이터 계층 (Data Layer)
- 역할: 데이터의 저장과 관리가 이루어지는 부분으로, 애플리케이션의 데이터를 처리하고 저장하는 역할을 합니다.
- 기능:
- 데이터베이스와의 상호작용을 담당합니다. 데이터의 CRUD(Create, Read, Update, Delete) 작업을 처리합니다.
- 파일 시스템에 저장된 데이터나 외부 시스템과의 통신을 처리하기도 합니다.
- 비즈니스 계층의 요청에 따라 필요한 데이터를 제공하고, 데이터를 관리합니다.
- 예시: 관계형 데이터베이스(MySQL, PostgreSQL), NoSQL 데이터베이스(MongoDB, Cassandra), 파일 시스템, RESTful API 데이터 소스 등.
3계층 티어 아키텍처의 장점
- 유지보수 용이: 각 계층이 독립적으로 존재하여, 특정 계층을 변경할 때 다른 계층에 미치는 영향을 최소화할 수 있습니다.
- 확장성: 각 계층을 별도로 확장할 수 있어, 예를 들어 비즈니스 로직을 더 강력하게 만들거나 데이터베이스 성능을 향상시키는 것이 가능합니다.
- 보안: 데이터 계층은 외부에서 직접 접근할 수 없고, 비즈니스 계층과 프레젠테이션 계층을 통해서만 데이터에 접근할 수 있어 보안성이 높습니다.
- 재사용성: 비즈니스 로직을 다른 애플리케이션에서 재사용할 수 있습니다. 예를 들어, 웹 애플리케이션과 모바일 애플리케이션에서 같은 비즈니스 로직을 공유할 수 있습니다.
3계층 티어 아키텍처의 단점
- 복잡성: 각 계층을 독립적으로 관리해야 하기 때문에 시스템 구조가 복잡해질 수 있습니다.
- 성능 문제: 계층 간의 상호작용이 많아지면, 각 계층을 거칠 때마다 네트워크 호출이 이루어지므로 성능 저하가 있을 수 있습니다.
- 비용: 각 계층을 별도로 관리하고 배포해야 하므로, 인프라와 유지보수 비용이 증가할 수 있습니다.
예시: 3계층 아키텍처의 흐름
- 사용자가 프레젠테이션 계층(웹 브라우저 또는 모바일 앱)을 통해 애플리케이션에 요청을 보냅니다.
- 프레젠테이션 계층은 이 요청을 비즈니스 계층에 전달하고, 필요한 비즈니스 로직을 처리합니다.
- 비즈니스 계층은 데이터를 처리하거나 데이터 계층에 필요한 데이터를 요청합니다.
- 데이터 계층은 데이터를 제공하고, 비즈니스 계층은 이를 바탕으로 최종 결과를 반환합니다.
- 프레젠테이션 계층은 사용자가 볼 수 있도록 결과를 표시합니다.
결론
3계층 아키텍처는 애플리케이션을 세 개의 주요 계층으로 나누어 각 계층이 독립적으로 동작하도록 하여 개발, 유지보수, 확장성 등을 용이하게 만듭니다. 이러한 구조는 대규모 애플리케이션이나 기업용 시스템에서 자주 사용되며, 각각의 계층을 효율적으로 관리하고 최적화할 수 있는 좋은 방법입니다.

'WEB' 카테고리의 다른 글
Http 동작 방식 (0) | 2025.05.27 |
---|---|
SOP (0) | 2025.02.18 |
SQL SESSION 메서드 (0) | 2024.12.02 |
SQL Session Factory (0) | 2024.12.02 |
이미지 파일저장 (0) | 2024.11.21 |