• Reading time ~ 1 min
  • 08.10.2022

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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

ABOUT

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

About author CrazyBoy49z
WORK EXPERIENCE
Contact
Ukraine, Lutsk
+380979856297