Starting a serverless project
So, I'm starting a big FaaS project in a few weeks. It's being developed on a derivative of OpenWhisk. The back end will be NewSQL, NoSQL, S3 blob storage and a custom distributed logging database.
We are using Banana Pi as the platform and expect to be able to handle transaction processing for 100,000+ users on a few devices. We'll have 9 Banana Pis as compute and storage, 3 Banana Pi routers as switches and cold storage and two Cisco C3560CX switches as distribution.
We have done some experimentation and found that we can handle insane amounts of transactions on this platform by adopting FaaS.
See, the thing is, we know we can build huge business systems on this platform because it's basically the same thing as CICS, COBOL, DB2 and RPG. We can also scale if we need to by adding more Pis. It doesn't cost anything and frankly, we don't need to run any of the heavy stuff on servers anymore.
See, AD is in the cloud. Exchange is in the cloud. DropBox is in the cloud. Collaboration is in the cloud. Accounting is in the cloud. All these systems simply make more sense to put in the cloud. DropBox might come back home someday, but we can write it ourselves and run it on our Pis if we need to.
All that's left is our business software. And our business software is a series of web pages that we store as blobs with the GUIDs linked to filenames in a table, and REST calls which are transactions. Transactions are cheap if you don't go through virtualization or containers.
Also, we're building full RBAC and security into every single function and class. As such, we'll be substantially more secure. We're running as little C or C++ code as we can and we're 100% TDD.
For backup, we have a separate site with traditional tape backup. Since our data set should never be measured in gigabytes as we're only storing a few hundred thousand records... maybe a million at most, we'll never need to have big storage. We simply have a bunch of drives for failover to avoid using enterprise SSD which is just wasteful.
The beauty of serverless is that it will allow us to pull our business systems back out of the cloud and make them manageable again. If a node breaks, unplug it, throw it away, plug in another and it will be up and running in 20 minutes. Because of using a lot of little nodes all running exactly the same code, we won't even notice the outage.
Serverless is amazing. Back to mainframe we go... and I can't wait.