Skip to content

English {#english}

Frappe/ERPNext/HRMS v15 → v16 Upgrade Plan

Purpose: Organize work needed to move the Prego stack (Frappe, ERPNext, HRMS) from version-15 to version-16 by phase.
No code generation — plan, strategy, dependencies, verification checklist only.

References: docker-hub-stack-ansible-deploy-plan; prego-docker-implementation-plan; ansible-frappe-bench-rc127-resolution-plan.


1. Requirements: v15 vs v16

Stack: Python 3.12+ (v16 required), Node 24, MariaDB 10.6+ (10.11 recommended), Redis 6+ (7-alpine), Debian 13+ or Ubuntu 24.04+, Yarn 1.22+, pip 25.3+. v16 changes: app release sync; built-in vector search (optional); Traefik v3; higher resource use (AI/background); Frappe Cloud private bench logic.


2–4. Scope, phases (summary)

  • §2 Impact: prego-docker (Dockerfile, apps.json, FRAPPE_BRANCH=version-16, Python 3.12+, Node 24); prego-ansible (MariaDB 10.11, frappe_version=version-16, v16 image, resource limits); prego-saas-app (v16 API, install_requires); prego-pulumi (OS image optional); docs.
  • §3 Phase 0: Prereqs and risk (Python/Node/MariaDB/OS/frappe_docker v16, v15→v16 migration guide, vector search optional). Phase 1: prego-docker v16 image (base 3.12, Node 24, FRAPPE_BRANCH=version-16, apps.json version-16, bench init check, Trivy, optional Traefik v3). Phase 2: prego-ansible (mariadb:10.11, redis 7-alpine, frappe_version version-16, v16 app image, resource limits). Phase 3: prego-saas-app v16 compatibility (setup.py, Doctypes, hooks). Phase 4: Staging deploy and test. Phase 5: Production rollout and rollback plan.

Full tables (§1–§4) and exact wording are in the Korean section below.


한국어 {#korean}

Frappe/ERPNext/HRMS v15 → v16 업그레이드 기획서

목적: Prego 스택(Frappe·ERPNext·HRMS)을 version-15에서 version-16으로 전환하기 위해 필요한 작업을 Phase별로 정리한다.
코드 생성 없음 — 기획·전략·의존성·검증 체크리스트만 명세.

참조:


1. 요구사항 비교: v15 vs v16

컴포넌트v15 (현행)v16 (목표)비고
Python3.10 또는 3.113.12+ (3.14 지원 포함)v16 필수 요구사항. 멀티테넌트 시 모든 사이트가 동일 런타임 충족. Python 3.12는 이미 가용.
Node.js18.x 또는 20.x24LTS 전환, Vite·빌드 호환성 검증 필요.
MariaDB10.610.6+ (권장 10.11)v16은 10.6+ 멀티테넌트 성능 최적화. 공식 예시는 mariadb:10.11. 11.8 필수 아님.
Redis6.2 또는 7.x6+ (7-alpine 권장)현행 Redis 7 유지. 공식 예시 redis:7-alpine.
OSDebian 12 (bookworm)Debian 13+ 또는 Ubuntu 24.04+베이스 이미지·Hetzner 지원 확인.
Yarn1.x1.22+
pip기존25.3+uv·bench 의존성 해석 영향.

1.1 v16 멀티테넌트·배포 관련 주요 변화

항목v15v16Prego 영향
앱 버전 동기화ERPNext·HRMS·Payments 버전 불일치 다수공식 앱 릴리즈 주기 동기화Bench Update 시 멀티사이트 호환성 예측 용이.
벡터 검색없음내장 벡터 DB 지원AI 기반 검색 사용 시 테넌트별 검색 인덱스 별도 관리 필요.
Docker/TraefikTraefik v2 기준Traefik v3 최적화SSL(Let’s Encrypt) 레이블 개선, DNS 기반 테넌트 추가 시 전체 스택 재시작 불필요.
자원 할당기존 수준AI·백그라운드 작업으로 자원 사용 증가테넌트 컨테이너별 CPU/RAM 제한 세밀 조정 필요. resource-optimization-safe-adoption-plan.md 연동.
Frappe Cloud-Private Bench 로직 강화v16/v15 테넌트 격리·라이브러리 충돌 회피. Prego 자체 배포 시 참고.

2. 영향 범위 (레포·역할별)

레포/역할변경 대상상세
prego-dockerDockerfile, apps.json, build.ymlPython 3.12+, Node 24, FRAPPE_BRANCH=version-16, apps.json branch 수정, (선택) Traefik v3·compose
prego-ansiblemariadb_server, redis_server, frappe_benchMariaDB 10.11, frappe_version=version-16, frappe_bench_image(v16 이미지), 자원 제한 세밀화
prego-saas-appsetup.py, pyproject.toml, Doctype·후크v16 API·동작 변경 대응, install_requires 호환
prego-pulumi(선택) OS·이미지Ubuntu 24.04+ 또는 Debian 13 VM 템플릿
Prego/docsdocker-hub-stack-ansible-deploy-plan 등v16 스택으로 문서 갱신

3. Phase별 작업 계획

Phase 0: 선행 조건·리스크 검토 (코드 변경 없음)

순서작업목표비고
0.1Python 3.12+Docker Hub python:3.12-slim-* 존재·안정성 확인v16 필수. 3.12는 이미 가용. 3.14 지원은 선택.
0.2Node 24 LTSNode 24 공식 지원·NVM 설치 가능 여부 확인prego-docker NVM install 스크립트 호환.
0.3MariaDB 10.6→10.11mariadb:10.11 Docker 이미지·10.6→10.11 마이그레이션 경로 확인v16 공식 예시는 10.11. 10.6+ 요구이므로 10.11 권장.
0.4Debian 13 / Ubuntu 24.04Hetzner·Pulumi에서 사용 가능한 OS 이미지 확인bookworm → trixie 또는 Ubuntu 24.04 전환.
0.5frappe_docker v16frappe_docker images/custom v16 지원·Containerfile 패턴·Traefik v3 확인Vendoring 대상 최신화. Traefik v3 레이블 패턴 검토.
0.6기존 테넌트 DBv15 사이트 → v16 마이그레이션 공식 가이드·breaking changes 정리Frappe Forum v15→v16 가이드 참조.
0.7벡터 검색 (선택)v16 벡터 DB·AI 검색 사용 시 테넌트별 인덱스 관리 전략사용하지 않으면 생략 가능.

Phase 1: prego-docker v16 이미지 빌드

순서작업파일/위치상세
1.1베이스 이미지DockerfileARG PYTHON_VERSION=3.12 (v16 필수 3.12+). python:3.12-slim-bookworm 또는 trixie/Ubuntu 24.04 기반.
1.2Node 버전DockerfileARG NODE_VERSION=24, NVM install v24.
1.3Frappe 브랜치Dockerfile, build.ymlARG FRAPPE_BRANCH=version-16, FRAPPE_PATH 유지.
1.4apps.jsonapps.jsonerpnext, hrms branch를 version-16으로 변경. crm, drivedevelop 브랜치(v16 호환, version-16 브랜치 없음). prego-saas-app은 v16 호환 태그 사용.
1.5wkhtmltopdfDockerfilev16 요구 0.12.6 호환 여부 확인. 필요 시 버전·경로 조정.
1.6bench init 검증build.yml, testsbench init 성공·6개 앱(frappe, erpnext, hrms, crm, drive, prego_saas_app) 존재 확인.
1.7Trivy 스캔trivy-scan.yml새 베이스·의존성 기준 CVE 재평가. Critical 0 정책 유지.
1.8(선택) Traefik v3·composecompose, docsv16 공식 예시는 Traefik v3 레이블·DNS 멀티테넌트. saas-frappe-build-templates-and-runbook.md 갱신 시 반영.

산출물: iamfork/prego-repo v16 태그 이미지 (linux/amd64, linux/arm64).


Phase 2: prego-ansible v16 스택 반영

순서작업역할/파일상세
2.1MariaDB 10.11mariadb_server/defaults/main.ymlmariadb_image: mariadb:10.11. v16 공식 예시 기준. 10.6→10.11 마이그레이션 시 별도 Runbook.
2.2Redisredis_server/defaults/main.ymlv16은 Redis 6+ 요구. 현행 redis_version: "7" (7-alpine) 유지. 공식 예시와 동일.
2.3Frappe 버전frappe_bench/defaults/main.ymlfrappe_version: version-16.
2.4앱 이미지playbook.yml, inventoryfrappe_bench_image: iamfork/prego-repo:v16-YYYYMMDD 또는 digest 고정.
2.5bench init vs 이미지frappe_bench/tasksiamfork/prego-repo 사용 시 bench init 생략·sites만 마운트하는 흐름인지 확인. v16 이미지에 apps 포함 전제.
2.6자원 제한 세밀화frappe_bench, composev16은 AI·백그라운드 작업으로 자원 사용 증가. 테넌트 컨테이너별 CPU/RAM 제한 조정. resource-optimization-safe-adoption-plan.md 연동.
2.7(선택) Traefik v3nginx·proxy 설정DNS 멀티테넌트·SSL 레이블 개선. 전체 스택 재시작 없이 신규 테넌트 추가 가능.
2.8문서docker-hub-stack-ansible-deploy-plan.mdv16 추천 스택(MariaDB 10.11, Node 24, Python 3.12+)으로 갱신.

Phase 3: prego-saas-app v16 호환

순서작업파일상세
3.1API·Doctype 호환전체Frappe v16 breaking changes·deprecated API 정리. Doctype·Client Script·Server Script 검토.
3.2install_requiressetup.py, pyproject.tomlfrappe는 계속 제외. 기타 의존성 v16과 충돌 여부 확인.
3.3테스트CI, 로컬v16 bench에서 bench run-tests --app prego_saas_app 실행.
3.4태그prego-saas-appv16 호환 버전 태그(예: v1.1.0) 생성. apps.json에 반영.
3.5(선택) 벡터 검색prego-saas-appv16 AI 기반 검색 사용 시 테넌트별 검색 인덱스 관리 전략 수립. 미사용 시 생략.

Phase 4: 기존 테넌트 마이그레이션 (선택)

순서작업대상상세
4.1DB 백업모든 테넌트R2·로컬 백업 확인. mariadb-backup-r2.md
4.2MariaDB 10.6→10.11DB 서버새 10.11 인스턴스 생성·덤프 복원 또는 in-place upgrade. v16 공식 예시는 10.11. 마이그레이션 Runbook 작성.
4.3bench migrate각 사이트bench switch-to-branch version-16 frappe erpnext hrms crm drive, bench update --patch, bench migrate, bench build, bench restart. v16 앱 버전 동기화로 멀티사이트 업데이트 예측 용이.
4.4롤백 계획Runbook실패 시 v15 이미지·MariaDB 10.6으로 복귀 절차.

4. 의존성·순서 요약

Phase 0 (선행) → Phase 1 (prego-docker) → Phase 2 (prego-ansible) → Phase 3 (prego-saas-app) → Phase 4 (마이그레이션)
│ │ │ │
└─ Python 3.12+, Node 24, MariaDB 10.11, OS·Traefik v3 가용성
└─ iamfork/prego-repo:v16 이미지
└─ Ansible 변수·이미지 태그·자원 제한
└─ prego-saas-app v16 호환
└─ 기존 사이트 DB·앱 업그레이드

5. 리스크·대응

리스크영향대응
Python 3.12 호환성Phase 1 지연v16 필수 3.12+. 3.12는 이미 가용. 3.14는 선택.
MariaDB 10.6→10.11 마이그레이션 실패데이터 손실백업 필수. 스테이징에서 10.6→10.11 덤프/복원 검증.
prego-saas-app v16 비호환빌드·런타임 오류Phase 3에서 API 변경·테스트 선행.
frappe_docker v16 패턴 변경Dockerfile Vendoring 실패Phase 0.5에서 최신 frappe_docker·Traefik v3 확인.
기존 테넌트 다운타임서비스 중단Blue/Green·점진적 전환 검토.
v16 자원 사용 증가OOM·성능 저하테넌트별 CPU/RAM 제한 세밀 조정. resource-optimization 연동.

6. 검증 체크리스트

Phase 1 완료 시

  • prego-docker bench init 성공 (Python 3.12+, Node 24, version-16).
  • iamfork/prego-repo:v16-* 이미지 빌드·푸시 성공.
  • Verify image apps: frappe, erpnext, hrms, crm, drive, prego_saas_app 존재.
  • Trivy 스캔 Critical 0.

Phase 2 완료 시

  • Ansible playbook으로 v16 스택 배포 성공 (MariaDB 10.11, Redis 7, 앱 이미지 v16).
  • bench new-site · bench install-app erpnext hrms crm drive prego_saas_app 성공.
  • 테넌트 컨테이너별 자원 제한(CPU/RAM) 적용·모니터링.

Phase 3 완료 시

  • prego-saas-app v16 bench에서 테스트 통과.
  • 프로비저닝 플로우(신규 사이트 생성) 정상 동작.

Phase 4 완료 시 (해당 시)

  • 기존 테넌트 DB 마이그레이션 성공.
  • bench migrate 오류 없음.
  • 롤백 절차 문서화·검증.

7. 참고 자료

7.1 v16 Docker Compose 참고 (공식 예시)

v16 공식 예시는 frappe/erpnext:v16.6.1, mariadb:10.11, redis:7-alpine, Traefik v3 레이블 기반 DNS 멀티테넌트. Prego는 iamfork/prego-repo 커스텀 이미지 사용하나, sites 볼륨·Traefik Host 규칙·bench new-site 흐름은 동일 패턴 적용 가능.


8. 요약

Phase목표핵심 변경
0선행 조건 확보Python 3.12+·Node 24·MariaDB 10.11·OS·Traefik v3·frappe_docker v16 확인
1prego-docker v16 이미지Dockerfile(Python 3.12+, Node 24), apps.json(version-16), (선택) Traefik v3 compose
2prego-ansible v16 스택MariaDB 10.11, frappe_version=version-16, frappe_bench_image v16, 자원 제한 세밀화
3prego-saas-app v16 호환API·테스트·태그, (선택) 벡터 검색
4기존 테넌트 마이그레이션MariaDB 10.6→10.11, bench migrate·롤백 Runbook

권장 진행 시점: Phase 0 완료(Python 3.12·MariaDB 10.11·frappe_docker v16 확인) 후 Phase 1 착수. Phase 0 완료 전 코드 변경 지양.

Help