We use cookies and other similar technologies (Cookies) to enhance your experience and to provide you with relevant content and ads. By using our website, you are agreeing to the use of Cookies. You can change your settings at any time. Cookie Policy.

ebizQ's Business Agility Watch


Look Before You Leap Into the Cloud: Imad Mouline Explains

Vote 0 Votes

Editor's Note: Learn the economics of Cloud Computing right here!

Listen to my podcast with Imad Mouline, the CTO of Gomez. Imad is a veteran of service architecture research and development and is a recognized expert in web application development. In this podcast we discuss exactly what enterprises need to consider before going into the cloud and how to assure you get the service the need once you're in the cloud.
Listen to or download the 11:45 minute podcast below:

Download file


PS: What performance issues do companies need to consider when deploying apps in the cloud?

IM: Well, first and foremost, companies need to realize that they're entrusting something that's incredibly important which is a performance of their applications to an outside vendor. So first the cloud obviously, provider is an outsider. Secondly, you need to really realize that even though we talk about these cloud providers being in the cloud, that they actually are hosted in physical data centers with a physical presence and therefore, that physical presence may have impact on ultimately what the end users of the cloud applications will see.

So a cloud provider hosted on the east coast, for example, may not deliver quite the same performance to an end user or a customer on the west coast as one, that might just be outside that data center so Internet latency have an huge impact overall on that overall performance. So the companies need to first and foremost take a step back and ask themselves what exactly are we trying to get out of this cloud. Why are we going to the cloud? Are we interested in the cloud for purely financial reasons, trading CAPEX for OpEx?

Are we interested the cloud because we are really interested in this whole idea elasticity that I can have as much capacity as I want as quickly as I want it. Or am I interested in the cloud because you know what, I'm really interested in going to Amazon EC2 or Google App Engine and I think that somehow because its running on that same infrastructure I'm going to get performance that's as good as Amazon.com or Google.com. And you have to understand that that's not necessarily the case. There's a lot more to Amazon.com than just the Amazon EC2 infrastructure.

So first and foremost, understand why you're going into the cloud, what are your goals, what would you consider to be successful? Then evaluate your cloud providers based on those criteria that are the most important to you. Then after that, go to the cloud provider that best represents what those goals are going to be and then, of course, continuously monitor yourself to make sure you're those goals.

What are the inherent challenges of managing performance of cloud based services and applications?

The big thing is one has to realize that cloud providers, again, whether they're public or private are whatnot are inherently opaque so meaning that you can't necessarily see what's going on inside that cloud. You got a couple of layers of virtualization potentially. And then secondly, the inherent challenge here is that these are shared environments. So for you as a company using services in a cloud environment, you're going to be sharing that environment and those resources with a completely unrelated company.

So the inherent challenge here is that you might have a peak traffic happening at one time and the fact that your neighbor sharing this environment may have traffic coming in around the same time might impact you. And again, these might be two completely different companies sharing this environment. So what the cloud providers ultimately do is they try to make sure that they have, of course, a capacity that's managed in a way that nobody is every going to be affected by anybody else. But again, there's only so much that they can do.

So the key here is to make sure that you're running in this shared environment but still delivering the best possible experience to your ultimate end users and they're a lot of different factors at play. You're running in a shared environment, you're running in a virtualized environment in which you have very little insight as to how things are running because again, it's virtualized. You're running in an environment where many of the aspects that ultimately will deliver an experience to the end user are outside of your control.

So we're talking now about computing capability that's available to you, the networking, you don't have necessarily the same level of control as to how many networks or ISPs are connected to that particular data center from which the cloud provider is actually hosted. So whether they have good connectivity to most ISPs around the country or around the world is it outside of your network? You have less control over the services that really have to come together in order to ultimately deliver a great experience to your end users. Yet somehow, you have to be able to manage that in order to deliver that experience.

So in order to deliver that experience then, what factors do companies need to consider when selecting a cloud provider?

So it really still goes back to establishing what your goals are. If you're moving to the cloud knowing exactly what your goals are behind going to the cloud then you haven't really done your homework. So those goals have to be both in terms of cost, potentially, speed to market. If that's one of the main criteria for going to the cloud, but also in terms of performance, what you expect out of the cloud.

Again, are you going to the cloud because of some type of cloud bursting or being able to offload excess traffic to this incredibly elastic environment and you're only paid for it by the drink? Are you trying to get a rate experience to your end users again when they're coming into your sight because you don't necessarily have to worry about having to build new servers etc. [indecipherable] simply throw more computing power at. So what are your goals? What would you say is a good experience for your end users?

And then, based on those goals, start measuring. So if you're building a web application in front hosted within a cloud provider, well, what you should really do is determine where your customer's end users are going to be and then start measuring the key transactions, key flows from their perspective. So if they're on the east coast, well, make sure that you know exactly what your customers on the east coast are going to perceive when going through those key transactions on your website, if they're on the west coast same thing. If they're in Europe, overseas, make sure that you know how your application in the cloud is going to perform before you launch it and that's key.

And then of course, because it is a very shared and dynamic environment, [indecipherable] one you want to make sure happens here is here is that you're not simply testing it and getting a single point in time measurement. It is a very dynamic environment; it changes all the time. It is shared so it is more important than ever to keep an eye on that performance from your end user's perspective day in and day out just because it's working just fine today doesn't mean that it will tomorrow even if you don't make any changes to your application because it is a shared and dynamic environment.

So in such a changing and dynamic environment, how can companies best test the performance of their cloud based services and applications?

There's really only one way to fully understand how the application is performing and that's to do it from your end user's perspective. Take a customer's centric view of performance. So that means that you need to do an outside end test, that's what you need to run. If your customers are geographically distributed, you have to test how your application's performing from their perspective all the way to the edge of the network. So that means that, again, if they're on the east coast, or west coast, the mid-west, Europe and Asia, you have to test it from those locations.

You have to make sure that the key workflows, key customer journeys and transactions on your website are well covered that you know exactly how long it will take to say before that incredibly important search and checkout workflow and that you know where the bottlenecks are going to be. And once you do that, you'll have to establish some baselines that you can keep on improving on. And ultimately, you have to establish service level agreements with your cloud providers that ensure that you're delivering the right kind of performance to your end users and therefore, that they're delivering the right kind of performance to you so you can deliver that performance to your end users.

Now, what best practices do you recommend for controlling the performance of the applications in the cloud?

We'll make it simple here. Test before deployment, test right after deployment, and test very, very often. So if testing before deployment takes really two flavors. One is testing in order to evaluate the provider. Again, as I mentioned before, set your goals, understand why you're moving to the cloud. Set your performance goals based on that. Then evaluate your cloud providers based on those goals that you've set. Again, if you're interested in burst ability and flexibility, well, make sure that you can wrap up as quickly as possible if those are your goals to be able to go for say one instance in the cloud to 50 in 15 minutes; make sure that can happen.

Test once your application has been deployed to the cloud to know exactly how long it'll take for the key transactions to be performed. Make sure that you can actually test under load as well. Again, if one of the interesting things to you is that elasticity or the ability to burst quickly, make sure that you put enough load on the system from your end user's perspective that you can actually make sure that that bursting capability works and works well and that you understand what the performance you'll be delivering is going to be before the transition, during this transition, and after the transition, after you've transitioned to this bursting mode.

Again, and the key metric here is how does it impact the end users, always. How long does it take for those key transactions to actually perform under any condition? And then, of course, test often. As I mentioned before, it's a very dynamic and shared environment and so you have to keep a very close eye on it. And again, the best way to do that is to make sure that you've identified your key transactions and workflows within the site and then the key geographies that are important to you so you can keep on testing those transactions from those key geographies.

And every time you see a change that can be material to that experience, very, very quickly try to determine what the bottleneck is, which transaction is it, which step in a transaction, which individual calls within the application that are causing this overall issue so you can quickly determine is it your application, is it your cloud configuration, is it the cloud provider as a whole that's having an overall issue?

1 Comment

There's a lot of good stuff in here. I think it's very sensible to give advice about how to approach the Cloud cautiously than to issue flat warnings about loss of ownership. The reality is that the Cloud presents a lot of opportunities to businesses - I've blogged about this here: http://blog.bitzesty.com/saas-opening-up-new-opportunities-for-busines

ebizQ’s expert blog team covers a broad range of BPM, business integration, business analytics/monitoring, collaboration, content and related issues.

Peter Schooff

Peter Schooff is Contributing Editor at ebizQ, and manager of the ebizQ Forum. Contact him at pschooff@techtarget.com

Recently Commented On

Monthly Archives