Skip to main content

Dive into Cloud Patterns and Practices this summer

Explore and dive into Cloud Patterns and Practices this summer

Cloud Power

Windows Azure Platform

Interoperability

Cloud Patterns & Practices

BUILD - Discover how Windows 8 changes everything
Follow us in Dutch Facebook Twitter LinkedIn
or in French Facebook Twitter LinkedIn
Contest RulesPDF
Take the quiz Which federation providers are not capable to be used as authentication gateway on the Windows Azure Platform?

 
Explore and dive into Microsoft's Cloud Power
Everybody's talking about cloud computing. But what does it mean for IT? And why is Microsoft the company to follow? Microsoft is committed to leading the cloud story by having all its products aimed at the same cloud vision: effectively creating a whole spectrum of cloud solutions, aligned and integrated within a larger, so-called cloud continuum.

Cloud Power is the key name in driving the Microsoft cloud vision across all our solutions towards our partners and customers. It's the vision that sparks innovation with tools and solutions that lets you develop and deliver applications while using the tools, languages and products people already know. It gives your IT organization the power to focus on business instead of worrying about the plumbing behind it, saving you money, resources and enabling time to be spent elsewhere.

How does it work? A short video introduces the topic you want. After that, you have the chance to learn more about it depending on the time you have available or want to spend on it: half an hour, half a day or a full day. That way you can explore the presentation content in line with your personal timetable.

 
 

Dive into Cloud Patterns and Practices this summer

When designing and building architectures, architects need to be able to rely on a repository filled with commonly used patterns and best practices. Not only for avoiding pitfalls made by people before but also for saving time in building the solution and delivering value to your customers.

Building cloud-oriented solutions is not different as such. The paradigm is different and the patterns and practices used might be different as well, but the goals are still the same: avoiding mistakes, maximizing the potential of the architecture and delivering value to customers in a cost-effective way.

Are you ready to explore the Cloud Patterns and Practices? Have a look at our site and discover a handpicked choice of articles, white papers and videos about it.

Cloud Patterns and Practices Elevator Pitch

When designing and building architectures, architects need to be able to rely on a repository, filled with commonly-used patterns and best practices. Not only for avoiding pitfalls made by their predecessors, but also for saving time in building the solution and delivering value to their customers.

Building cloud-oriented solutions is not different as such. The paradigm is different and the patterns and practices used might be different as well, but the objectives are still the same: avoiding mistakes, maximizing the potential of the architecture and delivering value to customers in a cost-effective way.

As an architect, your main concern is assuring that the non-functional aspects of the solution are covered properly. The typical so-called Service Quality indicators that come to mind are availability, scalability, security, data integrity and interoperability, to name but a few.

The sections presented on this page provide an overview of some of the key patterns and best practices used in cloud computing to ensure that the non-functional needs of your solution are covered and how it can help you to build the right architectures.

 
 
 

In half an hour

As an architect, building corporate solutions is primarily based on covering the non-functional requirements of a solution. While the functional requirements are being captured by the business analyst, you have to design the solution in such a way that it maximizes its potential by covering the non-functional ones.

When looking at the different non-functional requirements available, security is no doubt number one. Being highly available and scalable come next, but are canceled out if your solution is not secure. Security can range from not only designing the proper authentication and authorization semantics, but also protecting against vulnerabilities such as denial-of-service attacks.

Microsoft products, including the Windows Azure Platform, support a whole range of different security protocols and mechanisms. One of the latest additions is the support for Claims-Based Security based on open standards. The Windows Azure Platform is no stranger to this and allows you to use Identity-related services to implement specific scenarios such as Single Sign On across local network and the Windows Azure Platform, amongst many others.

The following resources provide you with a high-level overview of how claims-based security works, along with how to use it to set up a single sign-on environment between on-premise and Windows Azure hosted applications.

 
   
 
 

In half a day

As an architect you constantly assess and validate the solution against the coverage of the non-functional requirements, making the necessary changes along the way. Making choices means selecting options, basically choosing the right pattern to cover the right requirement. However, not all patterns are compatible with each other due to the nature of the problem being solved, and as such it is very important to put some "big rocks" into the design, defining the key principles used within the solution.

These "big rocks" define the main characteristics profile of your solution when it comes to covering the non-functional requirements. Typical ones can be security, availability, scalability and data integrity, and others depending on the nature of your application and the nature of the environment in which it needs to be deployed, such as the cloud.

This section provides some of these "big rocks" when dealing with cloud-oriented solutions, with some of the highlights when it comes to the Windows Azure Platform. As such I would like you to start by viewing a video, which provides you with an excellent overview of the Windows Azure Platform that can be used to understand the following sections in the context of the platform.

Scalability

Scalability describes the ability of an application to match and adapt to an increasing demand, such as an increase in the number of users. Typical database servers are scaled up, whereas middle tiers are scaled out. In the cloud, you use the same principles, i.e. your storage is shared and typically scaled up while your specific instances provide the logic and the computation power and are configured for scale out.

Automatic scaling out or in is also referred to as elasticity. Elasticity describes the ability of a solution and underlying platform to match and adapt to an increasing demand dynamically and automatically. Elasticity is highly important when it comes to cloud solutions such as your typical pay-per-demand, hence the closer your number of load-balanced application instances is to the demand, the more cost effective your solution becomes.

Some interesting resources are available when it comes to achieving elasticity i.e. on demand scaling on the Windows Azure Platform:

Availability

Availability refers to the amount of time an application is capable of reliably servicing client requests and is a measure of how often the application is available for use. Clustering, load-balancing and retry mechanisms are typically used to ensure that the availability is properly implemented. Within Windows Azure, your applications are load-balanced and the storage used is on a shared SAN infrastructure that is backed up on many occasions.

An important aspect of availability, however, is the definition of the various Service Level Agreements and with cloud solutions this is no different and is something that needs to be taken into account. You can read what the different SLAs are for the Windows Azure Platform.

Security

Security is about controlling access to a variety of resources, such as application components, data and hardware, mostly based upon authentication, authorization, data protection and auditing.

For Microsoft, security is a highly important aspect of the solution and is something that should be taken into account from day one when designing solutions. Ideally it should become embedded within your Software Development Lifecycle and for this very reason, Microsoft has developed a methodology to support this, called the Security Development Lifecycle (SDL). You will find an overview of this and more details on the subject here.

 
   
 
 

In a full day

Designing a solution as an architect involves more than just security, availability and scalability. Depending on the constraints and requirements involved, others might have a higher priority than these. You might have to design a solution capable of interacting with third-party vendors, which would make interoperability more important, while scalability might be less important within a specific scenario.

General

Some interesting articles on the subject of different design patterns relating to cloud computing:

Availability, Scalability and Elasticity

Availability refers to the amount of time an application is capable of reliably servicing client requests and is a measure of how often the application is available for use, while scalability describes the ability of an application to match and adapt to an increasing demand, such as an increase in the number of users. Scaling out or in depending on incoming load is also referred to as Elasticity. Both topics are already mentioned on the half-day section of this page but additional information about how Windows Azure handles these can be found here and here.

Security

Security remains a key topic to discuss and is about controlling access to a variety of resources, such as application components, data and hardware. There are four concepts on which most security measures are based:

  • Authentication: Authentication is the process verifying the given credentials with a trusted authority such as a database or Active Directory.
  • Authorization: Authorization is the process of verifying that an authenticated identity has permission to access a particular resource.
  • Data Protection: Data protection is the process of providing data confidentiality, integrity and non-repudiation.
  • Auditing: Auditing is the process of logging and monitoring events that occur in a system and that are security-related.

In addition to the SDL approach defined by Microsoft in assessing the security of your system, there is specific guidance available when dealing with the Windows Azure as such. A bare minimum of security design should be ensured by applying the STRIDE approach, regardless of whether your solution is on-premise or in-cloud.

Performance

Performance and scalability are not interchangeable terms, but confusion between the two is easy. Performance and scalability are two distinct issues. Measuring the performance of an application when placed under ever-increasing loads determines the scalability of that application. When performance begins to fall below the stated minimum performance requirements, the limit of the application's scalability has been reached.

The Extreme Computing Group at Microsoft Research Labs now has a website running on Windows Azure devoted to Windows Azure performance information.

Manageability

Designing an application for manageability is primarily about providing an information infrastructure so that the application and all of its important supporting services and devices can be monitored for possible corrective and preventive action, including upgrading and patching, without losing out on other service quality indicators such as scalability and availability. Key techniques for achieving this include logging and instrumentation.

Interoperability

With respect to software, the term interoperability is used to describe the capability of different programs to exchange data via a common set of exchange formats, to read and write the same file formats and to use the same protocols. The lack of interoperability can be a consequence of a lack of attention to standardization during the design of a program and is usually not taken for granted in the non-standards-based portion of the computing world.

Microsoft is totally committed to interoperability and as such the Windows Azure platform has been built from the ground up with interoperability in mind, offering different choices to architects. It allows them to use multiple languages, runtimes (.NET, PHP, Ruby, Python or Java) and development tools (Visual Studio or Eclipse) for designing and building applications that run on Windows Azure.

But it also allows the platform to be treated like a black-box, providing a number of services and capabilities using a standard REST-based API. More details about this API. Another approach is of course to use Windows Azure AppFabric, which can be used for interoperability scenarios.

You can start architecting your own applications and deploy them on Windows Azure in 3 simple and easy steps:

1. Download the Tools:

Get Visual Studio Express and the Windows Azure Tools for Visual Studio to start building and debugging applications for the Windows Azure Platform. If you have already Visual Studio installed you can download the tools directly from Tools for Azure.

2. Setup an Account:

Set up an account and obtain a free subscription for accessing the online portals for Windows Azure, SQL Azure and Windows Azure AppFabric. You can learn more about the accounts or you can sign up directly and get the trial.

3. Create your First application and Deploy it on the Windows Azure Platform:

First learn how to create a simple ASP.NET application in Visual Studio for Windows Azureon your local machine. Once successfully created, learn how to deploy this application on the Windows Azure Platform.

When all steps are executed successfully you should have your first application running on the Windows Azure Platform!