Climb Aboard the Client-Serverless Train with Fauna
I write novels as a hobby (I jokingly call it my “non-profit corporation”), and there’s an old saying among fiction writers: Don’t be afraid to kill your darlings. That means, in essence, that if you love a particular character or element in your book, but it doesn’t make your book better, you need to get rid of it—no matter how much it may hurt.
I was thinking about that in relation to IT infrastructure (writers love analogies). It’s my suspicion that many, if not most, companies are still holding on to the 3-tier application model. The 3-tier model, which has been in use for decades, has three parts:
- Presentation: The user interface, which is typically a web browser
- Application: The business and data logic
- Database: The data layer
This simple model is based on traditional infrastructure, and it’s served the industry well—for the days when everything lived within the confines of your on-premises data center, it was the perfect paradigm.
But its time has largely passed. This is true not only for infrastructure (i.e., the sysadmin crowd), but application development as well. It’s been superseded by the Cloud Era of computing, in which infrastructure and data can highly distributed.
In this era, the stalwart 3-tier model is an antique. If your development environment is still using this system, it means you’re holding onto your darlings. And it means you’re probably falling behind.
And that means that it’s time to kill those darlings.
That means moving to API-based development, utilizing all the goodness afforded by the cloud. Organizations getting stuff done these days are moving forward with a client-serverless model, and realizing gains in productivity through technologies like microservices, continuous integration/continuous delivery (CI/CD), and containers.
In client-serverless computing, the client runs the application code and calls the services it needs. Those services contain the business logic. In this model, the underlying servers are completely abstracted away, hence “serverless.” It means as developers—and DevOps teams—you don’t need to know, or care, about whether the app is running on Windows, Linux, or whatever.
Figure 1 shows a high-level overview of the architecture of this new model. It’s what computing is moving to, and if you’re not going in this direction already, it’s time to start examining the benefits of adding cloudy operations to your overall development strategy.
Figure 1. The new model of client-serverless computing. Note the absence of servers.
Fauna, which I recently discovered, was created to help companies kill their darlings and replace them with something better. Fauna is a “global serverless database.” It’s an API that abstracts away database operations, in much the same way a virtual machine abstracts away the hardware upon which it’s running.
Since Fauna is an API, it can be called from anywhere, freeing up the database from the shackles of an on-premises server, delivering data from anywhere to anywhere. As you might imagine, this is perfect for the type of cloud-native development that the industry is moving toward.
And although Fauna is a relational database, it doesn’t use SQL. Instead, according to the company, it “…combines GraphQL and custom business logic across document, relational and graph data models.” GraphQL is a well-known API query language and runtime for returning data in an efficient manner.
The bottom line of this functionality is that Fauna enables modern application development in highly distributed environments, with no need to build and manage the underlying infrastructure. Yes, it means you’ll have to kill some—maybe many—of your darlings. But in the end, your business will be better for it. Isn’t that worth a little death?
I’m intrigued by Fauna and what it can do, and am looking forward to learning more about it.