My first NodeJS app, created to solve a problem I was having collecting data from services that have complex or limited API functionality for reporting but have great webhook supports. HookStack receives webhooks, saves them to a database and organises them by the system that sent them. These can then be retrieved in bundles for each system they originated from.
To solve this problem, I needed to host a service. This is where my solution started its life. With no preferred language, my requirements were focused on how and where I could easily and cheaply host my app. Primarily for myself. I looked at many different hosting options, including the following:
- Virtual Private Server (VPS) – Historically, this has been the go-to solution for running applications but has been less popular over the last decade while new solutions become more prevalent. My thoughts on the biggest issues with a VPS are the complexity and necessary maintenance to keep a VPS both secure and updated.
Additionally a VPS is rented and new solutions are billed on usage, and not a flat fee whether used or not.
VPS can start from as little as £4 and while a larger solution (e.g. eCommerce website) can still justify the overhead of a VPS, many new solutions can be made to run better and dynamically scale for users globally. - Docker – I already had experience with managing docker containers locally, and while this seems like good solution, there are some overlaps with VPS in terms of managing a Docker host or the dependencies necessary to run a service inside a Docker Containers. The cost of running a containers or a host with many providers can be higher than a VPS and while the management overhead is decreased, the cost made this not suitable for my solution. Additionally, I didn’t want to host an internal app that would require forwarding ports or maintaining a service uptime.
- Cloudflare Workers – a modern solution to deploy serverless code effortlessly across Cloudflare’s internet backbone, while also being scalable.
- Deta Space (previously Deta.sh) – While considering and comparing free solutions to host an app or service, I discovered Deta. A platform for developers to create apps (called Micros), small ‘machines’ that run code originally only in Python or NodeJS. Each Deta Space app is a sandboxed Linux VM with 512MB of RAM with a execution timeout of 20s, which sounded fine for my desired solution.
Deta Space
My requirements were very small and given my previous experience with HTML, CSS, JS and NodeJS, this seemed like a logical next step to expand my development knowledge. I initially started creating a local NodeJS app and then used Deta’s CLI to push my app to their hosting, all for free, with no agents, firewall ports or static IPs.
Originally, Deta was billed as a place for developers to create single ‘VMs’ called Micros, and allowing Deta to manage hosting, scaling and authentication. There were also plans to allow billing in the future, which would mean other users could install an app, and pay Deta and the developers for usage. This was not something I was interested in and was not available at the time.
My original work created the app ‘PPHook‘ – P(ush)P(ull)(Web)Hook which was used for over a year. As Deta then developed into Deta Space, they expanded their solution to include a marketplace and allowing 5 ‘VMs’ or Micros per Deta Space solution.
This allowed additional limited functionality, including an incorporated help page (running as a Micro), in addition to the original service (running as a Micro).