VMWare Announce Future Computing Vision: Its Cloudy !

This week VMWorld 2010 is being hosted in San Francisco. VMWare have presented their new vision for enterprise computing. To say it is cloud focused is an understatement. Their vision can be simply states as “Move everything to the cloud”. By this they mean not only applications and associated services but also desktop environments and local data centers.

This message will no doubt create a lot of debate and scepticism but I for one strongly agree with their strategy. To support this VMWare have announced a series of products to support it and their vision. Key to this strategy is not the elimination of IT departments, rather their evolution to provide “IT as a Service”. By this they see the IT department being able to dynamically provide the necessary resources for user and business needs.

The new VMWare product suite announces VMWare View (v4.5) which deliver personalized desktops as a managed service. This product enables the central provision and management of thousands of users with greater control and security than traditional approaches.Cost savings of upto 50% per desktop are quoted by VMWare.

Security is a major concern and VMWare address this using vShield Endpoint enabling for example antivirus protection to be centralized. A desktop provided as a service also means that application and data delivery will come from a number of sources, both public and private clouds. The Horizon product provides a secure user identity management capability for working in the cloud enabling a transparent single sign-on capability.

In summary, the announcements from VMWare this week are incredibly exciting. They now have the capability of revolutionizing the way all aspects of IT is delivered. Organisations can become more efficient, respond to new opportunities faster and scale to their market demands with seamless effort. Key to this is the IT department – or more importantly the evolution of the IT department to leverage Cloud Computing. The products and tools are now available, the knowledge and skills can be rapidly acquired from effective hands-on training such as Learning Tree’s intensive vendor neutral Cloud Computing course.

Chris

Virtually Adopting the Cloud

Virtualization technology is mainstream for many organisations these days. Not only does it streamline management of IT resources, it also makes more efficient use of existing and new IT infrastructure, improves reliability and availability whilst reducing administration and improving deployment times. Many hosting providers are now offering virtual servers as they adopt this technology to gain the benefits I mention above. As a result they are often able to pass on cost savings to their customers.

Followers of my blogs will recognise that in previous posts I have highlighted some of the above benefits as advantages to be gained from adopting Cloud Computing too. This should come as no surprise as virtualization is one of the basic building blocks upon which Cloud Computing is built. Wether a public, private or hybrid cloud, independent of vendor, all make use of virtualization.

In many ways, Cloud Computing can be considered as an extension of virtualization technology, building functionality around and on top to simplify the provision and management of IT, and so much more. On a recent teach of the Learning Tree Cloud Computing course, an attendee suggested their organisation had adopted Cloud Computing because they were using virtualization technology (VMWare in this case). Just using virtualization technology on its own is not cloud Computing. By the end of the course the attendee could see the clear distinction yet close relationship between these technologies. The misunderstanding is very easy to make, and that’s why the Learning Tree course not only examines Cloud Computing and the products from many vendors in detail , it also explains the underlying technologies such as virtualization and Web services so attendees can really place these technologies into the context of Cloud Computing

Chris

What You Need To Know About Implementing Virtualization in the Workplace

Virtualization in IT departments has been attributed to gains in efficiency, increased effectiveness, cost savings, and potency in reducing server and desktop “sprawl”.  This White Paper provides an introduction, as well as details on configurations, benefits and how to select a virtualization platform based on your needs. Chapters include Virtualization on the Desktop, Virtualization in the Server Room, Environmental, Management and Service Benefits and the Impact on End Users.  Download your copy today!

Red Hat’s PaaS Strategy Avoids Vendor Lock-In

Red Hat have been positioning themselves over the last two years as a cloud product provider. Programs such as their partner program have provided customers with a level of confidence that their partners can deliver safe, scalable and highly supported cloud environments. Last week they announced a comprehensive Platform as a Service (PaaS) cloud strategy, so I was interested to see what this is all about.

Claiming to be the only vendor capable of delivering an open source flexible cloud stack, including operating system, middleware and virtualization. Red Hat PaaS allows organisations, cloud providers and Software as a Service(SaaS) vendors to take existing applications and develop new applications then deploy them to a wide range of public and private clouds.

The PaaS is built around the proven JBoss enterprise server. This enables developers to build applications using frameworks and programming languages of their choice including Java, Groovy and Ruby. JBoss developer studio provides a comprehensive development environment for building and deploying applications to cloud instances. A key feature is that developers can leverage their existing skill set and do not have to learn new API’s to work with the Red Hat PaaS.

For deployment, JBoss provides cloud images that are available through a number of cloud providers as well as being able to run on private clouds. Examples of where the images can be deployed include Red Hat Enterprise Virtualization, Amazon EC2 and Windows Hyper-V. A wide variety of options here offers organisations the ability to deploy existing applications to the cloud without having to rewrite them.

In summary, this is a welcome development into widening the choices available to people moving to the cloud. The reality is that the offering from Red Hat is a serious choice for developers working in the Java or Ruby worlds. If that’s you, then vendor lock-in for a cloud provider is avoided using the Red Hat PaaS for deployment. If you would like to find out more about PaaS offerings from other vendors and evaluate them then consider taking the Learning Tree Cloud Computing course. The course explains the technology and evaluates vendor offerings in a vendor neutral way.

Chris

Azure for New Projects

I have been hearing a lot of comments lately about Microsoft Azure. Some of what I’ve heard has to do with the perceived pain of migrating existing ASP.NET applications. I know Microsoft says it is supposed to be easy but the fact is that there are some new skills required. Most likely there will be some code changes, even if they are minimal. Additionally there are questions as to the cost effectiveness of using Azure to host a single website for a small to medium business. Whether or not migration of an existing application to Azure is appropriate (both from a business/economic and a technical perspective) will likely remain a subject of discussion for some time.

For this article, though, let’s just consider the other class of applications – new applications – that could be developed for Azure. Certainly there will be new applications developed going forward. Besides the usual differences between PaaS and IaaS, what does Azure give us that an ASP.NET solution deployed to an Amazon EC2 instance, for example, might not?

Most new applications begin with a consideration of architecture. There should be a clear separation between well-defined logical layers. When developing a new application we should almost always be thinking in these terms. Does Azure offer any benefits or options over a traditional solution stack based on .NET, IIS, SQL Server and Windows?

Let’s consider three possible layers in an n-tier model:

  1. The Presentation Tier:
    Well, not really. You will still have to implement this yourself according to the best practices of the particular framework you are going to target. An Azure Web Role will still have basically the same presentation semantics as a traditional .NET Web Forms or MVC application.  
  2. The Business Tier:
    With web and worker roles Azure actually does provide us with a pretty nice abstraction that can help us make a clean separation between presentation and business tiers. Putting the business logic into worker roles, for example, may make sense from both an architectural and a performance perspective.
  3. The Data Tier:
    With Azure we have options on how we could store our data. Do we need the acid properties of a relational database or would an eventually consistent representation of the data be okay for our application? Note that the choice here is directly tied to cost: if we need a relational database in an Azure solution we have to pay extra for it.

We must also consider scalability right from the outset. What is the probability that our application may have to grow to “Internet Scale”? Are we likely to become the next Facebook? What is the downside if we need to scale quickly and cannot? Scale is much more achievable if it is considered as part of the original design.

Azure does offer some attractive alternatives for new application development. If nothing else it should give the system architect an opportunity to think “outside the box”. Azure is a little different than traditional ASP.NET and there is a bit of a learning curve to climb. Consider attending Learning Tree’s Azure programming course to speed your ascent!

Kevin

More Than A Million Reasons the Cloud May Be Safe

I am back on the theme of cloud security. Why cloud security again ? Because cloud security raised its head again last week on a consultancy assignment I undertook. My client requires a new business application. This is available as Software as a Service(SaaS), but can also be purchased as a self hosted application. On the analysis I provided, my client could see many business advantages that a cloud solution could provide them – significant cost savings, transparent scalability, an ability to improve business process efficiency, more effective use of staff time …. the list continued. On the downside, security of the cloud was the factor that was pulling the company away from the cloud.

When I questioned which aspects of security were the primary concerns they listed data privacy and access control and then added availability and reliability. Ok, I know these are not all security but they were perceived as security issues by my client. I know from other consulting assignments and also from teaching the Learning Tree Cloud Computing course that many people have exactly these concerns and see them as a barrier to cloud adoption.

As an example of SaaS that works in a secure, highly available and reliable manner I provided the example of SalesForce.com. Here is an organisation that has been providing SaaS for over 10 years. This company has over a million users, all of who have data that is stored securely, and accessed with high availability and reliability. They have major customers such as Starbucks and Cisco. SalesForce.com show their availability, reliability and performance statistics to all users in real time – an approach that builds confidence based on transparency. The reason I use SalesForce.com as an example is that they prove that Cloud Computing works – over a million user cannot be wrong surely ?

Now, just because SalesForce.com works does not mean everything cloud related will work too. However, they are an example of a company doing things incredibly well and providing major benefits to their customers. There are many other cloud providers who do similar great things. The key in selecting a Cloud Computing provider is understanding the cloud and knowing what questions to ask of a provider. Its this kind of knowledge that is gained in Learning Tree’s Cloud Computing course which provides a vendor neutral technical and business view of Cloud Computing.

Chris

Optimizing Windows Azure Services using WCF, REST and JSON

When XML was first proposed it must have been a spoof.  The problem is, nobody got the joke.  Let’s say we had a database of pets and we wanted to export some data.  One choice could be a comma-separated file.  The data might look something like this:

The first row is for the headers.  If someone decided to repeat the headers before every row, everyone would think they were crazy.  The genius of XML is not that the headers are repeated with every row.  Rather the headers are repeated with every row twice.  Here’s the same data as XML:

For more evidence the XML people were joking, look at the namespaces in the screenshot above.  I’m sure there were two guys in a bar one night trying to figure out what crazy thing to suggest next and one said, “Hey, let’s tell them namespaces should be written in the form of URL’s”.  Then the other guy laughed and said, “Yeah, and we’ll call them URI’s.  That would confuse everyone!”.  They had a good laugh, ordered another round and since then the rest of us have been confused.

When moving to Azure, we’re likely to create services using WCF.  WCF is infested with XML.  It is used for data transport, for service description and for configuration.  Configuration in XML, that’s another good one.  Luckily, we can get rid of it all.  Let’s see how.

To get rid of the configuration, in Visual Studio right-click on the service and select View Markup.  Then add the code that is highlighted in the screenshot below:

Now the service configuration can be deleted from the Web.config file (no joke).

Next use a different transfer format.  It would be too old-fashioned to use CSV, so we’ll use Json.  To do that, add the [WebGet] attribute to the service methods as shown below.  Notice the ResponseFormat property is set to Json and the return type is just a generic List of Pet objects.  That’s it.

Below is what the Json data looks like:

Now the headers are only sent once with every row :)

At the client we don’t need any configuration either.  Just invoke the service via Http.  The code sample below is from a Silverlight application, but any application that can make an Http request can call the service.

Consuming the Json is easy thanks to the DataContractJsonSerializer class in .NET.  Check out the code below.  Just take the response and convert it back into Pet objects at the client.  There’s no WSDL, no SOAP, no service references, no proxies or client configuration.

Getting rid of the XML makes services more efficient, easier to write and easier to use.

The only downside I can think of is fewer billable hours.  For consultants like me, that might be a big problem.  Hey, come to think of it, maybe they weren’t joking after all.

We cover this and lots of other cloud-related coding in Learning Tree course 2602: Windows® Azure™ Platform Introduction.

Doug

New Learning Tree .NET Course for Experienced .NET Developers

I’m the technical editor on a new Learning Tree course.   It is course 2620: .NET 4 Programming for Existing .NET Developers.  The course is not specifically about cloud development.  However, ASP.NET and other .NET developers working on cloud-based applications would certainly be interested.

The course is unique in a number of ways.  First, the author is one of our French instructors, Gérard Frantz. Gérard has worked for Learning Tree since 1992 and teaches practically all of our .NET courses, as well as courses in other curricula.  For many years, he’s also been translating courses into French, and he has a very active consultancy in Paris.

Course 2620 is also our first 2-day .NET course.  The good thing about a 2-day course is it forces us to prioritize.  I think the topics we chose are those that would be most likely used by experienced .NET 2 developers looking to upgrade to .NET 4.  These topics include new language features in C# and VB, Entity Framework 4, PLINQ, ASP.NET 4 new features, Silverlight and more.

This course is targeted specifically at experienced .NET developers.  This will allow us to get started on new .NET features right away without covering the basics.  We can’t waste any time given that we only have two days.

I also really like the case study Gérard has chosen.  We will start with the finished version of a case-study from another class and one-by-one add new .NET features   that make the program better and easier to maintain.  This seems to be a real world scenario.  Many of us have existing .NET applications that we’d like to improve.

Anyway, the course should be released at the end of the year.  I’ll post an update when the brochure page is made available on the Web.  In the mean time, you should come to Learning Tree course 2602: Windows® Azure™ Platform Introduction.

Doug

Is Azure the Only Cloud Option for .NET Developers ?

On a consultancy assignment last week my client was considering moving their ASP.NET deployment to the cloud but was a little concerned about their lack of knowledge of Azure. This is a valid concern and knowledge of Azure is required. However, the really interesting point to me was that the assumption was that Azure was the ONLY cloud option available to .NET developers wishing to deploy to the cloud.

For developers working with ASP.NET, deployment will typically be to servers running Windows Server, IIS and SQL Server database. The versions may vary but the basic configuration will be the same. What my consultancy assignment highlighted to me was that many .NET development teams are not aware that there are many cloud providers that support the exact configuration I have described above. For example, Amazon AWS provides a number of servers preconfigured with Windows Server, IIS and SQL Server, in their various versions and off the shelf. This provides organisations with an instantaneous, self provisioning cloud solution that exactly matches their current configuration. In addition the software requires no modification at all to run in the cloud environment as well as flexibility, for instance using Oracle, DB2 or MySQL rather than SQL server.

In addition to Amazon AWS there are many other service providers with cloud based solutions appropriate to .NET developers such as Rackspace.

So in summary, Azure is one of many cloud computing options available to .NET developers, not the only one. Which one to choose is both a technical and a business decision and requires a core knowledge of Cloud Computing to make the correct choice. Its this kind of scenario which we discuss in the Learning Tree Cloud Computing course I wrote for Learning Tree.  Written from a vendor independent position, it enables attendees to make their choice based on informed decisions.

Chris

Elastic IP in Amazon EC2

As part of the EC2 service Amazon offers a feature called “Elastic IP Addresses” (EIP). Exactly what are these and how can we use them to our advantage?

The idea behind Elastic IPs (which really are static addresses) in AWS is that you can reserve an IP address.  Then you can assign that IP address to any AMI instance that you have running. The assignment can be changed to a different instance at any time if it suits your purposes.

According to Amazon this feature is designed for “dynamic cloud computing”. Once an EIP has been associated with an instance it remains tied to that instance until you decide to release it. EIPs can be assigned to or released from a running instance programmatically, with command line tools or via the browser based console.  You pay for an EIP when it is not associated with an instance but not when it is.

Why might this be useful? Well, for one thing, it allows considerable flexibility in implementing a web-based solution. Instance failures can be handled by simply remapping the EIP to any healthy instance you control. This removes the need to wait for someone to possibly have to replace hardware. There is also no delay as would be the case if you had to use a new IP address and have that propagate through DNS. Finally, you have control over the specific technology you use to implement your solution. You can change your solution stack at any time and not disrupt your customer’s ability to connect to your site.

An additional benefit that EIP gives you is the ability to configure for reverse DNS lookup. This is recommended if you intend to send email from your account. To limit spam Amazon, by default, puts limits on the amount of email that can be sent from EC2 accounts. Providing EIPs and the associated domain name can reduce the chance that your emails will be flagged as spam (unless, of course you violate the terms of service!).

This screencast shows how to use Amazon Elastic IPs addresses to flexibly manage a website in your own domain:

http://www.youtube.com/watch?v=oEjtV8z1IdM

There are certainly lots of features to explore and exploit in EC2 and AWS. By utilizing this infrastructure (IaaS) effectively the developer gains a lot of flexibility and control when implementing a solution. In Learning Tree’s Cloud Computing course we consider IaaS in context with the other services defined in the SPI model (Software, Platform and Infrastructure as a Service).

Kevin

Comparing PaaS and IaaS

One of the most common questions I am asked when consulting or teaching Learning Tree’s Cloud Computing course is “What is the difference between Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). This is an excellent question that the cloud computing vendors do little to help clarify.

Let’s consider IaaS first…
As the name suggests, what is provided here is an infrastructure delivered as a service. This includes hardware (servers, networks, load balancers etc) and software (operating systems, databases, application servers etc). The largest provider of IaaS is Amazon AWS and they have a wide variety of hardware and software combinations to choose from.

Now lets consider PaaS…
What we are gaining here is a platform as a service. This includes hardware (servers, networks, load balancers etc) and software (operating systems, databases, application servers etc). There are a number of PaaS providers including Google App Engine, Microsoft Azure and Salesforce.com’s Force.com.

Is the difference clear now ?
I thought not. On the surface the feature set of both IaaS and PaaS are the same but delving a little further a major difference is the amount of control a user has over the service. Take for example Microsoft Azure. Using Azure, the user has no control over the operating system, security features or the ability to install software applications – other than your own applications developed specifically for Azure. The same can be said for Google App Engine and Force.com. All operating system updates, versions, patches, security etc are controlled and implemented by the PaaS vendor.

Now considering IaaS. With IaaS, the user selects a configuration which defines server size, operating system, application software etc and then has complete responsibility for the maintenance of the system. If an operating system upgrade is required – its your responsibility. A security patch – its your responsibility. Want to install a new application or a database – feel free, its your server.

So in summary…
A major difference between IaaS and PaaS is the amount of control over the system available to users of the services. IaaS provides total control, PaaS typically provides no control. This also means virtually zero administration costs for PaaS whereas IaaS has administration costs similar to a traditional computing infrastructure.

There are many other differences between IaaS and PaaS of course. It is these kind of things that we investigate and evaluate as well as provide hands-on experience of in the Learning Tree Cloud Computing course.

Chris

Next Page »