In software engineering, a design patternis a general repeatable solution to a commonly occurring problem in software design. A design pattern isnt a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
Using that approach for the cloud, in Cloud Computing Design Patterns, authors Thomas Erl, Robert Cope and Amin Naserpour have written a superb book that has no filler and fully stocked with excellent and invaluable content.
The authors use design patterns to refer to different aspects of cloud architectures and its design requirements. In the cloud, just as in software, design patterns can speed up the development process by providing tested, proven development paradigms.
The book contains over 100 different design pattern scenario templates that are common to a standard enterprise cloud roll-out. Each scenario uses a common template which starts with a question or specific requirement. It then details the problem, solution, application and the mechanisms used to solve the problem.
The authors build on the notion that for anyone who wants to architect a large cloud solution, they need to have a broad understanding of the many factors involved with the real-world usage of cloud services.
Because cloud services are so easy to deploy, they are often incorrectly misconfigured during roll-out and deployment. The authors write that its crucial have a strong background in cloud services before doing any sort of a rollout. Because it's often so easy to deploy cloud services, this results in far too many failed cloud projects. And when the project is poorly implemented, it can actually cause the business to be in a far worse point from where it was before the cloud rollout.
The authors deserve credit for writing a completely vendor agnostic reference, even though there are many times you would appreciate it if they could suggest a vendor for a specific solution.
The books 10 chapters discuss the following areas:
Chapter 1: Introduction
Chapter 2: Understanding Design Patterns
Chapter 3: Sharing, Scaling and Elasticity Patterns
Chapter 4: Reliability, Resiliency and Recovery Patterns
Chapter 5: Data Management and Storage Device Patterns
Chapter 6: Virtual Server and Hypervisor Connectivity and Management Patterns
Chapter 7: Monitoring, Provisioning and Administration Patterns
Chapter 8: Cloud Service and Storage Security Patterns
Chapter 9: Network Security, Identity & Access Management, and Trust Assurance Patterns
Chapter 10: Common Compound Patterns
Some of the more interesting patterns they detail are:
- Hypervisor clustering – how can a virtual server survive the failure of its hosting hypervisor or physical server?
- Stateless hypervisor – how can a hypervisor be deployed with a minimal amount of downtime, while allowing for quick updating and upgrading?
- Trusted platform BIOS – how can the BIOS on a cloud-based environment be protected from malicious code?
- Trusted cloud resource pools – how can cloud-based resource pools be secured and become trusted?
- Detecting and mitigating user-installed VMs – how can user installed VMs from non-authorized templates be detected and secured?
The book is replete with these scenarios, and each scenario includes downloadable figures that effectively illustrate the mechanisms used to solve the problem.
Chapter 3 provides a number of first-rate architectural ideas on how to design a highly resilient cloud solution. Much of the promise of the cloud is built on scalability, elasticity and overall optimization. These chapters show how to take those possibilities from conceptual to a working implementation.
Cloud failures are inevitable and chapter 4 details how to build failover, redundancy and recovery of IT resources for the cloud environment.
Chapter 9 is particularly important, as far too many designers think that since the underlying cloud abstraction layer is highly secure, everything they build on top of that will have the same level of security. The book details a number of design patterns that are crucial to ensuring the cloud design is securing that data at rest and is resistant against specific cloud attacks.
With a list price of $49.99, the book is a bargain considering the amount of useful information the book provides. For anyone involved with cloud computing design and architecture, Cloud Computing Design Patterns, is an absolute must read.
Reviewed by Ben Rothke