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.
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
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 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.
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.
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
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!