3-Tier 아키텍처

artp·2025년 3월 19일

cs

목록 보기
3/16
post-thumbnail

3-Tier 아키텍처란?

3-Tier Architecture(3계층 구조)는 애플리케이션을 세 개의 논리적이고 물리적인 컴퓨팅 계층으로 분리하여 구성하는 소프트웨어 아키텍처입니다.
이름 그대로 세 개의 계층(Tier)으로 시스템을 나누어 각 계층의 역할을 명확하게 구분하는 구조입니다.

주로 웹 애플리케이션에서 많이 사용되며, 각 계층이 서로 분리된 인프라에서 독립적으로 실행됩니다.
덕분에 각 계층은 별도의 개발 팀이 동시에 개발할 수 있고, 다른 계층에 영향을 주지 않고 업데이트하거나 확장할 수 있는 유연성이 있습니다.

3-Tier 아키텍처 구성 요소

1. Presentation Tier (프레젠테이션 계층)

1.1 정의

프레젠테이션 계층은 사용자가 직접 상호작용하는 부분으로, 애플리케이션의 인터페이스(UI)를 담당합니다. 사용자가 웹사이트나 앱을 통해 서비스를 이용할 때 처음 접하게 되는 계층입니다.

1.2 역할

1.2.1 사용자 인터페이스(UI) 제공

사용자가 시스템과 입출력(Input/Output)을 주고받을 수 있도록 인터페이스를 제공합니다. 대표적으로 웹 브라우저, 모바일 앱, 데스크탑 앱이 여기에 해당됩니다.

1.2.2 사용자의 요청을 수집하고 전달

사용자가 입력한 데이터를 애플리케이션 계층으로 전달하고, 다시 결과를 받아 화면에 출력합니다.

1.3 특징

  • 이 계층에서는 비즈니스 로직이나 데이터 처리 로직을 포함하지 않습니다.
  • 프론트엔드(Front-end) 또는 클라이언트(Client)라고도 불립니다.
  • 사용자 경험(UX)를 결정짓는 주요 계층입니다.

1.4 기술 예시

  • HTML, CSS, JavaScript, React 등.
  • 웹 서버(Nginx, Apache)가 클라이언트 요청을 중계하기도 합니다.

2. Application Tier (애플리케이션 계층 / 비즈니스 로직 계층)

2.1 정의

애플리케이션 계층은 사용자의 요청을 처리하고, 비즈니스 규칙에 따라 데이터를 가공하여, 그 결과를 프레젠테이션 계층에 반환하는 역할을 합니다. 웹 서버에서 실제 동작하는 기능(비즈니스 로직)을 처리하는 핵심 계층입니다.

2.2 역할

2.2.1 비즈니스 로직 처리

사용자의 요청을 분석하고 처리하여, 시스템이 어떻게 반응할지 결정합니다.
→ 예: 회원가입, 로그인, 상품 주문, 결제 처리 등

2.2.2 트랜잭션 관리 및 데이터 검증

입력값 검증, 보안 검증, 트랜잭션 관리 등을 수행합니다.

2.2.3 프레젠테이션 계층과 데이터 계층 연결

프레젠테이션 계층으로부터 받은 요청을 해석하여 데이터 계층에 질의하고, 결과를 받아서 처리한 후 사용자에게 전달합니다.
→ 앞단에서는 서버(응답자)처럼 행동하고, 뒷단에서는 클라이언트(요청자)처럼 행동하는 특징이 있습니다 (앞단에서는 사용자의 요청을 처리하여 결과를 프레젠테이션 계층에 반환하고, 뒷단에서는 데이터 계층에 요청하므로).

2.3 특징

  • 보통 미들웨어(Middleware)라고도 불립니다.
  • 백엔드(Back-end) 영역으로 취급되며, 프론트엔드와 데이터 계층을 중재하는 역할입니다.
  • 프레젠테이션 코드(HTML, CSS)는 포함하지 않습니다.

2.4 기술 예시

  • Java(Spring Boot), Python(Django, Flask), Node.js(Express) 등.
  • API 서버: REST API, GraphQL API
  • 트랜잭션 서버, 인증 서버 등도 포함됩니다.

3. Data Tier (데이터 계층)

3.1 정의

데이터 계층은 시스템에서 사용하는 모든 데이터를 저장하고 관리하는 역할을 담당합니다. 데이터의 영구 저장(Persistent Storage)읽기/쓰기(Read/Write) 작업을 처리합니다.

3.2 역할

3.2.1 데이터 저장과 관리

사용자 데이터, 트랜잭션 기록, 로그, 통계 등 모든 데이터를 구조화하여 저장하고 관리합니다.

3.2.2 데이터 접근 및 보안

데이터를 읽거나 쓸 수 있도록 인터페이스를 제공하며, 데이터 무결성보안을 책임집니다.

3.2.3 데이터 요청 처리

애플리케이션 계층으로부터 들어오는 CRUD(Create, Read, Update, Delete) 요청을 처리하고 응답을 반환합니다.

3.3 특징

  • 애플리케이션과는 독립적으로 분리되어 있으며, 고성능과 안정성이 중요합니다.
  • 보통 DBMS(Database Management System)가 이 계층의 핵심입니다.
  • 백엔드의 일부로 간주되지만, 애플리케이션 계층과는 역할이 명확히 다릅니다.

3.4 기술 예시

  • 관계형 데이터베이스(RDBMS): MySQL, PostgreSQL, Oracle DB 등.
  • 비관계형 데이터베이스(NoSQL): MongoDB, Redis 등.

3-Tier 아키텍처의 장점

1. 주요 장점

3계층 아키텍처(3-Tier 아키텍처)의 가장 큰 장점은 기능의 논리적, 물리적 분리(Logical & Physical Separation)입니다. 각 계층은 기능적 요구사항에 최적화된 별도의 운영 체제와 서버 플랫폼에서 실행될 수 있습니다.
예를 들어,

  • 프레젠테이션 계층웹 서버
  • 애플리케이션 계층애플리케이션 서버
  • 데이터 계층데이터베이스 서버

에 각각 배포되어 독립적으로 동작합니다.
또한, 각 계층은 전용 서버(하드웨어) 또는 가상 서버(클라우드)에서 독립적으로 실행되기 때문에, 다른 계층에 영향을 주지 않고 각 계층의 서비스를 자유롭게 커스터마이징하고 성능을 최적화할 수 있습니다.

2. 기타 주요 장점

2.1 빠른 개발

  • 각 계층이 별도의 개발 팀에 의해 동시에 개발될 수 있습니다.
  • 덕분에 애플리케이션을 보다 빠르게 시장에 출시할 수 있습니다.
  • 또한, 각 계층은 최신 언어와 프레임워크를 자유롭게 선택하여 개발할 수 있습니다.
    • 예: 프론트엔드는 React, 백엔드는 Spring Boot, DB는 PostgreSQL

2.2 개선된 확장성

  • 트래픽이 몰리는 특정 계층만 독립적으로 확장(Scale-Out)이 가능합니다.
  • 예를 들어, 애플리케이션 계층 서버만 수평 확장하여 처리 성능을 높일 수 있습니다.

2.3 개선된 신뢰성

  • 하나의 계층에 장애가 발생해도, 다른 계층에는 최소한의 영향만 미칩니다.
  • 예를 들어, 애플리케이션 서버가 일부 다운되더라도 웹 서버나 DB는 정상적으로 운영될 수 있습니다.

2.4 개선된 보안성

  • 프레젠테이션 계층과 데이터 계층이 직접 통신하지 않도록 설계됩니다.
  • 애플리케이션 계층이 보안 관문의 역할을 하며 내부 방화벽처럼 동작합니다.
  • 이 구조 덕분에 SQL 인젝션이나 기타 악의적인 공격을 차단하기가 용이합니다.

기타 다중 아키텍처

1. 1계층 아키텍처 (Single-Tier Architecture)

1.1 정의

1계층 아키텍처는 모든 기능(프레젠테이션, 비즈니스 로직, 데이터 처리)단일 시스템(단일 계층)에 포함된 구조입니다. 모든 컴포넌트가 하나의 애플리케이션 안에서 실행되기 때문에 단일 계층 아키텍처라고 부릅니다.

1.2 특징

  • 애플리케이션, 데이터, 사용자 인터페이스가 모두 같은 시스템(프로세스 또는 서버)에서 작동합니다.
  • 클라이언트 서버의 개념이 없거나, 모든 기능이 클라이언트에 내장되어 있습니다.
  • 데이터베이스가 로컬 파일로 존재하거나, 앱 내부에서 직접 데이터를 저장/처리합니다.
  • 일반적으로 데스크탑 애플리케이션(엑셀, 워드 등)이나 초기 소프트웨어 프로그램이 이런 구조였습니다.

1.3 장점

  • 구조가 간단하고 개발이 쉬움
  • 배포가 간편함 (모든 기능이 하나에 있음)
  • 작은 규모의 애플리케이션에서는 효율적

1.4 단점

  • 확장성과 유지보수가 어려움
  • 여러 사용자가 동시에 사용하기 어려움
  • 보안 위험이 큼 (모든 데이터를 로컬에서 처리하고 저장하기 때문에 외부 노출 가능성이 있음)

1.5 사용 사례

  • 엑셀, 워드 같은 단일 사용자를 위한 데스크탑 소프트웨어
  • 초기 게임, 간단한 계산기 앱 등

2. 2계층 아키텍처 (Two-Tier Architecture)

2.1 정의

2계층 아키텍처는 프레젠테이션 계층데이터 계층으로 구성된 클래식 클라이언트-서버 모델입니다. 비즈니스 로직은 주로 클라이언트(프레젠테이션 계층) 또는 서버(데이터 계층) 중 하나에 포함되어 동작합니다.

2.2 특징

  • 프레젠테이션 계층(클라이언트)데이터 계층(DB)직접 접근합니다.
  • 비즈니스 로직이 클라이언트 또는 DB에 종속되거나 분산되기 때문에 관리와 유지보수가 어렵습니다.
  • 클라이언트에서 직접 데이터 처리를 수행하기 때문에 응답 속도가 빠를 수 있습니다.
  • 클라이언트와 서버 간의 네트워크 트래픽이 비교적 단순합니다.

2.3 장점

2.3.1 구현이 간단하고 개발 속도가 빠름

  • 아키텍처 구조가 단순하여 초기 개발과 배포가 용이합니다.

2.3.2 성능이 빠름 (소규모 환경 기준)

  • 클라이언트가 데이터베이스에 직접 연결되므로 데이터 요청이 빠릅니다.

2.3.3 개발 및 유지 비용이 낮음

  • 인프라가 단순하여 소규모 프로젝트나 초기 프로토타입에 적합합니다.

2.3.4 소규모 애플리케이션에 효과적

  • 제한된 사용자나 내부 전용 시스템에서는 간단하게 운영할 수 있습니다.

2.4 단점

2.4.1 보안에 취약함

  • 클라이언트가 DB에 직접 접근하므로 보안 위협에 노출되기 쉽습니다.

2.4.2 확장성이 떨어짐

  • 데이터베이스 서버에 부하가 집중되는 구조로 인해, 사용자 증가 시 효율적인 수평 확장이 어렵고 확장성에 한계가 있습니다.

2.4.3 유지보수가 어려움

  • 비즈니스 로직이 분산되어 있어 기능 변경이나 확장 시 관리가 복잡합니다.

2.4.4 비즈니스 로직의 일관성 유지가 어려움

  • 클라이언트마다 로직이 다를 수 있고, 이를 관리하기가 어렵습니다.

2.5 사용 사례

  • 소규모 애플리케이션 (간단한 연락처 관리 프로그램 등)
  • 내부 시스템 (사용자가 적고, 보안 리스크가 상대적으로 낮은 내부 전산 시스템)
  • 단일 사용자 기반 프로그램 (로컬 환경에서 동작하는 프로그램 - 데스크탑 애플리케이션 등)

3. N계층 아키텍처 (N-Tier Architecture)

3.1 정의

N계층 아키텍처는 다중 계층 아키텍처(Multi-Tier Architecture)라고도 하며, 3계층 이상으로 구성된 아키텍처를 의미합니다. 각 계층은 특정 기능을 담당하며, 계층 간 분리를 통해 시스템을 더욱 세분화하고 확장할 수 있습니다.

3.2 특징

  • 각 계층이 독립적으로 분리되어 있어, 역할과 책임이 명확합니다.
  • 계층 간 인터페이스(API)를 통해 통신하며, 보안과 트랜잭션 관리가 용이합니다.
  • 복잡한 엔터프라이즈 시스템이나 대규모 애플리케이션에서 주로 사용됩니다.
  • 계층이 많아지면 관리 및 운영 비용이 증가하며, 복잡성도 높아질 수 있습니다.

3.3 장점

3.3.1 높은 유연성과 확장성

  • 특정 계층만 독립적으로 확장하거나 변경이 가능합니다.

3.3.2 보안 강화

  • 계층 간 접근 제어가 가능하여 보안 위험을 줄이고, 각 계층별로 방화벽과 인증 시스템을 적용할 수 있습니다.

3.3.3 유지보수 용이

  • 각 계층이 명확히 분리되어 있어 특정 기능만 수행해도 전체 시스템에 영향을 주지 않습니다.

3.3.4 기술 선택의 유연성

  • 각 계층마다 최적화된 언어나 프레임워크를 사용할 수 있어 기술적 자유도가 높습니다.

3.3.5 복잡한 비즈니스 요구사항 대응 가능

  • 복잡한 트랜잭션, 다양한 비즈니스 로직, 서비스 통합을 구조화하여 처리할 수 있습니다.

3.3.6 마이크로서비스 전환 및 연동에 유리

  • 계층 분리 기반으로, 추후 마이크로서비스 아키텍처로 전환하거나 연동하기 쉬운 구조입니다.

3.4 단점

3.4.1 구현과 운영이 복잡함

  • 계층이 많아질수록 설계 및 운영 비용이 증가합니다.

3.4.1 성능 저하 가능성

  • 계층 간 통신이 많아지면 응답 시간이 늘어나고, 시스템 전체의 퍼포먼스가 저하될 수 있습니다.

3.4.1 관리 및 인프라 비용 증가

  • 각 계층별로 서버와 인프라가 필요하기 때문에 초기 투자 비용과 운영 비용이 높습니다.

3.4.1 장애 지점 증가

  • 계층이 많아지면 각 계층마다 장애가 발생할 가능성이 높아지고, 장애 관리가 복잡해질 수 있습니다.

3.5 사용 사례

  • 대규모 전자상거래 플랫폼, 엔터프라이즈 기업 시스템(ERP 등)
  • 마이크로서비스 기반 클라우드 시스템, 금융 시스템 등

계층별 아키텍처 비교 표

아키텍처설명예시
1계층프레젠테이션, 비즈니스 로직, 데이터 처리를 모두 하나의 시스템에서 실행데스크탑 애플리케이션 (엑셀, 초기 게임)
2계층프레젠테이션 계층과 데이터 계층으로 분리. 비즈니스 로직이 클라이언트 또는 DB에 포함됨단순한 클라이언트-서버 앱 (예: 연락처 관리 프로그램)
3계층프레젠테이션, 애플리케이션, 데이터 계층으로 분리. 가장 널리 사용되는 구조전자상거래 웹사이트, 기업용 애플리케이션
N계층3계층을 기반으로, 기능별로 계층을 더 세분화한 구조마이크로서비스 아키텍처(MSA), 대규모 분산 시스템
profile
donggyun_ee

0개의 댓글