The following is a guest post by Tim Mullahy, General Manager at Liberty Center One, a new breed of data center located in Royal Oak, MI.
Thanks to the cloud, we can now write apps that are available anywhere – but they need to stay available. Here’s how you can ensure that yours do.
These days, availability is the holy grail of app development. Thanks to the consumerization of IT, the expectations of the average worker – and of the average customer – have undergone a seismic shift. They won’t tolerate anything less than excellence when it comes to performance.
They demand a top-notch user experience. They expect to be capable of using an app on whatever device they desire. And most importantly, they require that app be accessible no matter where they are and when they’re using it.
The cloud allows your development team to account for all of those demands – but only if you implement it effectively. You need to be prepared for the demands and challenges of developing a cloud-based app, and you need to be absolutely certain that your business has access to the infrastructure necessary to support that app. Perhaps most importantly, you need to design the app to leverage the cloud’s unique nature, while also navigating the various threats to availability and stability.
Simply put, developing a SaaS application that’s failure proof goes beyond an extensive bug, QA, and stress testing (your team should be doing all that as a minimum, anyway). It requires a slightly different approach to app development, maintenance, and management. Let’s talk about that.
Host Everything on High-Availability Infrastructure – And Monitor It
All infrastructure fails eventually – even the cloud is not immune to this law. The trick is to ensure that yours can fail gracefully. That you can roll over performance demands from one instance to another without causing any interruption for your end users.
That’s easy enough if you’re developing a simple word processor app. However, the more components your app incorporates, the lower its overall availability becomes (more on that in a moment). You need to ensure that anything you cannot replicate is failure-proofed with redundant, high-availability infrastructure.
That includes component directories, processes, non-duplicated database elements, and anything else you deem critical to your app’s functionality.
Mind you, it’s not enough to simply push your app out and leave it to fend for itself. You need to constantly monitor application performance and usage patterns. Set automated alerts and implement automatic cloud bursting to ensure that your app doesn’t come grinding to a halt during periods of especially intensive use.
Keep Your Component Count As Low As Possible
There’s an old adage that I always like to refer to whenever I’m building an app – Keep It Simple, Stupid. While you should never sacrifice usability and quality of life for your end users, you also shouldn’t incorporate anything unnecessary. For example, does your corporate email app really need a ton of rich animations?
To some extent, you can mitigate this issue by developing applications modularly – that way, each element of your app can contain multiple components, and you’ll need to worry less about keeping each individual component operational.
Incorporate Selective Redundancy
Last but certainly not least, it’s important to determine which components of your application are most critical – which elements can it not function without? More importantly, what are your primary points of failure?
Your biggest challenge here – as you likely know – is managing transaction states through a failover. To achieve this, you might need to incorporate application-level state synchronization through a technique like multiphase commit. You might also consider bringing in a database logging process for session activities, especially if you’re creating an app that requires communication.
Guard Against Failure
Availability is the king of app development – and especially if you’re developing an SaaS app, everything you do needs to promote that availability. The advice laid out here provides you with a starting point. The rest, however, is up to you.