-
Monday, May 11, 2009
You can download the source for my F# AWS application from here. The remaining posts start on April 13, 2009, and run through today (with a few interruptions from me on other topics).
Full story
Utility Computing
F#
Amazon Web Services
-
Friday, May 08, 2009
I wish I could say that their is something amazing that I did differently from everyone else who has hosted on EC2, but that’s just not so. Once you get an EC2 instance running, the rest of the process is identical to connecting to a virtual machine anywhere. If you need to add additional Windows components, the directions in this post are dynamite. If you use the management console, the directions on the Amazon article are pretty easy to map to actions in the UI without much thought. So, you are deploying to a virtual machine that is easily duplicated across the Amazon EC2 infrastructure. I would say that the strongest reason to use EC2 is that you already know how to use it. A second reason to use EC2 over your own data center is this: if you are using S3 and SimpleDB, you don’t pay for ...
Full story
EC2
Utility Computing
Amazon Web Services
-
Wednesday, May 06, 2009
(You can review my description of S3 here.) Because Amazon’s Simple Storage Service, S3, has been around for quite a while, the community has built a large number of libraries to access S3 programmatically. The C# space is pretty well crowded as well, and many folks wrote libraries that are good enough for their needs, then released those libraries to the world. The trick in picking an S3 library does not revolve around picking a best library. Instead, it involves finding one written by someone who had a similar set of needs. When looking for a library, think about how you want to add, update, and delete objects in S3. Write down the use cases. Then, download a set of libraries and keep messing with them until you find one that matches your needs. My planned usage involves: Create a bucket once, when the application first runs. (This step ...
Full story
Utility Computing
F#
S3
Amazon Web Services
-
Monday, May 04, 2009
This week, we close out our look at the Amazon Web Services implementation of the AppEngine Photo Application. S3 is perhaps one of the best known, most used services on AWS. Before we discuss using S3, I need to cover some basic terminology. The key words to know are bucket, object, and key. A bucket contains zero or more objects. An object is associated with one key. Buckets have names and are associated with an AWS account. Upon creating a bucket, you also create an addressable resource on the Internet. For example, I can create a bucket named MyS3Bucket. Upon creating that resource, S3 enables a new URI at http://MyS3Bucket.s3.amazonaws.com and at http://s3.amazonaws.com/MyS3Bucket. The bucket can be public or private. A public bucket can be accessed by anyone whereas a private bucket requires a token to access any contents. The owner of the bucket ...
Full story
Utility Computing
S3
Amazon Web Services
-
Monday, April 13, 2009
Back in February, I walked through the development of a Photo storage application. The application originally comes from one of the examples in the REST book Kenn Scribner and I wrote, Effective REST Services via .NET. Photo sharing and uploads allow for me to present a well understood application without providing a lot of background. For a photo, you upload it somewhere and store metadata about the photo itself. We already covered Google App Engine in February. For this application, we will use Amazon Web Services, including SimpleDB, Simple Storage Service, and Elastic Compute Cloud. At the end, I’ll tell you what I thought of the experience. I’ll develop the application in F#. When I presented this code to the Midwest Cloud Computing Users Group for the April 2009 meeting, Amanda Laucher offered up that my use of F# used some idioms she hadn’t seen before. That’s a ...
Full story
EC2
Utility Computing
S3
Amazon Web Services
SimpleDB
-
Wednesday, April 08, 2009
I received some great feedback on my survey of cloud computing platforms at the February Cloud Computing User Group in Downers Grove, so I’ve been asked to bring the show to the downtown Chicago meeting for the April meeting on Thursday, April 9 at 5:30 at Microsoft’s downtown location. If you saw the talk last month, I’ve been asked to beef it up with real world code running on all three major platforms: Google App Engine, Amazon Web Services, and Azure. It’s a simple photo sharing application based on the same code I showed in February for App Engine. Please sign up at https://www.clicktoattend.com/invitation.aspx?code=136727. The full meeting description: Join us for the fourth local meeting of the Cloud Computing User Group - this months being held at the Microsoft offices in Downtown Chicago. Note : this meeting will be a revisit and slight revamp of last month's content. As ...
Full story
Azure
Google App Engine
Cloud Computing
Utility Computing
Amazon Web Services
-
Monday, March 30, 2009
Here’s a small gotcha that I didn’t see covered via the normal Google coverage. So, I’m adding the information and the solution so that I can find the answer when I need it again. I’m sharing via my blog to help you out too. If this helps you, click on a link and send some change my way:) Symptom: You follow the rules and ran “Create Test Storage Tables” from Visual Studio on your dev box. All your testing locally seems to work. When you deploy, you see an error like this (leaving in lots of Google discovery goodness in here. If this saves your bacon, send me a thank you!): <?xml version="1.0" encoding="utf-8" standalone="yes"?> <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code>TableNotFound</code> <message xml:lang="en-US">The table specified does not exist.</message> </error> Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error ...
Full story
Azure
Utility Computing
.NET
-
Friday, March 13, 2009
Amazon just announced a reserved instances plan for EC2. This new option significantly reduces costs for Linux/UNIX users. This option is not available for Windows users as of this time. The way it appears to work is this: User buys block of hours that is good for a 1 or 3 year term. User consumes hours and has this usage debited from the prepaid block of time. If the user fails to consume their hours within the 1 or 3 year term, the money is gone. The 1 year blocks sell 10833 hours. The 3 year blocks represent 16667 hours. For comparison, a week has 168 hours, a year has 8760 or 8784 hours (leap year dependent). Here's a cost comparison of the offerings: 1 yr Block of hours Pay as you go 3 yr Block of hours Pay as you go Standard/Small $325.00 $1,083.33 $500.00 $1,666.67 Standard/Medium...
Full story
EC2
Utility Computing
Elastic Compute Cloud
Amazon Web Services
-
Wednesday, March 11, 2009
I originally presented this talk to the Azure Cloud Computing User Group on February 25, 2009. Thanks to Bryce Calhoun for inviting me to present! The original meeting announcement had this summary: Scott Seely, Architect at MySpace, will kick off the meeting with a 20-30 minute overview of the top three cloud computing offerings available today: Google App Engine, Amazon EC3 and Azure Services. His discussion will be primarily focused on a compare/contrast of the functionality and features inherent to each platform. Enjoy!
Full story
CloudFront
Azure
Google App Engine
EC2
Simple Storage Service
Cloud Computing
Utility Computing
Elastic Compute Cloud
Cloud Storage
SQS
S3
Simple Queue Service
Amazon Web Services
SimpleDB
-
Tuesday, February 24, 2009
I'll be speaking Wednesday night at the Cloud Computing User Group in Downers Grove, IL. I have a short presentation on the main computing platforms. If you are a regular reader, you know that I've been spending some time going beneath the surface on major platforms. If folks like the high level overview, I'll do some more in depth talks in the future. Here are the details and the announcement that Bryce Calhoun sent out: Join us for the third local meeting of the Cloud Computing User Group – this month in Downers Grove. At this meeting, we will be learning about how Live ID integration works in the Azure cloud computing platform. We’ll demo and dig into the code of an application built in the cloud that integrates directly with the Live ID service and stores information specific to the individual associated with that ID. Also, Scott Seely, Architect ...
Full story
Azure
Google App Engine
EC2
Simple Storage Service
Cloud Computing
Utility Computing
SQS
S3
Simple Queue Service
Amazon Web Services
SimpleDB
-
Friday, February 20, 2009
When you think about data storage with respect to App Engine, it is better to think of this as a mechanism to persist object data than to think about rows and columns that one worries about in a traditional relational database management system (RDBMS). Instead of defining tables, the developer defines Python objects. A persistable object inherits from one of the following types from the google.appengine.ext.db module: Model: A data model whose properties are all defined within the class definition. Expando: A data model whose properties are determinted dynamically. PolyModel: Allows for models that use inheritance. Each value in the data class must be an instance of a property type. There are strings, numeric, dates, boolean, blogs, lists, postal address, geographic points, and other values. You can see the complete list in the App Engine docs. All objects in the models have a unique key property, ...
Full story
Google App Engine
Cloud Computing
Utility Computing
-
Wednesday, February 18, 2009
When writing an application, it is always handy when your platform of choice offers some sort of plug and play authentication mechanism. For example, ASP.NET has authentication providers that allow users to authenticate against Windows accounts or against username/password combinations in a data store. For Internet based applications, there has been a large push to separate authentication from authorization. The reason for this is simple: users want to use a large number of applications and need to be authenticated for each application. Each of these applications has a choice to make: use a custom username/password that only it knows about or trust a third party to provide an identity. Many web sites choose to implement their own username/password list. Over time, this simply means that people tend to use the same username/password combination on all sites that they access. The downside here is that if one site is compromised, the ...
Full story
Google App Engine
Cloud Computing
Utility Computing
-
Monday, February 16, 2009
When a request comes into a web server, that request has to be either processed or rejected. The request may be for static or dynamic content. So long as the web server can find something to respond to the request, the server will try. Otherwise, it will inform the caller that the resource cannot be found. Google App Engine supports both static and dynamic content. Our app.yaml file tells the server how to respond to different request types. Handling Static Content in App Engine When creating a web site, the site typically contains a fair number of static resources. These resources include cascading style sheets (CSS), JavaScript files (JS), images, static HTML, and so on. Most developers will structure their projects so that the folders are structured something like this /Project /pages /scripts /theme /images where pages contains static (or templatized) HTML, scripts contains JavaScript, ...
Full story
Google App Engine
Cloud Computing
Utility Computing
-
Wednesday, February 11, 2009
At the end of Google App Engine, Day 1, we got the environment setup. We verified the environment with a very simple application, Hello World. Before moving forward and building the photo sharing application, I want to make sure that I understand how to deploy an application. Given the simplicity of the application, this should be easy. The documentation says that I should run appcfg.py update [application directory] and things should just work. My code looks exactly like this. HelloWorld.py (note the capitalization of this filename--it's important) contains: print 'Content-Type: text/plain' print '' print 'Hello, world!' app.yaml application: sseely-gae version: 1 runtime: python api_version: 1 handlers: - url: /.* script: helloworld.py After running appcfg.py update, I navigated to http://sseely-gae.appspot.com and saw an HTTP Status Code 500 error. Blech! I did find that GAE has a basic set of diagnostic tools. To find them, go to http://appengine.google.com/ and sign ...
Full story
Google App Engine
Cloud Computing
Utility Computing
-
Monday, February 09, 2009
I'm recording this as I setup my development environment to just write an App Engine application. I'm going to skip the step of acquiring a Google account. I got my Google account about 3 years ago. If you have a GMail or AdSense account, you have authentication credentials. If not, they are easy enough to get. Here is a step by step transcript of setting things up. Wish me luck! Go to http://code.google.com/appengine/. Look for the button that says Try it now. (Linked here if you want to skip a step.) Click on the button that says Create an Application. If you've never done this before, you'll see a screen that asks you to Verify Your Account by SMS. Pick your country, your cell phone carrier, and your mobile number. Do NOT forget to fill in your cell phone carrier. Failure to do so means that ...
Full story
Google App Engine
Cloud Computing
Utility Computing
-
Friday, February 06, 2009
At this point, I think I have a good idea about what GAE, AWS, and Azure offer in terms of potential. To force myself to learn things faster, I think that it's time to go out and build an application. For the sake of making apples to apples comparisons, I need an application that is fairly simple and allows me to exercise cloud storage as well as application hosting. I also want something that is super simple and that involves something I have already built. For my book, Effective REST Services via .NET, I put together an application that allowed a user to create and manage a photo album. I think it's appropriate to reuse that concept. For one thing, I already have the application coded, so I will be able to reuse a lot of ideas and code. The other thing that I like about this idea is ...
Full story
Azure
Google App Engine
Cloud Computing
Utility Computing
Amazon Web Services
-
Wednesday, February 04, 2009
I have found a need to do some research across the various cloud offerings so that I get good feel for what each has to offer. At this point in my investigations, I am focusing on only three platforms: Amazon Web Services, Microsoft Azure, and Google App Engine. The three have common sets of features: storage through an API, compute resources, and ability to respond to demand by scaling application instances. The storage APIs encourage scalable patterns over patterns that could cause data contention. Amazon requires that the application handle scale up and down on its own. Azure and App Engine scale for the user through a combination of configuration and observed demand. These services also offer authentication services as well as the ability to create your own authentication. App Engine integrates with Google logins, Azure works with Windows Live, and Amazon through security mechanisms in the Amazon Machine Instances. ...
Full story
CloudFront
Azure
Google App Engine
EC2
Simple Storage Service
Cloud Computing
Utility Computing
Elastic Compute Cloud
Cloud Storage
SQS
S3
Simple Queue Service
Amazon Web Services
-
Monday, February 02, 2009
I prefer the term utility computing to cloud computing. People outside of software development understand that electricity, water, and phone service are all utilities. Cloud computing is an attempt to deliver compute resources at utility prices. Before I define what utility computing is, I want to define what utility computing isn't. Some companies, such as IBM, are trying to do a "me too" with cloud computing. They use the term cloud computing because that amorphous word, cloud, does not have a clear meaning. They are also confusing the computing public. Why? They are conflating their virtualization products with utility computing in order to confuse the market and continue making sales (note: most big iron and *nix vendors have EXCELLENT virtualization technology). Virtualization of resources and compute resources is an ol+++++++++d story that mainframe vendors have had working well since the 1960s. More recently, companies like VMWare, Citrix,and ...
Full story
Azure
Microsoft
Cloud Computing
Utility Computing