Container Pool Scaling Without Restart for Rapid Deployment
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
2Productivity
If compute resources are reserved in advance for future deployment, then deployment can be faster, but resources are wasted when not in use
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
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
3Productivity
If containers are created from scratch during deployment, then resource allocation is optimized, but deployment time increases to minutes
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
Data Source
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.


