핵심 인사이트 (3줄 요약)

  1. 본질: 클라이언트-서버 DBMS 아키텍처는 DB 엔진을 서버에 중앙 집중화하고, 클라이언트는 SQL 요청만 전송하는 구조다. 파일 공유 방식(모든 클라이언트가 DB 파일 직접 접근)의 동시성·보안·무결성 문제를 해결했다.
  2. 가치: 2-Tier(클라이언트-DB 서버), 3-Tier(클라이언트-앱서버-DB 서버), N-Tier(마이크로서비스) 구조로 발전하며 확장성과 보안성이 높아졌다. 3-Tier는 현대 웹 애플리케이션의 표준 구조다.
  3. 판단 포인트: 데이터베이스 연결(Connection)은 비용이 크다. 커넥션 풀(Connection Pool)은 미리 N개 연결을 생성해두고 재사용하여 연결 생성 오버헤드를 제거한다. 적절한 풀 크기가 성능의 핵심이다.

Ⅰ. 개요 및 필요성

아키텍처 발전:

1-Tier (파일 공유):
  [앱+DB+데이터 모두 한 기계]
  → 다중 사용자 불가

2-Tier (C/S):
  [클라이언트 앱] ──SQL──> [DB 서버]
  → 클라이언트가 두꺼움 (Fat Client)

3-Tier:
  [브라우저/앱] ──HTTP──> [앱 서버] ──SQL──> [DB 서버]
  → 표준 웹 아키텍처

N-Tier (MSA):
  [클라이언트] → [API 게이트웨이] → [서비스A,B,C] → [DB A,B,C]
  → 서비스별 독립 DB
  • 📢 섹션 요약 비유: 아키텍처 발전은 음식점 서비스 방식이다. 혼자 밥 해먹기(1-Tier), 식당 가서 주문(2-Tier), 배달앱으로 주문(3-Tier), 여러 배달 서비스 연동(MSA) 순으로 복잡성과 확장성이 증가한다.

Ⅱ. 아키텍처 및 핵심 원리

커넥션 풀 작동 원리

커넥션 풀 없이:
  요청마다 새 연결 생성 (100ms+) → 응답 지연

커넥션 풀 사용:
  시작 시 10개 연결 미리 생성 (DB 서버와 TCP 유지)
  요청: 풀에서 유휴 연결 즉시 획득 (1ms 미만)
  완료: 연결 반납 (close 아닌 반환)

주요 파라미터:
  initialSize:    최초 연결 수 (5)
  minIdle:        최소 유휴 연결 (5)
  maxActive:      최대 연결 수 (20)
  maxWait:        연결 대기 최대 시간 (3000ms)
  validationQuery: 연결 유효성 확인 쿼리

DB 미들웨어 계층

계층역할
JDBC/ODBC표준 DB 접근 API
ORM객체-관계 매핑 (Hibernate, JPA)
커넥션 풀연결 재사용 (HikariCP, DBCP)
프록시연결 분산·캐싱 (ProxySQL, PgBouncer)
서비스 메시MSA DB 연결 관리
  • 📢 섹션 요약 비유: 커넥션 풀은 택시 대기소다. 항상 10대의 택시(DB 연결)가 대기하고 있어서 손님(요청)이 오면 즉시 배차(연결 제공)한다. 매번 새 택시를 불러오는 것(새 연결 생성)보다 훨씬 빠르다.

Ⅲ. 비교 및 연결

비교2-Tier3-TierMSA
클라이언트Fat ClientThin ClientAPI Client
확장성낮음중간높음
보안DB 직접 노출앱 서버 방어API 게이트웨이
DB 수1개 공유1~2개 공유서비스별 독립
  • 📢 섹션 요약 비유: 2/3/MSA 계층은 회사 조직 구조다. 모두가 직접 사장에게 보고(2-Tier), 팀장을 통해 보고(3-Tier), 각 팀이 독립적으로 운영(MSA)으로 확장성이 달라진다.

Ⅳ. 실무 적용 및 기술사 판단

HikariCP 최적 설정 (Spring Boot)

spring:
  datasource:
    hikari:
      pool-name: HikariPool-1
      maximum-pool-size: 10      # CPU 코어 수 × 2~3
      minimum-idle: 5
      connection-timeout: 3000   # 3초
      idle-timeout: 600000       # 10분 유휴 후 제거
      max-lifetime: 1800000      # 30분 후 연결 교체
      validation-timeout: 5000
      connection-test-query: "SELECT 1"

읽기-쓰기 분리 아키텍처

쓰기 연결 풀 → Primary DB (쓰기 전용)
읽기 연결 풀 → Replica DB×N (읽기 분산)

장점:
  - 읽기 쿼리 부하 분산
  - Primary DB 쓰기 성능 보호
  - 읽기 쿼리 다중 복제본 병렬 처리
  • 📢 섹션 요약 비유: 읽기-쓰기 분리는 복사 센터 운영이다. 원본 작성(Primary/쓰기)과 복사 출력(Replica/읽기)을 분리하여, 복사 수요가 많아도 원본 작업에 방해가 없다.

Ⅴ. 기대효과 및 결론

기대효과내용
성능커넥션 풀로 연결 오버헤드 제거
확장성3-Tier/MSA로 수평 확장 용이
보안DB 서버를 클라이언트로부터 격리

서버리스·엣지 컴퓨팅 환경에서 DB 커넥션 풀이 새로운 도전을 받고 있다. Lambda 함수가 수천 개 동시 실행 시 커넥션 폭발(Connection Storm)이 발생하며, AWS RDS Proxy·PlanetScale serverless driver 같은 서버리스 전용 DB 프록시가 해결책으로 등장했다.

  • 📢 섹션 요약 비유: 서버리스 DB 프록시는 대형 행사 주차 관리다. 수천 명 동시 방문(Lambda 함수)에 주차 공간(DB 연결)이 부족하면 대기 줄이 생긴다. DB 프록시(주차 대행)가 연결을 중간에서 효율적으로 관리한다.

📌 관련 개념 맵

개념연결 포인트
커넥션 풀DB 연결 재사용 성능 최적화
HikariCPSpring Boot 표준 커넥션 풀
읽기-쓰기 분리Primary/Replica 부하 분산
RDS Proxy서버리스 환경 DB 연결 관리
ORM객체-DB 매핑 추상화 계층

📈 관련 키워드 및 발전 흐름도

[파일 공유 DB — 1-Tier, 동시성 문제]
    │
    ▼
[2-Tier C/S — DB 서버 중앙화, Fat Client]
    │
    ▼
[3-Tier — 앱 서버 추가, 커넥션 풀, 표준 웹 구조]
    │
    ▼
[MSA — 서비스별 독립 DB, API 게이트웨이]
    │
    ▼
[서버리스 DB 프록시 — Lambda 커넥션 폭발 해결]

👶 어린이를 위한 3줄 비유 설명

  1. 클라이언트-서버 DB는 식당 주문 시스템이에요 — 손님(클라이언트)이 주문하면 주방(DB 서버)에서 처리해요!
  2. 커넥션 풀은 택시 대기소예요 — 미리 연결을 만들어둬서 요청이 오면 즉시 서비스해요!
  3. 현대 앱은 3-Tier로 브라우저→앱서버→DB 서버 구조로 동작해요!