App autoscaling is not a trivial task as it might look. I was really excited when I read about Vapor. I would like to share my experience of playing with this great tool.
Our project is nearly 650Mb and Lambda has limitations of 250Mb unzipped.
We had a few binaries in our composer dependencies. I tried to remove them but it doesn’t help.
Want to read this story later? Save it in Journal.
Also removed all dev dependencies. Make sure that you don’t use any PHPUnit functions in your code. For example: assert() etc.
Next, I found out that vapor supports Lambda layers via docker. It has a limit of up to 10Gb per layer.
That helped. All your need to do is only add this line:
And create a docker file associated with it. You can use the command
vapor env my-environment — docker
We use docker containers for the local development and a simple composer install command won’t work locally.
You have to run a command via docker-compose exec.
It’s not a big problem but still, you need to be ready to adjust deployment scripts.
We are using a storage directory to save some files, configurations. The storage directory is not available via Lambda or I’m missing something.
Lambda functions don’t work properly with storage as every request goes to the new container.
You can use EFS but we tried to avoid it as it has limitations and pricing can be high.
Passport requires certs but they can be stored in the env. So we put them under Secrets. Read more about it here https://laravel.com/docs/8.x/passport#loading-keys-from-the-environment