본문 바로가기

Infra&Cloud/Infra

3계층 구조 ( 3-tier Architecture ) 란?

N계층 (N-tier) 아키텍처란?

소프트웨어를 구성하는 물리적/논리적 구조를 의미함.

 

구성 요소

1.프레젠테이션 계층

사용자와 시스템 사이의 접점 역할을 수행하는 최상위 계층.

  • 역할 : UI를 제공하고 사용자의 입력을 받아 하위 계층으로 전달하며, 처리 결과를 시각적으로 보여줌
  • 주요 구성 요소
    • 웹 브라우저
    • 모바일 앱 UI
    • SPA 프론트엔드 (React,Vue)
    • 서버가 렌더링한 HTML을 받아서 실행, 표시하는 환경

HTTP Request가 만들어지는 지점까지가 Client 계층

 

2.애플리케이션 계층

시스템의 핵심 로직이 실행되는 중간 계층으로, ‘비즈니스 로직 계층’ 이라고도 불림.

  • 역할 : 클라이언트 계층으로부터 전달받은 요청을 처리함. 데이터 계층과 통신하며 데이터를 읽거나 쓰며 산술적인 계산과 판단을 수행함.
  • 주요 구성 요소
    • 애플리케이션 서버 (Django, SpringBoot, Node.js)
    • API 서버
    • SSR 로직 (Django Template, Thymeleaf)

요청을 처음 받아서 비즈니스 로직이 실행되는 순간부터 Application 계층

 

3.데이터 계층

데이터를 저장하고 관리하며, 요청에 따라 데이터를 제공하는 계층.

  • 역할 : 비즈니스 로직에서 생성되거나 필요한 데이터를 영구적으로 저장하고 검색함.
  • 주요 구성 요소
    • RDBMS
    • NoSQL
    • Cache
    • Object Storage (S3)

 

1계층 아키텍처

개념

모든 구성 요소 ( client, app, data )가 하나의 컴퓨터 안에 통합된 구조.

장점

  • 구조가 단순하여 구현이 쉽다
  • 네트워크 통신이 없어 성능 오버헤드가 적다
  • 배포 및 운영 비용이 낮다
  • 환경 차이로 인한 호환성 문제나 컨텍스트 전환 비용이 없다

단점

  • 원격 또는 분산 데이터 접근이 불가능하다
  • 코드가 모놀리식으로 구성되어 유지보수가 어렵다
  • 확장성이 거의 없다
  • 중앙 시스템 의존도가 높아 장애 시 전체 서비스가 영향을 받는다

 

2계층 아키텍처

시스템을 클라이언트와 서버 두 부분으로 분리한 구조.

클라이언트와 서버로 구성되며, 비즈니스 로직과 데이터베이스가 동일한 서버 계층에 위치하는 구조.

Client / Server (Application + DB)

장점

  • 구조가 비교적 단순하여 개발이 용이하다
  • 데이터베이스와 로직이 가까워 초기 성능이 좋다
  • 소규모·동질적인 환경에 적합하다
  • 빠른 프로토타이핑이 가능하다

단점

  • 클라이언트가 많은 로직을 보유하게 되어 버전 관리가 어렵다
  • 클라이언트 수 증가 시 확장성이 급격히 저하된다
  • 각 클라이언트가 DB에 직접 연결하면서 보안 관리가 복잡해진다
  • 데이터베이스 성능이 비즈니스 로직 부하까지 함께 받는다
  • 로직 재사용성이 낮고 변경 시 전체 클라이언트 배포가 필요하다
  • DB 구조 변경 시 애플리케이션 전체에 영향이 크다

 

3계층 아키텍처

개념

모든 계층이 명확히 분리된 구조

장점

  • 애플리케이션 서버를 수평 확장할 수 있어 확장성이 뛰어나다
  • 비즈니스 로직을 중앙에서 관리하여 재사용성이 높다
  • 클라이언트가 DB에 직접 접근하지 않아 보안이 강화된다
  • 데이터 무결성을 애플리케이션 계층에서 통제할 수 있다
  • 애플리케이션 서버와 DB 서버를 분리하여 장애 대응이 용이하다
  • 데이터베이스 구조 변경이 클라이언트에 직접 노출되지 않는다

단점

  • 계층 간 통신이 늘어나 구조와 구현이 복잡해진다
  • 초기 설계 및 인프라 비용이 2계층보다 높다
  • 성능 최적화를 위해 추가적인 설계가 필요하다

3tier를 왜, 언제 사용하나요?

  • 확장성 애플리케이션 계층을 수평 확장하여 트래픽 증가에 대응 가능
  • 유지보수성 비즈니스 로직을 중앙에서 관리해 변경 시 영향 범위 축소
  • 보안성 클라이언트가 데이터베이스에 직접 접근하지 않아서 접근 제어가 명확함
  • 연결성 계층 분리로 장애 격리가 가능하고, 부분 장애가 전체 서비스로 확장되지 않음

언제

  • 사용자 수 증가가 예상되는 서비스 (확장)
  • 트래픽 변동이 있는 서비스 (확장)
  • 장기간 운영이 전제된 시스템
  • 보안과 데이터 무결성이 중요한 서비스
  • 기능 변경,확장이 잦은 서비스

3tier를 왜 배우나요?

  1. 현대 웹 서비스의 기본 구조이기 때문 대부분의 웹/모바일 서비스는 형태는 달라도 Client - Application - Data 구조를 기반으로 동작함. 3-Tier를 이해해야 실제 서비스 아키텍처를 읽을 수 있고, 구조 선택의 이유를 설명할 수 있음
  2. 확장/보안/운영 문제를 구조적으로 이해할 수 있기 때문 3-Tier는 단순한 배치 구조가 아니라,
  • 왜 로드밸런서가 필요한지
  • 왜 DB를 직접 노출하면 안 되는지를 구조적으로 설명해줌.

'Infra&Cloud > Infra' 카테고리의 다른 글

API Gateway Solution ( Feat. Kong, Apache, Spring Cloud Gateway)  (0) 2025.10.21
API Gateway 정리  (0) 2025.10.21