Scale Plan and File System

My app has a low number of users, but creates significant spikes. There are two major contributions to these spikes. Logging and File API (more below). My view is, that both use cases do not require allocating expensive computing resources. It is just about writing/reading files. Still, these two APIs drive my app into cost regions which will force me to shut down my app.

  • Logging: Logging is about writing/updating simple text files. My app comes with no cost for my users. Understanding the statistics of how my user are using the app is key for me and is planned to be the corner stone of my business model.

  • File API: File API spikes exceed even the logging spikes by a factor of 10. My app is about managing user collections of (cooking) recipes. In addition, a large set of free recipes is offered to my users. Users are browsing recipes based on search conditions. Search results are displayed as a list of recipe titles, each with a small image preview. Clicking on one result list entry brings up the recipe details. The File API spikes are related to creating these result lists. While I can “optimize” to read search results in batches of 100 recipes, I cannot optimize when fetching the preview images from the files system. There will be 100 single File API calls, because there are 100 preview images and each image is displayed by an image UI component which has the image URL assigned. I think any “product search like” app will run into the same problem. I even don’t need any access control for reading images.

If there are some optimization options for my use case, please let me know. I understand that allocating computing resource for backend services (node.js server, etc.) is a critical thing regarding costs. File system read access should be cheap, and I have already paid for the storage volume aspect.

Regards,

Hi Klaas,

Logging in general can be controlled and entirely (or partially) disabled if needed using the Log Management panel in console. You can set the threshold logging level app-wide and/or for the individual loggers. If the app is functioning properly, I imagine only a small (even if that) amount of logs is needed.

For the File access, the simplest solution is to use a CDN or any third part web host where the files are stored and fetched from outside of Backendless. In that case, the file usage from Backendless would come down to either a very small amount or none whatsoever.

Regards,
Mark