Bill Appleton - January 6, 2014

BenBusse I’ve been working with web services for over a decade, but during the next few years I expect REST APIs to become even more important for application development. A big reason for this trend is the growing popularity of mobile devices. All native and most HTML5 mobile applications will need RESTful services for collaboration and data storage. Wearable devices and the Internet of Things will need to communicate with services as well. And that’s just the tip of the iceberg: many developers are now adopting web services for traditional application development tasks and server to server communication.


This blog post discusses how DreamFactory can help companies avoid some common pitfalls and gracefully migrate to a comprehensive service palette for application development. Our open source software package can be used to quickly hook up a wide variety of backend systems and expose these assets as RESTful services. We support data and metadata access for any ANSI SQL database, NoSQL database, file storage system, or external cloud service. We provide various other services for application development including user management, application hosting, and enterprise security. As each new service is hooked up DreamFactory automatically produces written documentation on the service, creates an interactive API browser for exploring the service manually, and generates a dynamic JavaScript SDK for calling the interface.

Don’t build your own REST API.

Some of the companies I talk to have built their own REST API or bought expensive software for that purpose. In many cases this didn’t work out very well. Developers tend to build special case services for a particular project. They think about the service within the context of specific application requirements instead of trying to build a general purpose service platform. Over time, the company ends up supporting many specialized services that all have different interface styles, authentication methods, security systems, and backend prerequisites. Every time they need something new they have to create another service.

The DreamFactory Services Platform takes a different approach by automatically creating a comprehensive and general purpose palette of services for any backend asset. A well designed service interface can provide all of the functionality needed to develop sophisticated custom applications. If any special case or legacy services are needed they can also be hooked up and managed through the DreamFactory platform. This approach unifies security, permissions, users, and interfaces with a common palette of easy to understand, well documented, and reusable services. Developers can focus on building front end applications instead rebuilding the backend plumbing.

Don’t buy an API Management System.

When a company ends up with a disorganized jumble of special case services they sometimes purchase an API Management System to fix the problem. This solution adds an additional layer of administration to the service architecture, along with additional cost, complexity, risk, and expense. Like a dirty snowball rolling down a hill, these companies end up aggregating a bunch of unmanageable services. An API Management System doesn’t address the core problem: you still have a collection of special case services written by different developers with different design philosophies and confusing backend requirements.

A better idea is to install DreamFactory in the first place and expose a consistent and complete palette of services for application development. New databases and other assets can be added to your REST API at any time using the same design pattern. Data security can be managed with user roles and permissions from a single access point. All the URL request strings and parameters share a common nomenclature. All the services are available from a single JavaScript SDK. Mixing and matching services across backend systems is easy or can be prohibited depending on user role. The DreamFactory Services Platform eliminates the need for additional API management.

Don’t get trapped by interface lock-in.

When developers use services the interfaces become embedded in their application code. This code might be stored on a web page, compiled on a phone, or used by a partner. Changing the service will require a client software update or server side rewrite. In many situations these embedded interfaces end up locking a company into a specific cost, geography, network, availability, bandwidth, and vendor constraints.

DreamFactory avoids this problem by providing a single REST API on the front end for each different asset type on the backend. We provide one REST API for all the different ANSI SQL databases including MySQL, SQL Server, DB2, and PostgreSQL. We support one REST API for all the various NoSQL document databases including Amazon DynamoDB, Azure Tables, MongoDB, and CouchDB. And we implement one REST API for all the major file storage systems including Amazon S3, Azure Tables, and OpenStack Objects.

This architecture really reduces interface lock-in. You can take an application that runs on one DreamFactory Services Platform and move it to another with ease: from development to testing to production, or from the cloud to on-premises, or from inside to outside the firewall. You can take an application developed with Amazon Web Services and run it on Microsoft Azure, or vice versa. DreamFactory’s abstraction layer enables you to swap out various services on the backend without disrupting your front end client.

Install the DreamFactory Services Platform.

So there you have it. The DreamFactory Services Platform is a great way to provide services, save time, reduce cost, and avoid lock-in. Our open source Apache License software package can be installed from the Amazon Marketplace, Azure Marketplace, BitNami Website, VMware Marketplace, or on any Linux operating system including Redhat, CentOS, Debian, and Ubuntu. We also provide a free “dev and test” version of the product available at our website www.dreamfactory.com.