The technology world has embraced the cloud.
As with most paradigm shifts, change has been gradual, starting with the virtualization of some well-established enterprise IT-driven stacks behind firewalls. The first cloud implementations moved those same stacks, to the cloud. Lots of exciting movement in the open source world was a big step. Still, we think cloud based architectures have a ways to go: there are still lots of dependencies and configuration headaches in setting up a backend. Moreover, the conventional stack-in-the-cloud means you’re often bound to a specific infrastructure. That’s good for the vendor, but not always for the developer.
The rise of PaaS’s to abstract the infrastructure layer has been dynamic, with major players and lots of up-and-comers…any language you can think of, lots of great, backend services. Configuring and maintaining stacks can still be a big pain in the backend, but sometimes you can actually act as if you’re deploying to an integrated, pretty-much-configured platform. As long as you can manage some backend code and as long as that vendor is exposing the services, languages, scalability and performance you need, at the right cost, it’s great. Sometimes a bit tricky to get out, though, once you’re in.
BaaS has recently staked a perimeter around mobile apps and their backends, making it easier for developers to create them. BaaS solutions are constrained; but if you’re doing a straightforward app, with a fairly simple backend, these BaaS’s can be compelling. Better than a static app on that smart phone, for sure!
As we looked at the evolution of the cloud, from cobbled-together enterprise IT stacks, bringing in open source components, to super-powerful middleware, to simple backend services, we asked ourselves a question: what do developers need in a platform, end-to-end, to create compelling, cloud-based apps for any connected device?
Here’s what we came up with and it all centers around what a great, app architecture requires for the cloud:
Day One Design Requirements
- An engine-based, highly-scalable, lightweight, services-oriented platform.
- An app should run identically on your local machine or in the cloud. 100% fidelity.
- Create a backend, available to any connected device, without boilerplate drudgery.
- No lock-in on your data, infrastructure or code.
- Platform SDKs must result in efficient, elegant code: you should be delighted.
- Your app’s CRUD events can be exposed to event handlers on your backend.
- Extend your API with custom code, often critical for cloud-based apps.
- Use JS or any language you want for your API extensions and event handlers.
- Use our services for common things like authentication, groups, login, and geolocation.
- Model social-networks and complex datagraphs, easily, even lots of many-to-many relationships.
- Process nested, complex queries and traversals on the backend.
- Change permissions by default or at runtime on collections, objects or members.
These design requirements drove the development of the FatFractal Platform: we built a solution that cuts across several traditional IT boundaries, because that’s what developers have to have to build great apps with a cloud backend. When asked, is FatFractal a PaaS or a BaaS, a cloud services company or a cloud API provider?
I reply, yes, yes, yes and yes.