Design Patterns for Cloud-Hosted Applications
The patterns & practices group at Microsoft recently released a guide with suggested solutions and patterns suitable when implementing cloud-hosted applications. The guide discusses the problems different patterns address together with benefits and possible downsides. The ambition from the group has been to provide guidance for distributed systems irrespective of cloud platform even though the examples given are targeting Windows Azure.
Using feedback from the developer community, the group has identified eight categories of problems they believe cover the most common areas in cloud application development:
- Data Management
- Design and Implementation
- Management and Monitoring
- Performance and Scalability
For each of these categories, the group have created guidance and documented common patterns to help developers in solving problems they regularly encounter.
The guide contains ten primer and guidance topics providing basic knowledge and good practice techniques, each covering one aspect of application development and targeting one of the categories. Topics covered include Asynchronous Messaging, Caching and Data Consistency.
Also included are 24 design patterns that the group have found useful in cloud-hosted applications, each pattern belonging to one or more of the categories described. Examples of patterns included are Compensating Transaction, Command and Query Responsibility Segregation (CQRS) and Pipes and Filters. Each pattern is described in a common format with the context and problem where the pattern applies, the solution given by the pattern together with issues and considerations for applying the pattern. An example for the Azure is also provided for each pattern.
To demonstrate the usage of the design patterns described the group has created ten sample applications with all source code available for download. The samples include one application concerning competing consumers retrieving messages from a service bus and one using filters simulating a pipeline.
The P & P group emphasizes that the examples are simplified and not designed for production usage.
Windows Azure is the cloud platform provided by Microsoft.
Shane Hastie on Distributed Agile Teams, Product Ownership and the Agile Manifesto Translation Program
Shane Hastie Apr 17, 2015