Posts Tagged 'Amazon'

Amazon Extends Services for Microsoft Technologies

As someone who works primarily with Microsoft technologies I was delighted to see the Amazon announcement yesterday that they are going to offer two additional options for developers.

First, Amazon RDS is now going to include SQL Server in addition to MySQL and Oracle databases.

SQL Server is available in a variety of versions on RDS and, like Oracle, can have license fees included in the hourly instance charge or can utilize a “bring your own license” model for existing Microsoft Volume Licensing customers that have SQL Server covered by Microsoft Software Assurance contracts. In either case RDS allows SQL Servers to be provisioned on an as-needed, pay-as-you-go basis. The managed service provides automated software patching, monitoring and metrics, automated backups and the ability to create on-demand database snapshots. This offering appears to be in direct competition to Microsoft’s own SQL Azure, so the future should prove interesting!

Second, Amazon Elastic Beanstalk is now going to include support for .NET developers using the Windows/IIS/.NET solution stack rounding out the service offering which already supports Java and PHP.

Elastic Beanstalk is similar but somewhat different as a PaaS concept than Microsoft Azure. Azure is in many ways a more managed approach that takes care of a lot of administration for you behinds the scenes. Elastic Beanstalk exposes the entire underlying infrastructure to you if desired. Both offer a plug-in toolkit for Visual Studio that enables deployment directly from the development environment.

I am a great believer that competition is good and that certainly appears to be the case in the cloud as well. Amazon, in my opinion, has just raised the bar another notch. These two new services from Amazon will likely appeal to some developers familiar with Microsoft technologies. I wonder how, if and when Microsoft will respond!

Kevin Kell

Amazon DynamoDB Ups the Ante for NoSQL Database Service

This past week I watched with great interest as Amazon CTO Werner Vogels announced the launch of Amazon’s DynamoDB service. I feel that rather than trying to say something pithy I will just recommend that you check it out for yourselves.

DynamoDB is a NoSQL database service that is, in my opinion, head and shoulders above what Amazon previously offered with SimpleDB.

DynamoDB removes almost all of the administrative burden associated with provisioning a database for an application. Developers can simply create a database and assume it will be available to store and retrieve any amount of data and serve any level of traffic that may materialize. DynamoDB handles all the load balancing for you transparently behind the scenes.

Unlike some NoSQL databases, DynamoDB gives the developer the choice between strong consistency or eventual consistency on every database transaction. This allows for great control over what happens when data is read or written. Also, DynamoDB has built-in fault tolerance to automatically and synchronously replicate data across multiple Availability Zones.

DynamoDB also integrates with Amazon Elastic Map Reduce. For example it is pretty straightforward to use EMR to analyze data stored in DynamoDB and to archive results in Amazon S3.

DynamoDB is an example of another storage option offered in the cloud. Developers should consider this option for any future development projects they may have.

Kevin Kell

Importing Custom Images into Amazon EC2

A current project I am working on has a requirement that custom machine images be built and maintained such that they are usable both from within Amazon EC2 and on virtual machines hosted outside of EC2. These images are all based on the Windows operating system. Since we want to build each machine image only once (we will have about 200 of them!) it left us with a couple of options:

  1. Build the custom image on EC2 and export it for use on outside virtual machines
  2. Build the custom image on an outside virtual machine and import it for use in EC2

This article explores the second option. I will outline some of the challenges I experienced along the way and how I resolved them. Hopefully this may help someone else who is trying to do the same sort of thing.

In theory, the process is simple. Amazon has provided command line tools and decent documentation on how to do this. As with many endeavors, however, the devil is often in the details.

I had wanted to start from VMware images. VWware virtual disk files use the vmdk format. I soon discovered, however, that not all vmdk files are created equal. That is vmdk files which are used for vSphere are not the same as the vmdk files used in VMware Workstation. The EC2 command line tools will complain if you try to use a workstation vmdk. Unfortunately I did not have vSphere available at my disposal.

So, I decided instead to start from a vhd format disk. I know that there are products which claim to convert one to another but I did not want to go there at this point. I used Microsoft Virtual PC 2007 to create a base Windows Server 2008 virtual machine from an ISO image I downloaded using my MSDN subscription. At least that was a relatively easy way to get started. I then went on to customize that image for my requirements.

Next just use the tools and upload the image, right?

Well, for me it took a few tries. I learned after the first that running ec2-upload-disk-image from my local machine takes over 24 hours to complete. My vhd file was about 5.5 GiB. Not huge, but pretty big. I guess I have slow upload speed. After the upload completes some processing takes place on Amazon’s servers. This requires additional time. You monitor progress using ec2-describe-conversion-tasks. My first attempt seemed to get stuck. It never advanced beyond 6% complete.

For subsequent attempts I zipped the vhd file, uploaded it to S3 and then downloaded it to an EC2 instance I had provisioned with the command line tools. There I could un-zip the file and run ec2-upload-disk-image. That whole process, end to end, took about 5 hours so at least that was some improvement. My second effort spun up and I thought I was good to go.

Not so fast! It seemed now that even though the machine was running I had no way to connect to it. I had read in the documentation that Remote Desktop had to be enabled and that port 3389 needed to be opened on the Windows firewall. I had done all that. Still, no go.

For my next attempt I decided to have IIS started on the image so I could at least know that it was alive and communicating on the network. I also double-checked the remote connection settings, made sure that there were no conflicts on port 3389 and that it was definitely open on the Windows firewall.

This time I could see the web server but still couldn’t connect via RDP! To me that meant it had to be a firewall issue. After verifying that the EC2 security group had 3389 open I decided I would try again but this time I would turn the Windows firewall completely off. That worked! I was able to connect to my custom created instance using RDP.

Is there a better way to do this? Probably. However, at least now I know there is a way to achieve the goal! Of course I am not done yet. Make it work, make it right, make it fast!

For more about cloud computing with Amazon Web Services Learning Tree is developing a new course dedicated to that very topic!

Kevin Kell

Amazon Cloud Outage: The Post Mortem Continues

It has been a little over a week since the Amazon cloud outage. Pundits continue to weigh in and will likely do so for some time to come. An internet search for “Amazon cloud outage” returns over 450,000 hits, several thousand of which were in the last 24 hours. It seems there is plenty of blame to go around.

I had the good fortune to be teaching Learning Tree’s introductory Cloud Computing course last week in Los Angeles. Naturally this topic came up when we were discussing barriers to cloud adoption. One of the students offered an analogy which I thought was quite appropriate. While perhaps not perfect we can consider public clouds vs. on premise data centers as being roughly comparable to flying vs. driving. Statistically you are much safer flying than driving. Each time a plane crashes, however, it makes headline news because of the magnitude of the disaster. In contrast we hear very little about the countless traffic fatalities which occur on a daily basis.

Amazon has released their official response in “message 65648“. It seems that the root cause of the outage was failure of some Elastic Block Storage (EBS) volumes within a single Availability Zone in their US East Region. Last week Amazon notified, by email, all affected customers (including yours truly) and indicated that there would be a 10 day credit equal to 100% of the usage of EBS Volumes, EC2 and RDS instances within the affected Availability Zone. In my case that is acceptable. Businesses that depended on Amazon’s cloud for their revenue may be less easy to mollify.

What has become clear is that by moving to the cloud an organization is not absolved of the ultimate responsibility for ensuring that their systems perform. Some organizations, such as Netflix, were able to survive the outage (albeit not without some pain) by careful up front planning and architecture. For others the Amazon outage was disastrous. The key, it seems, was a healthy dose of paranoia about the cloud and proper disaster recovery and contingency planning right from the beginning. These are good lessons to learn and for many the lessons were learned the hard way.

This incident is certainly an embarrassment for Amazon. It will, perhaps, cause some to proceed more cautiously in adopting cloud technologies. It is doubtful, however, that there will be reversal in the trend for cloud adoption. The benefits of cloud computing continue to outweigh the risks for many organizations, especially if those risks are well-managed.

In fact, Forrester research estimates that the market for cloud services will grow from $41 billion in 2010 to over $240 billion by 2020. The Amazon incident is a setback, to be sure, but it is only a speed bump on the road to cloud computing. The experience will be used by Amazon and consumers of cloud services to build better systems improve their planning and take steps to ensure that something like this does not happen again.

So, I will continue to look at cloud computing solutions for use at Learning Tree and for my consulting clients. The genie is out of the bottle and once that has happened there is no going back. We are reminded, however, that disasters can and do occur. The cloud does not change that and the onus is still on system developers, administrators and owners to ensure fail-safe conditions subject to the organization’s Recovery Point and Recovery Time Objectives.

Kevin

Amazon Does It Again – Introducing CloudFormation!

One of the most exciting things about cloud computing is how the major providers continue to rapidly expand both the breadth and the depth of their offerings. Amazon, with the release of AWS CloudFormation, has raised the bar yet again.

CloudFormation gives developers and administrators an easy way to provision and manage resources from the suite of AWS products. This includes compute power (EC2), block storage volumes (EBS), relational database (RDS), messaging (SQS), monitoring (CloudWatch), load balancing and more. The ability to define entire infrastructures in this way greatly reduces the administrative overhead required in application development and deployment.

CloudFormation introduces the concepts of templates and stacks. Templates are simply text files formatted using the JavaScript Object Notation (JSON) to describe the solution stack requirements. These files can be stored in S3 or on a local hard drive and can be easily re-used and shared. Pre-defined templates based on open source applications allow you to get started quickly. These templates can be modified and custom templates can be created from scratch.

In the template you just specify the resources you want and describe their dependencies in a declarative manner. CloudFormation removes the complexity of figuring out the provisioning order and making the dependencies all work together. Solutions can be further customized by passing runtime parameters to the template when the stack is built. There is no additional charge for the CloudFormation service; you just pay for whatever resources you provision using the template.

Like other AWS products CloudFormation is accessible through an API, command line tools, or a web based Management Console. This screencast walks through using the Management Console to deploy a solution stack based on an existing template. Notice how easy it is to leverage multiple AWS services to create an integrated solution!

To learn more about the cloud offerings from Amazon and others you might like to attend Learning Tree’s introductory cloud computing course. Over three days you will be introduced to cloud computing concepts and you will gain understanding that will help you evaluate cloud computing now and in the future. The course is hands-on and assumes no prior experience with cloud computing.

Kevin

Amazon Mechanical Turk – Artificial Artificial Intelligence

One of the more interesting and unique products offered through Amazon Web Services (AWS) is Amazon Mechanical Turk. Perhaps more accurately described as “crowd computing” rather than “cloud computing”, Mechanical Turk, named after the famed fake chess-playing automaton, leverages the power of massive numbers of humans connected to the Internet to solve problems that require human intelligence.

For a simple example you may see an image in a YouTube video and you wonder as to the location where it was taken.

Figure 1 Does anybody knows where this location is?

This is difficult to enter into a search engine. But imagine you could somehow post this image and then instantly ask thousands of people if they recognize the place. This is the sort of problem that Mechanical Turk is geared towards solving. Of course there are other, more practical, examples as well, but they are not as much fun!

Amazon Mechanical Turk defines two roles: Requestor and Worker. The fundamental unit of work is a “Human Intelligence Task” (or HIT). A requestor can specify a HIT using a template and then publish that HIT for workers to see. Requestors create HITs and Workers work on them.

Becoming a Requestor is easy. All you have to do is sign up using your Amazon account. First, you need to buy some pre-paid HITs. Then you can create HITs using one of the existing templates or you can create your own template. Finally, you can publish your HITs. This allows Workers to respond to them at the price you have specified (usually a few cents per HIT).

Becoming a Worker is more difficult. You need to pass a test that shows, among other things, that you can look stuff up on Wikipedia. Then you get a rating which allows you to respond to HITs. As you respond to HITs successfully your rating will increase. Make a bunch of goofs and your rating goes down.

In this way, Requestors and Workers are brought together in a marketplace. On-demand services delivered at the going rate.  It is almost frictionless free enterprise.

In addition to the web based interface, Amazon Mechanical Turk also has a command line and an API interface. The API allows for applications to be written which can leverage the power of Mechanical Turk. Think of, for example, a smart phone application that allowed the user to take a snapshot and then upload the image as a HIT asking “what is this object?” or “who is this person?” It could be used while walking through a museum or while sitting in a café on Sunset Boulevard.

So, I guess the point of this article is that computers are not the only thing in the cloud. Humans are there too.

To get a good grounding in cloud computing fundamentals I recommend Learning Tree Course 1200 – Cloud Computing Technologies: A Comprehensive Hands-On Introduction.

Kevin

Amazon Moves Towards PaaS with Elastic Beanstalk

Elastic Beanstalk is a new offering from Amazon Web Services. It incorporates many characteristics of PaaS but retains much of the flexibility offered by IaaS. (Note: If you are not sure of the differences between PaaS and IaaS, please refer to Chris Czarnecki’s excellent article on the subject.)

Traditionally PaaS offers a highly productive environment for the developer. The trade-off is reduced flexibility and control over the application infrastructure. Although PaaS does lessen the administrative overhead compared to IaaS it also forces you to live with decisions pre-determined by the PaaS provider. This was sometimes seen as a drawback and is often a criticism of PaaS. Elastic Beanstalk addresses some of these concerns.

Currently in beta, Elastic Beanstalk allows Java developers to simply upload an application and it handles all the deployment, provisioning, load balancing, auto-scaling and health monitoring automatically. Elastic Beanstalk leverages existing AWS services but does not require the developer to be particularly familiar with the specifics of how they work. If needed, however, a developer can take control of any of the services using the management capabilities of Elastic Beanstalk. The developer has the ability to browse log files, monitor application health, adjust auto-scaling rules and setup email notifications through a management console. You can also specify EC2 instance types and select a specific database for storage. There is no additional charge for Elastic Beanstalk; you pay for the Amazon services as you use them, just as you normally would.

Developing and deploying an application for Elastic Beanstalk is pretty similar to developing and deploying an application for Google App Engine. The AWS Toolkit for Eclipse allows an AWS Java Web Project to be created and deployed to Elastic Beanstalk right from within the IDE. Just like the http://myapp.appspot.com URL in GAE an Elastic Beanstalk application is deployed to a custom URL of the form http://myapp.elasticbeanstalk.com. Check out this screencast from Amazon for a walkthrough of the process.

Elastic Beanstalk from Amazon is an example of how things are rapidly evolving and changing in the cloud. While many of the distinctions between the different cloud service offerings are perhaps blurring and shifting, it is still possible to understand cloud computing and the various provider products in terms of some fundamental concepts. To get a good grounding in those concepts consider attending Learning Tree’s introductory hands-on course in cloud computing technologies.

Kevin

Using the Amazon EC2 Command Line Tools and API

There are three ways to interact with Amazon EC2:

  1. Web based AWS Management Console
  2. Command line tools
  3. An API for programmers

The Web based console is very easy to use and you can (and should!) do a lot with it. There are times, however, where what you want to do is beyond what is currently possible with AWS console. Or you may need to do something that involves managing multiple instances in an automatic, repeatable and consistent manner. In these cases you need to use the other options.

The command line tools and API allow developers and operations people to program or script robust solutions that can leverage the IaaS that Amazon provides. These developer and operations roles (sometimes referred to collectively as “DevOps“) may be filled by technical folks internal to an organization or may be from third parties. Indeed there are numerous providers of value added services for managing and configuring EC2 environments. Typically these solutions are often custom applications which involve, among other things, calling into the API.

To get started using the command line tools you need to take a look at the documentation that Amazon provides. It is not necessary, in my opinion, to read it start to finish. You must, however, be at least somewhat familiar with what the commands are.

Then, you need a machine with the tools installed. One option is to download and install the tools on your own machine. Another option is to use one of the pre-configured Amazon Linux AMIs Amazon provides with the tools already installed.

In either case you will ultimately need to roll up your sleeves and get busy with the Windows or Linux command prompt. For one thing you will need to set up your machine so that it can securely access your account. This involves downloading a certificate and private key file and setting some environment variables to establish your identify and the location of the Java runtime. You also need to set your path to include tool script location.

Amazon provides both “API Tools” and “AMI Tools”. The API tools bring the API functionality to the command line. Essentially the commands are just lightweight wrappers that call into the API. They are implemented as cmd files in Windows or shell scripts on Linux machines. The AMI tools provide utilities for creating, bundling and uploading AMI’s. Unfortunately I’ve never been able to get the AMI tools to completely work on Windows.

To get started using the API you will need to download and install the appropriate SDK for your particular programming language. There are SDKs and/or libraries for Java, PHP, Python, Ruby and .NET. If you use Eclipse as your development environment you can also download and install the AWS Toolkit for Eclipse. Oh, by the way, you also do need to have a look at the documentation!

These screencasts demonstrate using the command line tools and the API.

If you want to learn more about how you can bring the power of the cloud to your organization please consider attending Learning Tree International’s Introduction to Cloud Computing course coming soon to a venue (hopefully) near you! Or, if you’d prefer, attend from the comfort of your own location via Learning Tree’s AnyWare system.

Kevin Kell

As cloud computing continues to make information technology headlines, vendors are aggressively promoting the many benefits it can provide organizations.  Our White Paper, Cloud Computing Promises: Fact of Fiction, addresses the claims and questions that are often raised in relation to cloud computing and provides a clear view of what the cloud can—and can’t—deliver in reality.

Amazon EC2 Infrastructure Fosters Platform as a Service Innovation

Commenting last week on Steve Balmer’s claims on the Microsoft Azure platform got me thinking about some of the differences between the main cloud providers. One of the major strengths of Amazon as a cloud provider is the wide range of services it provides ranging from servers, storage, messaging to payment services. Coupled to this is the flexible modes of accessing these services. Take EC2, servers can be provisioned using a browser based management tool, via command line tools and also programatically using Web services API’s. The fact that infrastructure such as servers can be provisioned and then de-provisioned programatically offers the scope for organisations to build high level tools to utilise and manage the Amazon cloud infrastructure.

Two examples of how the Amazon Infrastructure as a Service(IaaS) has been used to deliver a Platform as a Service(PaaS) are Cloud Foundry and heroku. Cloud Foundry is an enterprise Java PaaS. heroku is a cloud based Ruby PaaS . Both Cloud Foundry and heroku provide development and deployment environments for developers together with the ability to monitor and manage applications, automatically fixing failed servers and instances, and auto-scaling applications as the load varies.

The major benefit to developers using these two innovative platforms is that they can utilise all their existing skills (Java, Ruby), build applications using the tools they are familiar with and then seamlessly deploy these applications to a cloud to leverage the associated benefits transparently.

In summary, the above two examples highlight how Amazon’s flexible cloud infrastructure has enabled two organisations to build innovative PaaS businesses that will enable a wide base of developers to rapidly begin benefitting from cloud computing.

Chris


Learning Tree Logo

Cloud Computing Training

Learning Tree offers over 245 IT and Management courses, including over 10 courses on Cloud Computing and Virtualization.

Enter your e-mail address to follow this blog and receive notifications of new posts by e-mail.

Join 1,701 other followers

Follow Learning Tree on Twitter

Archives

Do you need a customized Cloud training solution delivered at your facility?

Last year Learning Tree held nearly 2,500 on-site training events worldwide. To find out more about hosting one at your location, click here for a free consultation.
Live, online training
.NET Blog

Follow

Get every new post delivered to your Inbox.

Join 1,701 other followers