# RHEL 8 기반 단일노드 Docker Compose 리소스 산정 문서

생성일: 2025-09-02 14:15:33

## 1) 전제 조건
- 개발 20명, 검증=운영 기준, 운영 200명(HA 2노드)
- 단일 VM에서 Docker Compose로 Web(정적/프록시/BFF) + WAS(Java) 컨테이너 실행
- DB/스토리지는 별도

## 2) 계산식(요약)
- 리틀의 법칙: L = λ × W (동시성≈활성사용자 수)
- 컨테이너 한도: WAS 컨테이너 메모리 ≈ Xmx × 1.5, Web 0.5–1.0GiB
- VM 총 메모리: M_vm = (OS 1.5GiB + Docker 0.5GiB + Σ컨테이너한도) × 여유율(1.3~1.5)

## 3) 통합 스펙 표
### 개발(Dev)
| 구분             | vCPU   |   RAM (GiB) |   디스크(GB) | 네트워크   | 주요 한도(Compose)                   | 비고                                                                               |
|:-----------------|:-------|------------:|-------------:|:-----------|:-------------------------------------|:-----------------------------------------------------------------------------------|
| 개발(Dev) - 20명 | 4 vCPU |           8 |          100 | 1 GbE+     | web: 512MiB/1 CPU, was: 1.5GiB/2 CPU | RHEL8 OS 1.5GiB + Docker 0.5GiB + web 0.5GiB + was 1.5GiB ≈ 4GiB × 여유 1.5 → 8GiB |

### 검증(Stage)
| 구분                     | vCPU   | RAM (GiB)   | 디스크(GB)   | 네트워크   | 주요 한도(Compose)                          | 비고                                            |
|:-------------------------|:-------|:------------|:-------------|:-----------|:--------------------------------------------|:------------------------------------------------|
| 검증(Stage) - 운영 1대분 | 4 vCPU | 8–12        | 120–150      | 1 GbE+     | web: 512MiB–1GiB/1 CPU, was: 1.5–3GiB/2 CPU | 운영 노드 1대분과 동일 스펙 권장(릴리스 리허설) |

### 운영(Prod)
| 구분                                  | vCPU   | RAM (GiB)   |   디스크(GB) | 네트워크   | 주요 한도(Compose)                          | 비고                                                                         |
|:--------------------------------------|:-------|:------------|-------------:|:-----------|:--------------------------------------------|:-----------------------------------------------------------------------------|
| 운영(Prod) - 200명, HA 2노드(각 노드) | 4 vCPU | 8–12        |          150 | 1–10 GbE   | web: 1GiB/1 CPU, was: 3GiB/2 CPU (Xmx≈2GiB) | OS 1.5GiB + Docker 0.5GiB + web 1.0GiB + was 3.0GiB ≈ 6GiB × 여유 1.3 → 8GiB |

## 4) Compose 한도 예시
```yaml
services:
  web:
    image: nginx:latest
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1g  # Dev: 512MiB, Prod: 1GiB
  was:
    image: eclipse-temurin:17-jre
    environment:
      - JAVA_TOOL_OPTIONS=-Xmx2g  # Dev: -Xmx1g, Prod: -Xmx2g
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3g  # ≈ 1.5 × Xmx
```

## 5) 참고 경로
- Little’s Law: https://en.wikipedia.org/wiki/Little%27s_law
- RHEL 8 최소 요구(설치 RAM/디스크): https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/automatically_installing_rhel/system-requirements-and-supported-architectures_rhel-installer
- RHEL 8 설계 가이드(환경별 요구량 상이): https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html-single/system_design_guide/index
- Docker 리소스 제한: https://docs.docker.com/engine/containers/resource_constraints/
- Docker Compose deploy.resources: https://docs.docker.com/reference/compose-file/deploy/
- docker stats로 관측: https://docs.docker.com/reference/cli/docker/container/stats/