What is the best framework for a super small task?
This post is more than 18 months old. Technology changes quickly, so some of this content may be out of date (but that's not always the case). Please verify any technical or programming information against the current release.
Originally published on Mastering Laravel.
“If you only have a hammer, everything is viewed as a nail” is an idiom referred to as Maslow’s hammer. It basically means that if you only know one tool, and you over-rely on it, you’ll only use that tool to solve every problem, regardless of whether it’s the right one for the job. (It’s a common saying around these parts… that and Joel’s famous saying “Do you even have a 5th bathroom if the floor isn’t heated?”)
Laravel is quite the Swiss Army Knife - it has easy solutions for just about every problem and task you have. That’s why I’m such a fan of it. But is it always the right tool for the job?
Let’s explore this with a simple and somewhat common style of problem: we need a service to ingest a JSON response from a 3rd-party end-point and append that data to a file every minute. Gross. But, hey, this type of glue holds the internet together.
In part 1, let’s solve this with Laravel.
First, create a new command with php artisan make:command WriteIngestedData
Let’s also add the following to routes/console.php
use \App\Console\Commands\WriteIngestedData;
Schedule::call(WriteIngestedData::class)->everyMinute();You can assume I’ve successfully configured cron to run the Laravel scheduler every minute. Now, let’s take a look at the command itself.
public function handle()
{
$data = Http::get('https://source.com/api/json');
Storage::append('stream.json', $data);
}Ok I have to say, this is pretty great. In this (contrived) example, it really doesn’t take much code to solve our problem.
Except, it does.
We need to install a whole vendor folder with Laravel, not to mention all of its dependencies. And while that’s fine normally, it can be a problem if you’re limited on resources and space. And it can feel over-complicated if this is the only task you need to accomplish.
But at least it’s far more performant than other frameworks and code.
Except it isn’t.
Laravel does a tremendous amount of things to make our developer experience easier and more effective and efficient. But that introduces a little bit of overhead. We need to configure cache, configuration options, filesystem directives and more. This system is invaluable in medium and large projects - but it is definitely not giving us the benefit on a one-off small task.
So, now that it’s 2024, what is the best framework for a quick, small task? Part 2 reveals.