Architecting for the Cloud, Part 2: Application Architectures
So, now we’ve discussed the basics of cloud architecture, and what makes it so attractive. But what do you need to consider when it comes to actual cloud-based applications? How do you know if the ones you select are effective and will meet your organization’s needs? Here are some of the most important considerations when it comes to application architectures.
High load variability. It’s going to seem self-evident, but you need to be assessing any app you’re interested in to see how much load variability it can handle. While apps may be described with perfect truth as being cloud-based, if they’re designed for relatively load-stable use they aren’t going to flex with elastic usage patterns. If you do business with different time zones, cultures, and industries, if your employees work flex hours, if your clients avail themselves of your services outside your normal business day, you’re going to need load variability.
The “Skinny Straw” phenomenon. When you’re implementing any system, one consistent concern is avoiding bottlenecks in the flow of information. In the past, the solution was to increase memory, but with cloud-based systems, the new concern is bandwidth. Imagine trying to suck a thick milkshake through a skinny straw and you’ll understand the issue immediately. A cloud-based app can do amazing things, but if it requires more bandwidth than the user has available, it won’t perform optimally for them. Now, obviously you can control the bandwidth available to your employees (when they’re at the office), but when you’re partnering with organizations all over the world and providing customer portals, you need to consider what sort of bandwidth is available to them, and also what’s affordable. Looking at things from that perspective will prevent you from implementing a cloud-based app so robust that only power users can fully exploit it.
Application Integration. As noted during our discussion of loose coupling, no cloud-based app is an island. You should have a wary eye on how much integration you want. Do you need to integrate data across apps, or integrate the functions of the apps themselves? Do you want to integrate your applications outside or within the cloud? Once you’ve made these determinations, there are still multiple models for doing each, all with different pros and cons. That’s a blog unto itself, but it’s definitely something to be thinking and asking about.
Obviously, there are other potential issues, but these are the three most foundational. As you can see, each has nuances that are easy to overlook, but which could create a disconnect between what your cloud-based applications are capable of, and how they are actually performing for your users. Know your users. Know (insofar as possible) your partners’ general usage patterns. This kind of forethought is essential to ensure that the reality of your cloud-based, seamless system lives up to your vision.