nginx as reverse proxy. Specifically, we use a distribution of nginx called OpenResty which comes with a Lua interpreter. This means we can take advantage of the excellent lua-resty-auto-ssl to handle SSL certificate issuing and renewal through Let's encrypt. The reverse proxy is exposed to the internet and handles SSL termination, static file delivery and caching. Anything else is passed to the application server.
Node runs our application server and uses the Express framework.
Database
Redis for all data that isn't efficient to store on disk. Redis runs on a seperate machine to the reverse proxy and application servers. It's backed up every hour to S3 and backups are retained for a week. Originally I selected redis as a database because I found the simplicity of a key-value store appealing.
Content Delivery Network
Bunny is faster and cheaper than Cloudfront. I was burnt with a bad Cloudfront bill due to a configuration issue with the video on Blot's homepage and was annoyed enough to take my business elsewhere.
All of this runs on a 12-inch MacBook with an Intel 1.2 GHz m3 processor and 8 GB of RAM. I do not have an external monitor since it is important to be able to put my desk into a state with no visible technology.