Cloud Computing - I’m betting your’ll be using it before you know it…
I did a keynote on cloud computing last week. When I asked the audience how many people were using cloud computing today, nobody raised their hand (in an audience of about 300). Then I asked how many people thought they would ever use it. Maybe 20 people raised their hands. How many people thought it was “real” or coming? Same 20 or so.
Flashback to 1994
In preparing for this keynote, I had a flashback to 1994 when I was asked to do a debate on client server computing vs. this new technology call “web computing.” I was a client server guy, so I was to debate how client server was here to stay, how it was proven, etc. After doing my research, I realized that the computing world would move toward dynamic web page generation, web computing, etc. At that presentation I talked about web development as an “early adaptor” technology at that point. Sure things changed, but those who were in on the group floor understood the fundamentals and therefore saw opportunities that weren’t available later…such as Amazon.
Are You an Early Adaptor?
Cloud computing is in a similar state. If you’re an early adaptor, now is your time to truly understand and dig into cloud computing. If you’re a late adaptor, wait 10 years or more. The thing I can assure EVERY company out there is that they will use a form of cloud computing at some point. Some sooner than others. Personally when it comes to new applications, businesses, etc. I’m only thinking in terms of this elastic computing model. Simply put, for less than $3/hr I can spin up a SUPER fast processor on Amazon. If I purchased that machine, it would cost me $50k or more…and I’d have to install the OS, configure hardware, install my applications and more. Why not just fire up a virtual image pre-configured? You can do your development, testing, etc. on a box that will cost you about $.08/hr. Imagine what $1000 will do for you in this model vs. a traditional / physical model. There’s no comparison.
Are You Confused?
There’s a lot of confusion out there. There are also a number of cloud offerings in a variety of forms. When I think about cloud computing, I think of server farms that can be spun up to run my application at the drop of a command. Those are cloud infrastructure providers like Amazon EC2 and Microsoft Azure. Then there are Application Platform cloud providers like Google App Engine, Force.com and hosted Oracle Application Express (ApEx) vendors. These are vendors who provide a platform that you can build your applications on. Google App Engine can be built on Java or Python. Force and ApEx are 4GL application platforms (i.e. point and click interfaces). There are many portal and mashup companies who feel they provide cloud solutions. There are SaaS portal applications like iGoogle, MyYahoo, Yahoo Pipes, Yahoo YQL and more. There are cloud load testing companies like Soasta. There are also a number of SaaS integration appliance vendors (Integration as a Service). Most of which mention cloud computing in their marketing literature. So yes, there’s plenty of confusion and it’s difficult to keep up.
What’s in Your Way?
So why not move to the cloud today? There are many reasons of course. Just like when web computing came into play - many things come to mind. They can likely be grouped into 3 categories: 1) Technological - security, integration, etc., 2) Financial - such as SLA, what does it cost you if you’re down vs. your SLA, etc. 3) Cultural - do you really enjoy spinning up servers? Someone in your company might.
SaaS vs. Cloud
Many people say they have cloud offerings…and by their own definition, they might. Many of those are SaaS (Software as a Service) vendors…not Cloud vendors. SalesForce is actually both, but what most people thing of when they think of them is their CRM package online –that’s SaaS. Hardware as a Service (HaaS) is something that’s been around for a while too – i.e. timesharing, outsourcing your hardware to someone else. Cloud is SaaS and HaaS – running your applications on someone else’s hardware. The software could be used as a service – i.e. an Oracle license.
No Lack of Benefits
The reality of cloud computing is that the benefits are numerous. Ultimately you can absolutely reduce your costs using cloud computing. It’s all about economies of scale. To do it right in a data center is very expensive. If you can share that expense with 1000 of your closest friends – why wouldn’t you! The fact that you can spin up new instances within seconds is exceptionally powerful. All of this translates into risk mitigation. You don’t need to spend any money on hardware! I think you’ll see more seamless cloud offerings in the future. Google has a nice seemless cloud offering for example. You can run their cloud offering (Google App Server) in your own environment or in theirs. You’ll have real power from Oracle when there is a “cloud” option on a SQL statement – just like parallelism…run it on the cloud.
On the other hand, the variable costs can be high. If I buy a box, put some hardware on it, install software on it, I know the costs, right? Not totally – all of this setup requires time, but we often don’t consider that a variable cost. We also have to support our hardware and software – that’s all very expensive. But we tend to think of these things (i.e. salaries, hardware, software, etc) as a sunk cost, right? We’re fooling ourselves. It’s like setting your watch ahead by 15 minutes – do I really think I’m that dumb?
Cloud Solutions
I’ve experimented with all of these cloud providers in one form or another. Some I’ve used in production environments and others not. I think I have a pretty good handle on these technologies, but I learned a long time ago – if I’m a guy who likes my big boat, there’s always someone who has a bigger boat out there…and that’s true for all of these technologies. I know the Oracle technologies pretty well and I’m confident that I don’t know the entire stack. This is complicated stuff. I’m going to tell you my thoughts about each of these vendors cloud offerings. Again, my goal is to get you energized – to get you thinking, questioning some future direction, etc.
If you’re thinking about a new highly scalable application that you’re going to build, I sure hope you’ll consider doing it in the cloud.
- Oracle
- Amazon
- SalesForce (Force.com)
- Google App Engine
- Yahoo Pipes
- Zoho
- Others…
- Do you need to spin up servers or just run an application?
- Existing or new application?
- Oracle in the Cloud?
- Pay per use OK?
- Global application?
- Scaling on demand important?
- Public, private, partner cloud?
Oracle has numerous SaaS offerings, which is running their software on their hardware….for example CRM, ERP, etc. They say they have “Oracle Technology on Demand” but it’s all Oracle 9.2, so I’m not sure what that says since Oracle’s on version 11g now.
Personally I believe they could be one of the biggest cloud providers once they complete the Sun transaction. The Exadata boxes running in the cloud would be a great virtual offering!
Amazon
Amazon is one of my favorite cloud infrastructure providers…Oracle’s too – so far. That’s certain to change. With EC2 you can spin up a server in no time. You pay by the hour of computing time. As low as about 8 cents up to about $3/hr depending on the size and performance of the virtual box. You also will pay for data storage, data transfer, and other costs. But…what’s it cost you to spin up a box today? What’s it cost you to decommission a box today?
EC2 (Elastic Compute Cloud) is a true cloud infrastructure. S3 (Simple Storage Service) is how you store your data. You can get virtual machines in a variety of configurations – small, large, extra large, high CPU or standard CPU. You can run as many virtual images as you would like - $.085-$2.88/hr/machine + licenses + data transfer (to S3). And of course, you can build your own virtual instances on the OS, software, etc. of your choice.
Force.com
SalesForce offers what they call a cloud offering. It’s really an “Application Platform as a Service.” I liken it to apex.oracle.com. If you want to build a hosted Web app – Force.com might be for you. There are entire consulting firms sprouting up who do nothing but Force.com development - I like this! Force.com provides an ApEx like development environment, There are are sample applications (recruiting and volunteers) that you can check out on their site too.
I’d like to know how do you spin up a box? Manage reliability, performance, etc…these are concerns to me.
Google App Engine
Google App Engine is a very powerful way to run your applications. It’s basically a hosted JVM environment. It’s nice that you can run it on your own hardware too. But, the downside in my book is that it’s not all that developer friendly. There’s no ApEx-like interface. So it’s a 3GL Application Platform as a Service.
But…don’t count Google out just yet. They have a number of SaaS offerings (Mail, Calendar, etc) that can be great components of your cloud solution…for free.
It’s a true Cloud (scalable, redundant, etc) environment, but can’t run Oracle. You have to develop your own app in Google App Engine lingo - i.e. Java or Python. You can run Java databases like Derby of course. By default you get BigTable, which is the same “database” that Google’s search engine uses.
One thing I like about this architecture is that you can run it on your own hardware or run on Google (i.e. in the cloud). Easy to build, easy to maintain, easy to scale. An application on a free account can use up to 500MB of storage and up to 5 million page views a month. You can also pay and configure:
- CPU Time
- Bandwidth in
- Bandwidth out
- Storage
Google provides the Google Data API to get to everything. As I mentioned, there are many SaaS / hosted solutions that they have too - such as Calendars, Documents, App Server, etc.
Yahoo
Yahoo is a content company. They don’t really seem to have any cloud solutions. They have one that’s currently been introduced to universities only, but that doesn’t seem all that interesting to industry. Yahoo’s been talking about their cloud offering for a while now. In April they finally released it to universities – i.e. a limited beta. But again, don’t count Yahoo out – they are a content company.
If you want weather information, stock information, traffic, etc…they have the content. All of us love SQL, and Yahoo has YQL. Is the Y long or short? EEQL, IQL, ICKQL? YuckQL?
Actually I’m a big fan of YQL as you’ll see in a minute. Yahoo provides many great developer tools (YUI, YQL, APIs). In fact, YQL is quite powerful. It returns data as XML or JSON. You can also store your own data on Yahoo (Google offers this too). You can query your own XML through YQL. And…Yahoo Pipes are great!
Zoho
Zoho considers themselves a cloud provider. Personally again, I’d say that’s a stretch. It’s more like a Google Documents on steroids. It does have some nice APIs and a JDBC driver. Zoho as in Soho, so I have to wonder - is it for small time companies? Again, it’s more like ApEx on a server than Cloud. They say they have CloudSQL…all marketing hype. It’s really more like SaaSSQL… They do have JDBC and ODBC drivers, which is pretty cool!
Others
As I mentioned, there are MANY other cloud providers. So take some time to pick your cloud provider. This is an infrastructure decision. Think about what you really need right now. Do you need SaaS or Cloud?
Do you need to move from your hardware to someone else’s? What kind of scale do you need? I’d recommend you hire an expert…so you make the right decisions. As I mentioned, it’s tough to study up on all this stuff.
Cloud with SOA?
What’s SOA – Service Oriented Architecture. SOA is an architecture, not a technology. So it contains a lot of components, best practices, etc. Many people say that SOA is a best practices approach to best practices. SOA bigots will say that SOA is just Web Services – in fact, you can do SOA without Web Services. Sure, that’s true, but I think the best place to start on your SOA journey is via Web Services. What are web services? Just an open standard API. You already have services or APIs. You already have data. So why not expose your existing data and business logic through an open API?
What’s your path to cloud? Start with web services. Start with something like YQL and see how it works. Integrate some Yahoo data into your applications. For example, I send myself emails with all of the weather updates for the town I live in – Littleton, CO. My plan is to integrate this with my calendar and figure out what city I’m in or going to be in and send weather updates for my current location…and traffic info…and events of interest, etc.
What are the steps to success? I believe a company should:
- You have services (packages, data)
- Figure out which service you want to expose internally or externally
- Create web services based on your existing services
- Pick a product to create your services - iPerspective, Jdeveloper, …
- Try out Yahoo YQL
CGQ
I wrote a product that we call CGQ – consumer gateway for queries. It allows you to write a query against ANY Web Service. We have another product, iPerspective that creates Web Services based on your existing assets – i.e. data in any database or business logic in any database (T-SQL, PL/SQL, etc.). So CGQ allows me to write a query against any Web Service. The services can be ones I created or ones already in existence…or in a cloud. Using CGQ I could query from YQL or fire off an EC2 server or CRUD data, etc. VERY powerful stuff and to the developer it simply looks like SQL and/or PL/SQL code.
CGQ Query 1 - Get all of the places named Littleton
If we take a look at this query, it’s pretty simple. It “virtualizes” the Web Service from Yahoo, so the Oracle engine thinks it’s an Oracle table:
select text_column1 place_type, text_column2 name,
text_column3 country, text_column4 state,
text_column5 county, text_column6 postal_code,
text_column7 locality1, num_column1 centroid_lat,
num_column2 centroid_long
from table(cast(soap_ws.select_restful(
‘placeTypeName,name,country,admin1,admin2,postal,locality1′,
‘centroid/latitude,centroid/longitude’,
‘http://query.yahooapis.com/v1/public/yql?q=
select%20*%20from%20geo.places%20
where%20text%3D%22littleton%22′,
‘place’, ‘results’,
‘xmlns=”http://where.yahooapis.com/v1/schema.rng”‘)
as generic_table));
Here’s what the output looks like in SQL Developer:
Sample CGQ Query 2 - Get the detailed weather for 80123
select text_column1 date_1, text_column2 day1,
num_column1 Day1_Low, num_column2 Day1_High,
text_column3 Weather_1, text_column4 date_2,
text_column5 day2, num_column3 Day2_Low,
num_column4 Day2_High, text_column6 Weather_2
from table(cast(soap_ws.select_restful(
‘yweather:forecast[1]/@date,yweather:forecast[1]/
@day,yweather:forecast[1]/@text,yweather:forecast[2]/
@date,yweather:forecast[2]/@day,yweather:forecast[2]/@text’,
‘yweather:forecast[1]/@low,yweather:forecast[1]/
@high,yweather:forecast[2]/@low,yweather:forecast[2]/@high’,
‘http://query.yahooapis.com/v1/public/yql?q=
select%20*%20from%20weather.forecast%20
where%20location%3D80123′,
‘item’, ‘results’,
‘xmlns:yweather=”http://xml.weather.yahoo.com/ns/rss/1.0″‘)
as generic_table));
Query 3 - Get the upcoming events for a location
select text_column1 date_posted, text_column2 description,
text_column3 name, text_column4 photo_url,
text_column5 distance_units, text_column6 start_date,
text_column7 start_time, text_column8 ticket_price,
text_column9 ticket_url, text_column10 venue_address,
num_column1 distance, num_column2 latitude, num_column3 longitude
from table(cast(soap_ws.select_restful(
‘@date_posted,@description,@name,@photo_url,
@distance_units,@start_date,@start_time,@ticket_price,
@ticket_url,@venue_address,@distance,@latitude,@longitude’,’’,
‘http://query.yahooapis.com/v1/public/yql?q=
select%20*%20from%20upcoming.events%20
where%20search_text%3D%22music%22%20
and%20location%3D%22Denver%2CCO%22%20
and%20radius%3D1′,
‘event’, ‘results’)
as generic_table));
Query 4 - Traffic in a Radius
select text_column1 date_posted, text_column2 description,
text_column3 name, text_column4 photo_url,
text_column5 distance_units, text_column6 start_date,
text_column7 start_time, text_column8 ticket_price,
text_column9 ticket_url, text_column10 venue_address,
num_column1 distance, num_column2 latitude, num_column3 longitude
from table(cast(soap_ws.select_restful(
‘@date_posted,@description,@name,@photo_url,
@distance_units,@start_date,@start_time,@ticket_price,
@ticket_url,@venue_address,@distance,@latitude,@longitude’,’’,
‘http://query.yahooapis.com/v1/public/yql?q=
select%20*%20from%20upcoming.events%20
where%20search_text%3D%22music%22%20
and%20location%3D%22Denver%2CCO%22%20
and%20radius%3D1′,
‘event’, ‘results’)
as generic_table));
Now It’s up to You!
I can assure you that the cloud is real. I can assure you that you’ll use it in your business. There’s a natural progression to get started. Give SOA a try. Test out a Cloud provider. Learn! I have some questions for you:
- Did I get you thinking?
- Are you more curious than before you read this?
- Do you see how it might apply to your business?
- Still don’t see a fit? Why not?

























Recent Comments