Introduction
Overview of Snowclone
Snowclone is an open-source backend-as-a-service that provides developers with a Postgres database, instant APIs, authentication, and real-time subscriptions. Snowclone is designed to make building lightweight applications that require relational databases and real-time notifications easier and more enjoyable by automating backend setup and deployment.
In this case study, we will explore the problem domain of backend-as-a-service, walk through the design challenges we encountered, and describe how we solved those challenges to build Snowclone as a unique offering.
The Reason for Snowclone
Configuring and deploying backends can be a time-consuming chore for developers seeking to rapidly prototype and deploy their front-end applications. The process of configuring databases, setting up APIs, and managing authentication systems takes precious development hours and can be fraught with errors and inconsistencies leading to frustration and delays.
Having to invest significant time and resources upfront in building and maintaining backends can also slow down the pace of ongoing innovation and iteration. Snowclone enables developers to spin up and tear down multiple backend environments within minutes, allowing them to test ideas, gather feedback, and iterate rapidly.
Snowclone's Design Goals
Our main objective for Snowclone is to say to our users, “Give me a frontend app and a SQL file, and I shall build you a backend.”
In pursuit of this objective, we designed Snowclone to satisfy the needs of our target users, while abstracting away as much of the setup and configuration steps as possible. Our target users are developers working on frontend applications that need relational databases and real-time notifications. Real-time chat apps, collaborative whiteboards, and employee management systems are examples of applications that can be built using Snowclone.
With this philosophy in mind, we established the following design goals, which served as a roadmap for our creation of Snowclone.
-
Snowclone is easy to deploy and configure.
-
Snowclone provides an API for users to run SQL commands against their database, including data definitions, attaching listeners, and user management.
-
Snowclone provides a REST API for querying the database.
-
Snowclone's backends support real-time notifications.
-
Snowclone maintains minimal resource consumption and infrastructure requirements, making it suitable for small-scale applications and small development teams.
-
Snowclone's interface should be familiar to users of PostgreSQL, Docker, and AWS.
-
Snowclone provides support for both local and multiple self-hosted backends on AWS and is free and open-source.
Before delving deeper into the journey of building Snowclone, we want to zoom out and provide an overview of the backend-as-a-service landscape, its existing solutions, and where Snowclone fits in.