VM 서버 자원 스펙 산출 근거 (개발환경 · 최대 자원 적용)

생성일: 2025-09-03 04:47:04

Ⅰ. 산정기준

Ⅱ. 산정근거(수치 & 가정)

구성개수vCPU(컨테이너당)메모리(컨테이너당)비고
Mendix 앱(JVM)32.04.0 GB최대 시작치(힙 중심), 실측 후 단계 조정
웹/역프록시10.51.0 GBTLS/압축/리라이트 피크 고려
DB(PostgreSQL)12.02.0 GB/dev/shm 512m 설정 권장
기타 자원CPU메모리설명
OS/데몬0.5 vCPU2.0 GB기본 서비스·파일시스템·에이전트
보안/모니터링/백업 에이전트0.5 vCPU1.0 GB피크 시 상시 동작 고려
파일시스템 캐시-2.0 GB컨테이너 레이어/로그 I/O 흡수
JVM GC·네이티브-1.2 GB앱 힙의 10%로 가정

Ⅲ. 계산방법(공식 & 단계)

  1. 컨테이너 합계
    CPU = 3×2.0 + 0.5 + 2.0 = 8.50 vCPU
    MEM = 3×4.0 + 1.0 + 2.0 = 15.00 GB
  2. 기타 자원 가산
    CPUᵖʳᵉ = 8.50 + 0.50 + 0.50 = 9.50 vCPU
    MEMᵖʳᵉ = 15.00 + 2.00 + 1.00 + 2.00 + 1.20 = 21.20 GB
  3. 오버헤드 적용 (× 1.2)
    CPUᵒʰ = 9.50 × 1.2 = 11.40 vCPU
    MEMᵒʰ = 21.20 × 1.2 = 25.44 GB
  4. 버퍼 적용 (× 1.25)
    CPUᶠ = 11.40 × 1.25 = 14.25 vCPU
    MEMᶠ = 25.44 × 1.25 = 31.80 GB
권장 VM 스펙(개발 · 최대 자원 기준):
CPUᶠ ≈ 14.25 → 16 vCPU
MEMᶠ ≈ 31.80 GB → 32 GB

Ⅳ. 디스크(스토리지) 산정

1) 기본스토리지(OS/Docker/시스템 로그)

마운트/볼륨용도초기 크기비고
/OS/기본 패키지40 GBRHEL 8 최소 요구 상회
/var/lib/docker이미지/레이어/캐시150 GB빌드·캐시·업데이트 대비 (최대)
/var/log시스템/도커 로그40 GBlogrotate 7–14일
합계230 GB ≈ 230 GB

2) 추가스토리지(앱 로그/미디어)

로그 산정식: Slogs = (일일 로그량 × 보관일수) × 1.5(여유)

미디어 여유 200 GB 포함 → 권장 시작: 537 GB (성장 추세에 따라 확장).

Ⅴ. Docker Compose 리소스 한도(최대 시작치) 예시

version: "3.9"
services:
  mendix-app-1:
    image: your/mendix:dev
    deploy:
      resources:
        limits: { cpus: "2.0", memory: "4.0g" }
        reservations: { cpus: "1.0", memory: "2.0g" }
  mendix-app-2: { << 동일 >> }
  mendix-app-3: { << 동일 >> }

  web:
    image: your/reverse-proxy:latest
    deploy:
      resources:
        limits: { cpus: "0.5", memory: "1.0g" }

  db:
    image: postgres:16
    shm_size: "512m"
    deploy:
      resources:
        limits: { cpus: "2.0", memory: "2.0g" }

※ 실제 적용 여부는 엔진/오케스트레이터에 따라 다릅니다. 배포 후 docker stats로 CPU%, 메모리 사용/리밋을 검증하세요.

Ⅵ. 참조 링크(산정근거)

  1. Mendix Java 메모리 사용: https://docs.mendix.com/refguide/java-memory-usage/
  2. Mendix 스케일링(수평/수직): https://docs.mendix.com/developerportal/deploy/scale-environment/
  3. Docker 리소스 제약(메모리/CPU): https://docs.docker.com/engine/containers/resource_constraints/
  4. Docker Compose deploy.resources: https://docs.docker.com/reference/compose-file/deploy/
  5. docker stats: https://docs.docker.com/reference/cli/docker/container/stats/
  6. PostgreSQL & 공유 메모리: https://www.instaclustr.com/blog/postgresql-docker-and-shared-memory/
  7. RHEL 8 시스템 요구사항: https://docs.redhat.com/.../system-requirements-and-supported-architectures_rhel-installer