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.
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?
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.
Keep in mind that long term this is an infrastructure decision, so don’t take it lightly! There are so many questions that you have to ask yourself:
- 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?
Let’s take a look at what each of the above vendors.
Oracle
First off, Oracle is really a cloud enabler, not so much a cloud infrastructure provider. The preferred Oracle cloud infrastructure is
provided by Amazon. You could say that ApEx running in a SaaS environment is a cloud offering. On
apex.oracle.com you can build your own application there and run it on their hardware. Not really in a production environment – Oracle doesn’t provide “production level” ApEx – at least they don’t support it.
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
- Email
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
I’d also encourage you to check out Yahoo Pipes. Pipes allows you to prompt for information, use YQL, draw it in a map, overlay data and more. The maps you see here are 2 maps I created that show current traffic on a map. The map on the bottom of the page shows the culinary events that are in town. Again, I plan on merging this information with my “current” location and sending daily emails of maps and other items of interest. So let’s take a look at how you can do this with ApEx…
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));
Here’s what the output looks like in SQL Developer:
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));
Here’s what the output looks like in SQL Developer:
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));
Here’s what the output looks like in SQL Developer:
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