Containerized App Requirements

Adaptable runs backend application code in the Adaptable Container Service. Since this is a serverless infrastructure, your app must meet a few requirements. Most web-based apps shouldn't have trouble meeting these requirements.

»Listen on PORT

Your app must listen for HTTP requests on on the TCP port specified by the PORT environment variable. (Alternatively, your app can listen on a fixed port, but you will have to specify this PORT in your App's settings after the first failed deploy.)

»Stateless App Code

Your app must be stateless. All state should be stored externally in the provided Adaptable database, or some other service. Although your app can write to local disk storage, that storage is a memory file system and will be lost when your app is scaled down or updated. Moreover, local disk storage is also not shared between multiple autoscaled instances of your app. Finally, unless you have changed your settings otherwise, Adaptable will scale your app to zero after a short duration of no load, during which all local disk and memory data will be lost. This means your app cannot use local file-based databases, such as NeDB or SQLite.

»No Background Activity

Your app cannot perform background activities outside the scope of request handling. Your app's CPU allocation is set to zero when your app is not processing a network request. This means that things like worker threads or timed work will not run reliably. If you have work that has to be done on a periodic basis, you can use a external Cron service that periodically hits a URL for your app. If you need to perform background work in response to requests, you can use an external queue service to call a URL endpoint for your app to do that work.

»No Native SSL/TLS

You should not perform HTTPS/TLS in your app itself. Adaptable automatically provides HTTPS/TLS via our highly scalable load balancing tier.

»Prompt Startup

When your app starts, it must listen for HTTP requests within 4 minutes of being started. Because of how Adaptable dynamically scales apps up and down, we recommend keeping app startup time as low as possible. If your app has a startup time more than a second or two, we recommend configuring warm start for your app in its Settings tab.