developerWorks: This is a developerWorks podcast, I'm Scott Laningham here with Doug Tidwell, an IBM® Senior Software Engineer whose primary gig these days is evangelizing about emerging technologies; in particular, cloud computing. Welcome back, Doug.
Tidwell: Thanks, Scott, it's great to be here.
developerWorks: Right off the top, let's give a plug for the October first virtual session hosted by IBM and Amazon Web Services. You'll hear Doug talk about the things that you'll need to learn and unlearn as you start to write cloud applications.
But Doug, what are you hearing in your travels from clients and business partners and ISVs on things right now that might be making some of them hesitate on investing in new applications, specifically bringing maybe new Web-based solutions to market?
Tidwell: Well, the first thing that always strikes me is everybody gets the economics of it. With cloud computing, people are really excited and it's sort of this glimpse of the promised land they have: You know, wow, we can have unlimited scalability and we can get rid of a lot of these redundant resources that we have and we can manage our workloads better. So, in terms of just over all resistance to the idea, there's very little. But then, of course, we get into the practical aspects of it and that's, you know, that's where reality rears its ugly head.
So, there's several things that we run into. A lot of times what we find is there's certain regulatory issues that at least in the short term we simply can't overcome ...
Tidwell:... that there are people who say, clouds sounds great, I would love to do this, but it's illegal for me to store any piece of data on a machine outside my organization.
Tidwell: So, you know, government agencies, medical records, things like that.
Another issue that we run into — and we're starting to make some real headway on this — is that I'll talk to an area. So, you know, Scott, I'm talking to you, you say, hey, I've got all these servers and I'm running at five percent capacity 29 days a month, but that other day where I'm maxing out my servers, that's why I've got all these servers to begin with.
So, from your perspective, I say, look, if we had cloud we can balance these loads, we could spread to scalability issues and what-not. You're thrilled, you're on board, but it doesn't make sense just for your organization. It's something where we need to get your group and 10 other groups across your organization to work together, that's where there is an enormous opportunity there to really take advantage of cloud architecture and what it can do for you.
And of course, anything that gets beyond the realm of the technical solution into the real world, political aspects of funding and responsibility, those are problems that really dwarf any technical issues that you might find in actually moving towards a more flexible environment that is provided by the cloud.
developerWorks: Do you find that those scaling opportunities is one of the most attractive things to people as you start to talk about, you know, pooling resources and pooling interests and that type of thing?
Tidwell: Yes, because what you see in a lot of cases is every organization has got their own IT budget and in a lot of cases every organization has their own IT staff, their own hardware, their own software. And just because of the way their business works, they're forced to buy the maximum number of resources — whether that's machines, disk, whatever — they're forced to build everything at this massive level to take into account the largest load they're ever going to have when the vast majority of the time they're not using it.
Tidwell: So, when people look at this and think, you know, I've got all these disk drives that are spinning 24/7, 365, people start analyzing this and finding out, I got one machine down the hall that I run queries on for maybe one hour a month.
You know, so you start doing the economics:
- How much am I paying the power company to keep that thing spinning?
- How much my paying people to keep that thing up to date?
There's just tremendous economic advantages there and the challenge in most cases is figuring out how to get enough organizational momentum behind cloud computing to really take advantage of it.
In many ways, it's identical to the same issues we see with service-oriented architecture. You know, if you talk to the technical folks, they see the advantages, they get it, but if you want to really do that in a successful way you've got to have architecture, you've got to have buy-in across the organization. And that could be a lot more difficult than actually getting the code right.
developerWorks: Yes, that's interesting. You must be talking to people, not only about better efficiencies technically, but better efficiencies organizationally, too. So, the cloud aspect impacts both sides of that equation, doesn't it?
Tidwell: Absolutely, absolutely. And you know, if you look at some of the organizational things that are out there, you know, people will be very frank and say "yes, we are incredibly inefficient here, but, you know, for a variety of budget constraints, regulatory issues, whatever, we really can't do anything else here."
So, the cloud has tremendous promise. You know, that's not to say there aren't technical issues certainly, but in most cases the organizational issues are far more challenging than whatever code or infrastructure you might have to put together.
developerWorks: So, talk a little bit, if you would, then, about the differences in building applications with the cloud in mind versus traditional software development approaches.
Tidwell: Well, there's several things. What we're finding is as we talk to customers, the people who have been doing very distributed applications, they don't have that many issues, that many technical issues in moving to a cloud because they've been thinking about these sort of things all along.
You know, "I've got data, I may have data stores that have been replicated across many nodes around the country, around the world." That's very similar to the sorts of things you have to deal with in a cloud architecture. If you're writing an application in that environment, some of the assumptions you might make in a more traditional application about, you know, "I wrote some data, I'm sure it's out there, right away I can start using it." If you're in a distributed environment, you're writing a cloud application, it may take a while for that data to get to every copy of the database around the cloud.
So, there's some issues there where what we find is that if people have been doing very distributed applications, they tend to have a much easier time moving to the cloud. People who have been building things more in silos, there's a different perspective that they have to have.
The example that I normally use is some of the things you can do with a traditional relational database. So, for example, if I want to take some field in a database table and find the average value of that field, if I'm working on a traditional SQL database I just called the "average" function. I mean, it's a very simple query, it's easy to do.
On the other hand, if I have a distributed database, that can be an extremely inefficient way of doing things because in some of the cloud databases that are out there, I have no idea where all of my records are, so they may literally be, if I have 5,000 records, they may literally be in 10 different geographies around the world — it becomes extremely inefficient for a machine to have to say "go get all those records, bring all the values here, then I'll add them up and take an average."
So in a case like that, what you end up doing is saying, "I'm going to have average stored as another field in my database so that every time I change the database I update that field. That way, any time I need to get the average of that particular column, well, I just read the average, I don't have to calculate it."
So, there are a lot of things like that, you know again, particularly in the database world, where we've been trained over the decades to do everything in a very normalized way and in the cloud in a lot of cases that's not the way you work, you do everything in a de-normalized way.
There's a lot of duplication, there's a lot of differences in the way you architect your solutions simply because you don't know how distributed things are going to be. You can't count on everything being near at hand and easily accessible so that you can do calculations and queries very efficiently.
developerWorks: Yes, and I'm sure part of your story around all of this is IBM's software being available on Amazon Web Services now and sort of getting on the cloud to create for the cloud, right? You're talking about some of that in all of this?
Tidwell: Yes, exactly. And what you'll see in the IBM offerings there in the database world as we've been talking about, those are true SQL databases. Those are true relational databases. Some of the other cloud solutions that are out there for databases, you know they're architected in a very different way. It's probably not what you're used to and if you're going to build an application on those types of databases, you're probably looking at significant rework in order to make those applications really work and be scalable and perform with any level of acceptable response.
developerWorks: And you can find out more about those IBM offerings on Amazon Web Services by joining Doug for the special virtual event on October 1st, "Cloud computing for developers," hosted by IBM and Amazon Web Services. Find out more about it at ibm.com/developerworks/spaces/cloud. Again, Doug Tidwell, emerging technologies evangelist. Doug, thanks for doing this.
Tidwell: Great to be here, always good to talk to you.
developerWorks: Hear more of our podcasts at ibm.com/developerworks, IBM's premier technical resource for software developers with tools, code, and education on IBM products and open standards technology. I'm Scott Laningham. Talk to you next time.