Published on

Moving to container images

Authors

Fume is moving all existing and upcoming NuxtJS projects that use SSR (target: server) to use the new image support with Lambda, and store deployments in the Elastic Container Registry.

How do I migrate?

If you've come to this article looking for migration instructions you can find them here

Why?

The bad news

The starting reasons are the limitations of native Lambda, having a deployment package be no larger than 50 MB zipped and 250 MB unzipped. For existing projects, especially those which grew, this became a major problem.

This forced us to look into other solutions when projects would surpass this size, we tried existing alternatives like moving the projects node_modules/ folder to EFS, and attaching a drive to the function. This resulted in longer deployment times, various delays, and random downtimes when creating and updating the attached function.

Once AWS announced Container Image Support we went to work on implementing and testing the new feature, and found it much more stable than our previous modes, with no downtime at all and images showing up after deployment from 5-15 seconds max.

The good news

With Containers and your own private registry for each project and environment moving forward, there are lots of new features available and coming soon:

  • A new project size limitation of 10 GB
  • Roll back your deployment to a previous image in seconds, via the web app
  • Specify how many images you would like to keep, with the cost predicted in realtime
  • Select a more updated version of Node - we have v15.12.0 running on our own custom image

Does this change the way Fume works?

Not at all, the CLI now has fewer requirements, and no longer changes your nuxt.config.js nor does it have any limitations on its content. You do not need to install docker or any new dependency, Fume builds your docker images on its own set of servers, both the CLI and Github Action work exactly the same.