Client (프론트엔드)
↓
[1] Presentation Layer (웹 서버)
↓
[2] Business Logic Layer (애플리케이션 서버)
↓
[3] Data Layer (데이터베이스 서버)
| 계층 | 설명 | 예시 기술 |
|---|---|---|
| 1. Presentation Layer | 사용자와 직접 상호작용하는 계층. UI/UX를 담당 | HTML, CSS, JavaScript, React, Vue, Angular 등 |
| 2. Business Logic Layer | 핵심 로직과 규칙 처리. 요청 검증, 서비스 로직 실행 | Java(Spring), Node.js, Python(Django), Express 등 |
| 3. Data Layer | 영속적인 데이터 저장 및 조회 담당 | MySQL, PostgreSQL, MongoDB, Oracle 등 |
목적 1. 클라이언트의 요청을 두 웹서버에 고르게 분산시켜서 트래픽 부하를 분산(로드밸런싱)
목적 2. 단일 진입점 제공
frontend webserver
bind *:80
mode http
default_backend nginx-server
backend nginx-server
mode http
balance roundrobin
option httpchk GET /
server nginx1 10.10.10.22:80 check
server nginx2 10.10.10.33:80 check
프론트엔드 설정
bind *:80: 모든 IP에서 80포트를 수신
default_backend nginx-server: 요청을 nginx-server 백엔드로 전달
백엔드 설정
balance roundrobin: 라운드로빈 방식으로 부하 분산
- 라운드 로빈 방식이란? 들어오는 요청을 서버들에게 순서대로 하나씩 번갈아 가며 분배하는 방식
option httpchk GET /: HTTP 상태 체크 – 루트 경로(/)로 GET 요청을 보내서 서버가 살아있는지 확인