Container Pool Scaling Without Restart for Rapid Deployment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for deploying and scaling user applications in containers are slow, often requiring minutes and leading to downtime or wasteful resource reservation, especially for fluctuating workloads in applications like machine learning and direct-to-consumer services.

Innovation Solution

A method and system that initialize a pool of containers with minimal compute resources, allowing for rapid scaling by increasing resources within existing containers without restarts, using a shared filesystem for efficient deployment and scaling, and generating containers from a base image without user application or runtime environment, enabling fast deployment and scaling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional container deployment methods are used, then applications can run reliably on different computing environments, but deployment time is long (requiring minutes) and causes downtime

Engineering Contradiction:
Improveapplication runtime reliabilityVSAvoiddeployment time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system pre-creates and maintains a pool of empty containers with all necessary runtime environments, software libraries, and configurations before deployment is needed. When deployment is required, the system simply activates an existing container from the pool rather than creating it from scratch, reducing deployment time from minutes to seconds while maintaining full application reliability

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The deployment system is segmented into two independent components: (1) a pre-maintained pool of empty containers with all runtime dependencies, and (2) the application code that is injected into these pre-prepared containers. This segmentation allows the heavy preparation work to be done in advance while deployment itself becomes a simple activation process

Inventive Principle:
Principle #1Segmentation

2Productivity

If compute resources are reserved in advance for future deployment, then deployment can be faster, but resources are wasted when not in use

Engineering Contradiction:
Improvedeployment speedVSAvoidwasted compute resources
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The container pool size and resource allocation are made dynamic rather than static. The system continuously monitors workload demands and automatically adjusts the number of active containers in the pool, scaling up when demand increases and scaling down when demand decreases. This dynamic adjustment maintains fast deployment capability while minimizing resource waste during low-utilization periods

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes key parameters such as container count, CPU allocation, and memory allocation based on real-time workload metrics. By adjusting these parameters dynamically, the system optimizes the balance between deployment speed and resource utilization, ensuring resources are available when needed but not unnecessarily consumed during idle periods

Inventive Principle:
Principle #35Parameter changes

3Productivity

If containers are created from scratch during deployment, then resource allocation is optimized, but deployment time increases to minutes

Engineering Contradiction:
Improveresource allocation efficiencyVSAvoidcontainer creation time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

All resource allocation decisions, environment configurations, software library installations, and dependency resolutions are performed in advance during pool initialization. The empty containers are pre-configured with optimal resource allocations for common workloads. During actual deployment, since the containers already exist with resources pre-allocated, the system only needs to activate them and inject application code, reducing deployment time dramatically while maintaining resource allocation efficiency

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20250103370A1System and method for deploying software applications
Publication Date: 2025.03.27 CODESPHERE INC
  • US20250103370A1 patent drawing
  • US20250103370A1 patent drawing
  • US20250103370A1 patent drawing

AI summary

A method for deploying or scaling a user application in a container execution system comprising a plurality of nodes. The method comprises initializing a pool of a plurality of containers running on one or more of the nodes, each container of the pool having compute resources specified at a first lower level, and receiving a request for deploying or scaling up the user application. One of the nodes is selected which has sufficient additional compute resources for running a new instance of the user application and one of the containers of the pool running on the selected node is selected. The selected container is scaled up without restarting the container, by increasing the compute resources specified for the selected container to a second higher level to generate a scaled-up container, wherein the scaling is based on one or more scaling parameters, and the user application is run in the newly scaled-up container on the selected node.