🏛️ 3계층 아키텍처(Web-WAS-DB)의 심층 이해

– 시스템 설계의 고전적 구조를 현대적으로 재해석하다

“단순한 구조 같지만, 깊이 들여다보면 분산 시스템의 근간이 여기에 있다.”


📌 1. 들어가며: 왜 3계층 아키텍처인가?

WEB-WAS-DB 구조는 1990년대 후반부터 등장하여, 2000년대 인터넷 서비스의 폭발적 성장과 함께 분산 시스템 설계의 사실상 표준 구조로 자리잡았습니다.
오늘날 클라우드 환경, 마이크로서비스, 서버리스 구조가 부상하고 있지만, 이 3계층 구조의 철학과 역할 분리는 여전히 현대 아키텍처의 근간을 이룹니다.

“3계층 아키텍처는 단순한 기술 스택이 아니라, 시스템의 책임과 복잡성을 나누는 설계 원칙이다.”


🔍 2. 각 계층의 기술적 정의와 책임

계층주요 역할기술 스택 예시
WEB (Presentation Layer)사용자 인터페이스, 요청 수신, 정적 자원 제공Nginx, Apache, CDN, React, Vue
WAS (Application Layer)비즈니스 로직, 인증, 트랜잭션 처리Tomcat, Spring Boot, Node.js, Django
DB (Data Layer)영속성, 트랜잭션 보장, 데이터 정합성PostgreSQL, MySQL, Oracle, MongoDB

🧩 책임 분리의 원칙 (Separation of Concerns)

  • WEB은 단순 라우팅, 프레젠테이션 → 확장성과 보안 고려 용이
  • WAS는 비즈니스의 심장 → 확장과 격리 필요
  • DB는 트랜잭션/정합성 보증 → 성능·복제·보안 중심 설계

🛠️ 3. 아키텍처 설계 시 고려 요소

1. 스케일 아웃 전략

  • WEB과 WAS는 수평 확장이 유리 → Stateless 설계 권장
  • DB는 수직 확장 한계 존재 → Read Replication, Sharding 필요

2. 트랜잭션 보장

  • WAS ↔ DB 간의 ACID 보장
  • 멀티노드 WAS 간의 분산 트랜잭션 문제 고려 (XA Protocol, SAGA 패턴 등)

3. 보안 계층화

  • WEB ↔ 사용자: HTTPS, 인증 토큰
  • WAS ↔ DB: 최소 권한 원칙, 연결 암호화, 방화벽 계층 구성

4. 로드밸런싱

  • WEB ↔ WAS: L7 Load Balancer (쿠키 스티키 / 무상태)
  • WAS ↔ DB: DB Connection Pool 최적화

⚙️ 4. 통신 및 메시징 모델

🧾 클라이언트 요청 흐름 예시

[사용자] → HTTP 요청 →
[WEB] → 인증 헤더 파싱 →
[WAS] → 비즈니스 처리 →
[DB] → 쿼리 실행 →
[WAS] → 응답 포맷 구성 →
[WEB] → 사용자에게 HTML/JSON 전달

🔁 연결 방식

  • WEB ↔ WAS: RESTful API, gRPC, WebSocket
  • WAS ↔ DB: JDBC, ORM (Hibernate, Sequelize 등)

🧪 5. 분산 시스템 관점의 문제들

1. CAP 이론 적용

  • DB 계층에서는 CAP 중 CP 또는 CA 선택 상황 발생
  • Web/WAS 계층에서는 Availability 우선 설계가 많음

2. 장애 복원력 (Fault Tolerance)

  • WEB: CDN fallback, health check 기반 Auto-recovery
  • WAS: Circuit Breaker, Retry, Fallback pattern
  • DB: Active-Standby 구성, Failover, Replication lag 대응

3. Consistency vs. Performance

  • 캐시 계층의 도입 (Redis, Memcached)으로 성능 향상
  • WAS가 DB 부하를 줄이기 위해 쓰기 지연 패턴을 사용할 수도 있음 (Eventual Consistency)

☁️ 6. 클라우드 환경에서의 3계층 아키텍처

계층현대적 구현 예시 (AWS 기준)
WEBAmazon CloudFront, Application Load Balancer, Nginx on EC2
WASECS Fargate, Lambda + API Gateway, EKS
DBRDS (Aurora), DynamoDB, ElastiCache

📦 IaC (Infrastructure as Code)

  • Terraform, AWS CDK로 계층별 인프라 자동화
  • 예: module "was" → ECS Cluster + Service, module "db" → RDS + Subnet Group

🧠 APM 연동

  • WEB: Page Load Metrics
  • WAS: Application Tracing (NewRelic, Datadog, X-Ray)
  • DB: 쿼리 슬로우 로그 분석

🧭 7. 마이크로서비스 아키텍처(MSA)로의 진화와 비교

항목3계층 구조MSA
통신 방식HTTP, JDBCREST, gRPC, 메시지 큐
데이터 저장소통합 RDB서비스별 DB 분리 (Polyglot Persistence)
장점관리 용이, 안정성확장성, 독립 배포
단점단일 장애점, 변경 전파 위험복잡성 증가, 분산 트랜잭션 이슈

오늘날 3계층 구조는 ‘모놀리식 아키텍처’로 분류되지만, 초기 단계에서는 여전히 균형 잡힌 선택지입니다.


🧮 8. 실제 설계 시 체크리스트 (대학원 연구 or 실무기준)

항목고려 내용
상태 관리WAS stateless 유지 여부 → 세션 저장소 분리
확장성각 계층별 수평 확장 조건 (Auto Scaling 그룹)
연결 병목WAS ↔ DB 간 커넥션 풀 사이즈, 타임아웃
보안 정책Subnet 분리, Security Group 구성, 최소 권한 접근
CI/CD 구성계층별 배포 자동화 및 롤백 정책 존재 여부
장애 전파단일 계층 장애 시 복구/대체/우회 설계 유무
테스트 전략각 계층별 단위 테스트, 통합 테스트 계획 수립

✅ 결론: 3계층 구조는 ‘단순함의 미학’이자 ‘확장성의 초석’

WEB-WAS-DB 3계층 구조는 단순히 세 계층으로 나누는 설계가 아니라,
복잡한 애플리케이션을 책임, 보안, 확장성, 유지보수성 관점에서 해체하고 구조화하는 전략입니다.

오늘날 서버리스나 MSA 환경이 대세라고 해도,
3계층 구조의 철학은 변하지 않습니다.

“시스템은 결국 나눌 수 있어야 관리할 수 있다.
그리고 관리 가능한 시스템만이 성장 가능한 시스템이다.”


📚 참고자료:

  • Martin Fowler, Patterns of Enterprise Application Architecture
  • AWS Well-Architected Framework
  • Google Cloud Architecture Center
  • ACM Queue: Monolith vs Microservices: It’s Not Either/Or


2930 Blog에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.