Developing backend systems with Parse

The DT Talk News Feed is an iOS app that displays a list of all the latest news and articles relating to fantasy AFL. In designing the architecture and structure of the app I had two options; let the app do all the heavy lifting and query the news sources or build a centralised server that would handle the management of all the articles.

Letting the app do the heaving lifting is the easiest design. You then are only responsible for maintaining one system. However, you lose control of whats displayed in the app. If your source endpoints change you are left to update the app and risk it breaking. Deciding to use a server, as seen in most data driven apps, seemed like a good idea.

Wanting to not spend time maintaining and writing server code, I used the parse.com service. Parse have a great free tier that enabled me to get up and running quickly. Interestingly I haven’t seen anyone use parse in the way that my app does.

I essentially use parse as a caching layer for the application. My Parse app caches the last 7 days of news articles for the app to grab and display. Because of the short news cycle of the AFL, last weeks information is often redundant.

With some javascript running in a background job on Parse, I am able to maintain the state of the news feed. The job queries RSS feeds for new articles, stores new articles and scrubs expired articles from the data store. This runs every 15 minutes to ensure the app is kept up to date.

Another interesting use of parse is by way of versioning your backend systems.

When the dev Parse app is ready for production I can copy it to create a new version. This might seem funny but its just so easy to create an MVP and iterate without breaking functionality of previous app versions.

Right now I am migrating all the users to the new system which again produces an interesting by-product in my scenario. Because the older versions of the app use a different backend, I can insert an article linking them to update the app making my migration easier.

At this point I am experimenting heavily with Parse and it’s the apps sole provider for data, crash reporting and analytics. Im not sure if Parse analytics with solve all my problems but I am keen to be proven wrong.