Example: air traffic controller

Cloud Application Architecture Guide

Application Architecture CloudGuideiPUBLISHED BYMicrosoft PressA division of Microsoft CorporationOne Microsoft WayRedmond, Washington 98052-6399 Copyright 2017 by Microsoft CorporationAll rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the Press books are available through booksellers and distributors worldwide. If you need support related to this book, email Microsoft Press Support at Please tell us what you think of this book at book is provided as-is and expresses the author s views and opinions. The views, opinions and information expressed in this book, including URL and other Internet website references, may change without examples depicted herein are provided for illustration only and are fictitious.

Cloud Application Architecture Guide This guide presents a structured approach for designing cloud applications that are scalable, resilient, and highly available. The guidance in this ebook is intended to help your architectural decisions regardless of your cloud platform, though we will be using Azure so we can share

Tags:

  Cloud

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of Cloud Application Architecture Guide

1 Application Architecture CloudGuideiPUBLISHED BYMicrosoft PressA division of Microsoft CorporationOne Microsoft WayRedmond, Washington 98052-6399 Copyright 2017 by Microsoft CorporationAll rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the Press books are available through booksellers and distributors worldwide. If you need support related to this book, email Microsoft Press Support at Please tell us what you think of this book at book is provided as-is and expresses the author s views and opinions. The views, opinions and information expressed in this book, including URL and other Internet website references, may change without examples depicted herein are provided for illustration only and are fictitious.

2 No real association or connection is intended or should be and the trademarks listed at on the Trademarks webpage are trademarks of the Microsoft group of companies. All other marks are property of their respective Editor: Christopher BennageDevelopmental Editors: Mike Wasson, Masashi Narumoto and the Microsoft Patterns and Practices teamEditorial Production: Phil EvansCopyeditor: Jamie LetainiiContentsOverview .. viiIntroduction .. viiiChapter 1: Choose an Architecture style .. 1A quick tour of the styles .. 2 Architecture styles as constraints .. 4 Consider challenges and benefits .. 5 Chapter 1a: N-tier Architecture style .. 6 When to use this Architecture .. 7 Benefits .. 7 Challenges .. 7 Best practices.

3 8N-tier Architecture on virtual machines .. 8 Additional considerations .. 9 Chapter 1b: Web-Queue-Worker Architecture style .. 10 When to use this Architecture .. 11 Benefits .. 11 Challenges .. 11 Best practices .. 11 Web-Queue-Worker on Azure App Service .. 12 Additional considerations .. 12 Chapter 1c: Microservices Architecture style .. 14 When to use this Architecture .. 15 Benefits .. 15 Challenges .. 16 Best practices .. 17 Microservices using Azure Container Service .. 19 Chapter 1d: CQRS Architecture style .. 20 When to use this Architecture .. 21 Benefits .. 21 Challenges .. 22 Best practices .. 22 CQRS in microservices .. 22 ContentsiiiChapter 1e: Event-driven Architecture style .. 24 When to use this Architecture .

4 25 Benefits .. 25 Challenges .. 25 IoT architectures .. 26 Chapter 1f: Big data Architecture style .. 27 Benefits .. 29 Challenges .. 29 Best practices .. 30 Chapter 1g: Big compute Architecture style .. 31 When to use this Architecture .. 32 Benefits .. 32 Challenges .. 32 Big compute using Azure Batch .. 33 Big compute running on Virtual Machines .. 33 Chapter 2: Choose compute and data store technologies .. 35 Chapter 2a: Overview of compute options .. 37 Chapter 2b: Compute comparison .. 39 Hosting model .. 39 DevOps .. 40 Scalability .. 41 Availability .. 41 Security .. 42 Other .. 42 Chapter 2c: Data store overview .. 43 Relational database management systems .. 44 Key/value stores .. 44 Document databases.

5 45 Graph databases .. 46 Column-family databases .. 47 Data analytics .. 48 Search Engine Databases .. 48 Time Series Databases .. 48 Object storage .. 49 Shared files .. 49 Chapter 2d: Data store comparison .. 50 Criteria for choosing a data store .. 50 General Considerations .. 50 Relational database management systems (RDBMS) .. 52 Document databases .. 53 Key/value stores .. 54 ContentsivGraph databases .. 55 Column-family databases .. 56 Search engine databases .. 57 Data warehouse .. 57 Time series databases .. 58 Object storage .. 58 Shared files .. 59 Chapter 3: Design your Azure Application : design principles .. 60 Chapter 3a: Design for self healing .. 62 Recommendations .. 62 Chapter 3b: Make all things redundant.

6 64 Recommendations .. 64 Chapter 3c: Minimize coordination .. 66 Recommendations .. 67 Chapter 3d: Design to scale out .. 69 Recommendations .. 69 Chapter 3e: Partition around limits .. 71 Recommendations .. 72 Chapter 3f: Design for operations .. 73 Recommendations .. 73 Chapter 3g: Use managed services .. 75 Chapter 3h: Use the best data store for the job .. 76 Recommendations .. 77 Chapter 3i: Design for evolution .. 78 Recommendations .. 78 Chapter 3j: Build for the needs of business .. 80 Recommendations .. 80 Chapter 3k: Designing resilient applications for Azure .. 82 What is resiliency? .. 82 Process to achieve resiliency .. 83 Defining your resiliency requirements .. 83 Designing for resiliency .. 87 Resiliency strategies.

7 87 Resilient deployment .. 91 Monitoring and diagnostics .. 92 Manual failure responses .. 93 Summary .. 94 Chapter 4: Design your Azure Application : Use these pillars of quality .. 95 Scalability .. 96 Availability .. 98 Resiliency .. 99 ContentsvManagement and DevOps .. 100 Security .. 101 Chapter 5: Design your Azure Application : Design patterns .. 103 Challenges in Cloud development .. 103 Data Management .. 104 Design and Implementation .. 104 Messaging .. 105 Management and Monitoring .. 106 Performance and Scalability .. 107 Resiliency .. 108 Security .. 109 Chapter 6: Catalog of patterns .. 110 Ambassador pattern .. 110 Anti-Corruption Layer pattern .. 112 Backends for Frontends pattern .. 114 Bulkhead pattern.

8 116 Cache-Aside pattern .. 119 Circuit Breaker pattern .. 124 CQRS pattern .. 132 Compensating Transaction pattern .. 139 Competing Consumers pattern .. 143 Compute Resource Consolidation pattern .. 148 Event Sourcing pattern .. 156 External Configuration Store pattern .. 162 Federated Identity pattern .. 170 Gatekeeper pattern .. 174 Gateway Aggregation pattern .. 176 Gateway Offloading pattern .. 180 Gateway Routing pattern .. 182 Health Endpoint Monitoring pattern .. 185 Index Table pattern .. 191 Leader Election pattern .. 197 Materialized View pattern .. 204 Pipes and Filters pattern .. 208 Priority Queue pattern .. 215 Queue-Based Load Leveling pattern .. 221 Retry pattern .. 224 Scheduler Agent Supervisor pattern.

9 227 Sharding pattern .. 234 Sidecar pattern .. 243 ContentsviStatic Content Hosting pattern .. 246 Strangler pattern .. 250 Throttling pattern .. 252 Valet Key pattern .. 256 Chapter 7: Design review checklists .. 263 DevOps checklist .. 264 Availability checklist .. 270 Scalability checklist .. 276 Resiliency checklist .. 276 Azure services .. 286 Chapter 8: 291 Chapter 9: Azure reference architectures .. 292 Identity management .. 293 Hybrid network .. 298 Network DMZ .. 303 Managed web Application .. 306 Running Linux VM workloads .. 310 Running Windows VM workloads .. 315 ContentsviiCloud Application Architecture GuideThis Guide presents a structured approach for designing Cloud applications that are scalable, resilient, and highly available.

10 The guidance in this ebook is intended to help your architectural decisions regardless of your Cloud platform, though we will be using Azure so we can share the best practices that we have learned from many years of customer the following chapters, we will Guide you through a selection of important considerations and resources to help determine the best approach for your Cloud Application :1. Choosing the right Architecture style for your Application based on the kind of solution you are Choosing the most appropriate compute and data store Incorporating the ten high-level design principles to ensure your Application is scalable, resilient, and Utilizing the five pillars of software quality to build a successful Cloud Applying design patterns specific to the problem you are trying to Cloud is changing the way applications are designed.


Related search queries