Background / 배경
Korean
App Performance 기반 Reconcile Use Case에서는 애플리케이션 성능 저하 시 Pullpiri가 Runtime에서 CPU 및 Memory 리소스를 동적으로 변경할 수 있어야 합니다.
현재 Pullpiri는 App 성능 정보 및 시스템 리소스 정보를 수집할 수 있지만, 실행 중인 Workload에 대한 Dynamic Resource Scaling 기능은 제공하지 않습니다.
본 이슈는 구현에 앞서 Dynamic Resource Scaling을 위한 SW Architecture 및 Component Interface를 설계하기 위한 목적입니다.
관련 Use Case
- App Performance-based Reconcile
- Strategy A: Dynamic Resource Scaling (CPU/Memory)
English
As part of the App Performance-based Reconcile use case, Pullpiri should support runtime CPU and memory updates for running workloads when application performance degrades.
Currently, Pullpiri can monitor application performance metrics and node resource usage, but it does not support dynamic resource scaling.
Before implementation, we need to define the software architecture, interfaces, workflows, and component responsibilities required for Dynamic Resource Scaling.
Related Use Case
- App Performance-based Reconcile
- Strategy A: Dynamic Resource Scaling (CPU/Memory)
Objective / 목표
Korean
실행 중인 Workload의 CPU 및 Memory를 Runtime에서 변경할 수 있도록 Pullpiri Software Architecture를 설계합니다.
설계 범위는 다음을 포함합니다.
- Architecture Design
- Component Responsibilities
- API / Proto Changes
- End-to-End Workflow
- Resource State Synchronization Strategy
English
Design a software architecture that enables runtime CPU and Memory updates for running workloads.
The design should cover:
- Architecture Design
- Component Responsibilities
- API / Proto Changes
- End-to-End Workflow
- Resource State Synchronization Strategy
Design Scope / 설계 범위
1. End-to-End Scaling Flow
Korean
Dynamic Resource Scaling을 위한 전체 Workflow를 정의합니다.
예시:
MonitoringServer
→ PolicyManager
→ ActionController
→ NodeAgent
→ Podman Update
→ Resource Allocation Updated
각 컴포넌트의 역할과 책임을 정의해 주세요.
English
Define the overall workflow for Dynamic Resource Scaling.
Example:
MonitoringServer
→ PolicyManager
→ ActionController
→ NodeAgent
→ Podman Update
→ Resource Allocation Updated
Clearly define component responsibilities.
2. API / Proto Design
Korean
필요한 인터페이스 및 Proto 변경 사항을 정의합니다.
검토 대상:
- PolicyManager
- ActionController
- NodeAgent
- Resource Manager
특히 Runtime Resource Update를 지원하기 위한 신규 Operation이 필요한지 검토해 주세요.
예시:
UpdateResources
UpdateCpuLimit
UpdateMemoryLimit
English
Identify required interfaces and protocol changes.
Potential targets:
- PolicyManager
- ActionController
- NodeAgent
- Resource Manager
Review whether additional operations are required to support runtime resource updates.
Examples:
UpdateResources
UpdateCpuLimit
UpdateMemoryLimit
3. Runtime Resource Update Mechanism
Korean
실행 중인 Workload의 CPU 및 Memory 변경 방법을 조사해 주세요.
검토 항목:
- Podman API
- podman update
- cgroup limitations
- Runtime constraints
산출물:
- 지원 가능한 기능
- 지원 불가능한 기능
- 제약사항
- 알려진 리스크
English
Investigate how runtime CPU and Memory updates can be applied to running workloads.
Topics:
- Podman API
- podman update
- cgroup limitations
- Runtime constraints
Deliverables:
- Supported operations
- Unsupported operations
- Limitations
- Known risks
4. Resource Availability Check
Korean
리소스 변경 수행 전 현재 노드의 Available Resource를 어떻게 검증할 것인지 정의합니다.
검토 항목:
- Available CPU
- Available Memory
- Resource 부족 상황 처리 방법
- 최대 할당 가능 범위
English
Define how resource availability should be validated before applying resource updates.
Consider:
- Available CPU
- Available Memory
- Handling insufficient resources
- Maximum allocation limits
5. Resource State Synchronization
Korean
다음 컴포넌트 간 Resource 상태 동기화 방안을 정의합니다.
- Resource Manager
- ActionController
- NodeAgent
- Monitoring Server
실제 할당된 리소스 정보와 Pullpiri 내부 관리 상태가 항상 일관성을 유지할 수 있어야 합니다.
English
Define synchronization strategies between:
- Resource Manager
- ActionController
- NodeAgent
- Monitoring Server
The actual allocated resources and the Pullpiri-managed state must remain consistent.
Deliverables / 결과물
Design Document
Korean
다음 내용을 포함한 설계 문서를 작성해 주세요.
- Architecture Diagram
- Sequence Diagram
- Component Responsibilities
- API / Proto Changes
- Resource Synchronization Strategy
- Known Limitations
- Risk Analysis
English
The design document should include:
- Architecture Diagram
- Sequence Diagram
- Component Responsibilities
- API / Proto Changes
- Resource Synchronization Strategy
- Known Limitations
- Risk Analysis
Out of Scope / 제외 범위
Korean
본 이슈에서는 아래 항목을 다루지 않습니다.
- Resource Scaling Policy
- Priority-based Application Termination
- Victim Selection Algorithm
- Stateful Offloading
- Storage Resource Scaling
- eBPF Monitoring
Resource Scaling Policy는 별도 Task로 진행 예정입니다.
English
The following items are out of scope for this issue.
- Resource Scaling Policy
- Priority-based Application Termination
- Victim Selection Algorithm
- Stateful Offloading
- Storage Resource Scaling
- eBPF Monitoring
Resource scaling policies will be handled separately.
Background / 배경
Korean
App Performance 기반 Reconcile Use Case에서는 애플리케이션 성능 저하 시 Pullpiri가 Runtime에서 CPU 및 Memory 리소스를 동적으로 변경할 수 있어야 합니다.
현재 Pullpiri는 App 성능 정보 및 시스템 리소스 정보를 수집할 수 있지만, 실행 중인 Workload에 대한 Dynamic Resource Scaling 기능은 제공하지 않습니다.
본 이슈는 구현에 앞서 Dynamic Resource Scaling을 위한 SW Architecture 및 Component Interface를 설계하기 위한 목적입니다.
관련 Use Case
English
As part of the App Performance-based Reconcile use case, Pullpiri should support runtime CPU and memory updates for running workloads when application performance degrades.
Currently, Pullpiri can monitor application performance metrics and node resource usage, but it does not support dynamic resource scaling.
Before implementation, we need to define the software architecture, interfaces, workflows, and component responsibilities required for Dynamic Resource Scaling.
Related Use Case
Objective / 목표
Korean
실행 중인 Workload의 CPU 및 Memory를 Runtime에서 변경할 수 있도록 Pullpiri Software Architecture를 설계합니다.
설계 범위는 다음을 포함합니다.
English
Design a software architecture that enables runtime CPU and Memory updates for running workloads.
The design should cover:
Design Scope / 설계 범위
1. End-to-End Scaling Flow
Korean
Dynamic Resource Scaling을 위한 전체 Workflow를 정의합니다.
예시:
각 컴포넌트의 역할과 책임을 정의해 주세요.
English
Define the overall workflow for Dynamic Resource Scaling.
Example:
Clearly define component responsibilities.
2. API / Proto Design
Korean
필요한 인터페이스 및 Proto 변경 사항을 정의합니다.
검토 대상:
특히 Runtime Resource Update를 지원하기 위한 신규 Operation이 필요한지 검토해 주세요.
예시:
English
Identify required interfaces and protocol changes.
Potential targets:
Review whether additional operations are required to support runtime resource updates.
Examples:
3. Runtime Resource Update Mechanism
Korean
실행 중인 Workload의 CPU 및 Memory 변경 방법을 조사해 주세요.
검토 항목:
산출물:
English
Investigate how runtime CPU and Memory updates can be applied to running workloads.
Topics:
Deliverables:
4. Resource Availability Check
Korean
리소스 변경 수행 전 현재 노드의 Available Resource를 어떻게 검증할 것인지 정의합니다.
검토 항목:
English
Define how resource availability should be validated before applying resource updates.
Consider:
5. Resource State Synchronization
Korean
다음 컴포넌트 간 Resource 상태 동기화 방안을 정의합니다.
실제 할당된 리소스 정보와 Pullpiri 내부 관리 상태가 항상 일관성을 유지할 수 있어야 합니다.
English
Define synchronization strategies between:
The actual allocated resources and the Pullpiri-managed state must remain consistent.
Deliverables / 결과물
Design Document
Korean
다음 내용을 포함한 설계 문서를 작성해 주세요.
English
The design document should include:
Out of Scope / 제외 범위
Korean
본 이슈에서는 아래 항목을 다루지 않습니다.
Resource Scaling Policy는 별도 Task로 진행 예정입니다.
English
The following items are out of scope for this issue.
Resource scaling policies will be handled separately.