Laravel Packages

Dynamically Create and Destroy Servers with this Laravel Package

Published
Dynamically Create and Destroy Servers with this Laravel Package image

Laravel Dynamic Servers is a package by Spatie that helps you start and stop servers when needed. The primary use case is creating extra servers to help you with queue workloads.

You might be wondering, "why not just use Kubernetes?" In the author's blog post A package to manage dynamic servers, Freek Van der Herten said:

You can think of laravel-dynamic-servers as a sort of PHP-based version of Kubernetes that has 5% of its features but covers that 80% use case. For most PHP and Laravel developers, this package will also be easier to learn and use.

So while you could solve these problems in other ways, this package might perfect for your needs to scale servers up and down.

Here's an example callback you might add to calculate how many servers to ensure are running based on whatever logic you need:

// In a service provider
use Spatie\DynamicServers\Facades\DynamicServers;
use Spatie\DynamicServers\Support\DynamicServersManager;
 
DynamicServers::determineServerCount(function(DynamicServersManager $servers) {
// Custom logic to decide how many servers are needed.
// This callback runs every minute.
$numberOfServersNeeded = 5;
$servers->ensure($numberOfServersNeeded);
});

The package's readme example uses Horizon's WaitTimeCalculator to determine how many servers to ensure. The above callback would run each minute to scale up and down, depending on what you need.

Some of the other highlights of what this package offers:

  • Ensuring a number of servers are running
  • Rebooting servers
  • Ability to handle multiple server types
  • Manually increasing/decreasing the number of servers
  • Custom service provider
  • Configurable hard limit on the number of servers

Out of the box, this package has a server provider for UpCloud. However, you can create a custom provider for your favorite cloud service provider.

Check out the documentation to get started with this package. The source code is open-source on GitHub at spatie/laravel-dynamic-servers.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article