2.2.3 Cloud Design Patterns (Microsoft Azure)
Total Page:16
File Type:pdf, Size:1020Kb
Cloud Computing Patterns Identification, Design, and Application Von der Fakultät für Informatik, Elektrotechnik und Informationstechnik der Universität Stuttgart zur Erlangung der Würde eines Doktors der Naturwissenschaften (Dr. rer. nat.) genehmigte Abhandlung Vorgelegt von Christoph Fehling aus Hannover Hauptberichter: Prof. Dr. Dr. h. c. Frank Leymann Mitberichter: Univ.Prof. Dr. Schahram Dustdar Tag der mündlichen Prüfung: 07.10.2015 Institut für Architektur von Anwendungssystemen der Universität Stuttgart 2015 Contents List OF AcrONYMS 9 Zusammenfassung 13 AbstrACT 15 1 INTRODUCTION 17 1.1 Terminology and Conventions . 19 1.1.1 Patterns and Pattern Languages . 19 1.1.2 Cloud Applications and Cloud Providers . 20 1.2 Problem Domain and Contributions . 21 1.2.1 Architectural Baseline of Cloud Computing . 22 1.2.2 Cloud Computing Patterns . 24 1.2.3 Cloud Computing Pattern Language . 29 3 Contents 1.2.4 Design Method for Cloud Applications . 31 1.3 Pattern Engineering Process . 33 1.4 Chapter Summary . 35 2 Related WORK 39 2.1 Guidelines for Pattern Research . 40 2.1.1 Pattern Identification and Authoring . 41 2.1.2 Iterative Pattern Review . 42 2.1.3 Participating in Pattern Conferences . 42 2.2 Other Cloud Computing Patterns . 43 2.2.1 Cloud Computing Patterns of PLoP Conferences 44 2.2.2 Cloud Design Patterns (Amazon Web Services) 45 2.2.3 Cloud Design Patterns (Microsoft Azure) . 46 2.2.4 Cloud Architecture Patterns . 48 2.2.5 CloudPatterns.org . 49 2.3 Chapter Summary . 51 3 IDENTIfiCATION OF Patterns FOR Cloud Computing 53 3.1 Architectural Principles of Cloud Computing . 56 3.1.1 Cloud Computing Properties . 57 3.1.2 Impact of Cloud Computing Properties on Applications . 59 3.1.3 IDEAL Properties of Cloud Applications . 63 3.2 Cloud Application Properties in Other Architectural Styles . 66 3.2.1 Distributed Systems . 67 3.2.2 Messaging . 72 3.2.3 Representational State Transfer (REST) . 74 3.2.4 Service-Oriented Architectures . 78 3.3 Reference Cloud Application . 80 3.3.1 Cloud Runtime Environment . 81 4 Contents 3.3.2 Cloud Application . 82 3.3.3 Application Stack . 84 3.4 Architectural Topics for Cloud Applications . 85 3.4.1 Accounting and Controlling . 86 3.4.2 Application Migration . 87 3.4.3 Cloud Integration . 88 3.4.4 Compliance to Laws and Regulations . 89 3.4.5 Data Storage . 90 3.4.6 License Management . 91 3.4.7 Monitoring, Analysis, and Reporting . 91 3.4.8 Multi-Tenant Cloud Middleware . 92 3.4.9 Organizational Structures . 93 3.4.10 Security . 94 3.5 Information Sources for Cloud Computing Patterns . 95 3.5.1 Cloud Providers and Cloud Applications . 95 3.5.2 Existing Patterns . 96 3.6 Chapter Summary . 97 4 Design OF Cloud Computing Patterns 99 4.1 Pattern Document Format . 102 4.2 Pattern Language Structure . 105 4.2.1 References among Patterns . 107 4.2.2 Constraints on the Pattern Language Metamodel 108 4.3 Graphical Design . 111 4.3.1 Pattern Document Layout . 111 4.3.2 Graphical Elements Used in Patterns . 113 4.3.3 Composition of Graphical Elements . 118 4.4 Summary of Cloud Computing Patterns . 121 4.4.1 Cloud Computing Fundamentals . 123 4.4.2 Cloud Offerings . 129 4.4.3 Cloud Application Architectures . 136 5 Contents 4.4.4 Cloud Application Management . 142 4.4.5 Composite Cloud Applications . 145 4.5 Chapter Summary . 148 5 Application OF Cloud Computing Patterns 149 5.1 Accessibility of Cloud Computing Patterns . 151 5.1.1 Categories of Cloud Computing Patterns . 152 5.1.2 Order of Pattern Consideration . 152 5.2 Pattern-Based Design Method for Cloud Applications . 153 5.2.1 Decomposition . 155 5.2.2 Workload . 158 5.2.3 State . 160 5.2.4 Component Refinement . 164 5.2.5 Elasticity and Resiliency . 167 5.3 Chapter Summary . 171 6 TOOLCHAIN FOR Cloud Computing Patterns 173 6.1 Pattern Authoring Toolkit . 175 6.1.1 Information Classification Template . 176 6.1.2 Pattern Document Template and Stencil Set . 178 6.2 Pattern Importer . 179 6.2.1 Pattern Import Format Editor . 179 6.2.2 Pattern Import Format Converter . 182 6.3 Pattern Repository . 183 6.3.1 Pattern Document Database . 184 6.3.2 Pattern Browser . 185 6.3.3 Pattern Recommender . 187 6.3.4 Pattern Editor . 188 6.4 Reference Implementation Repository . 189 6.5 Chapter Summary . 190 6 Contents 7 VALIDATION 193 7.1 Use of Cloud Computing Patterns by Industry Partners 194 7.1.1 Daimler TSS GmbH . 194 7.1.2 Dr. Ing. h.c. F. Porsche AG . 200 7.2 Uninfluenced Use of Cloud Computing Patterns . .203 7.2.1 Use in Research . 204 7.2.2 Use in Industry . 206 7.3 Chapter Summary . 208 8 Conclusions AND Outlook 211 8.1 Answers to Research Questions . 212 8.2 Limitations of Cloud Computing Patterns . 214 8.3 Research Opportunities . 215 8.3.1 Research-Driven Improvement of Patterns . 215 8.3.2 A Pattern Language for IT Applications . 216 8.3.3 Cloud Computing Patterns as Architectural Decisions . 218 8.3.4 Pattern-Based Architectural Modeling . 218 8.4 Chapter Summary . 219 A Detailed Pattern Engineering PrOCESS 221 B Detailed Mapping OF Related Patterns 223 C TOOLCHAIN FOR Cloud Computing Patterns 247 BibliogrAPHY 249 AcknoWLEDGMENTS (Danksagungen) 269 7 List OF AcrONYMS AADL Architecture Analysis & Design Language ACID Atomicity, Consistency, Isolation, Durability ADL Architecture Description Language AG Aktiengesellschaft API Application Programming Interface AWS Amazon Web Services BASE Basically Available, Soft state, Eventual consistency BPEL Business Process Execution Language BPMN Business Process Model and Notation 9 List OF AcrONYMS CAFE Composite Application Framework CAP Consistency, Availability, Partition tolerance CAPEX Capital Expenditures CDN Content Delivery Network CMS Content Management System CPU Central Processing Unit CQRS Command Query Responsibility Segregation CRM Customer Relationship Management CTO Chief Technology Officer DB Database DBMS Database Management System DDOS Distributed Denial of Service DMTF Distributed Management Task Force, Inc. DNS Domain Name System EAI Enterprise Application Integration EC2 (Amazon) Elastic Compute Cloud ERP Enterprise Resource Planning ESB Enterprise Service Bus GB Gigabyte GPS Global Positioning System HATEOAS Hypermedia as the Engine of Application State 10 List OF AcrONYMS HTML Hypertext Markup Language HTTP Hypertext Transfer Protocol IDE Integrated Development Environment IDEAL Isolation, Distribution, Elasticity, Automated Management, Loose Coupling IEEE Institute of Electrical and Electronics Engineers IP Internet Protocol IT Information Technology LLC Limited Liability Company LUN Logical Unit Number MVP Most Valuable Professional NAT Network Address Translation NFS Network File System NIC Network Interface Controller NIST National Institute of Standards and Technology OASIS Organization for the Advancement of Structured Information Standards OCL Object Constraint Language OPEX Operational Expenditure OVF Open Virtualization Format PHP PHP: Hypertext Preprocessor 11 List OF AcrONYMS PNG Portable Network Graphics RAM Random-Access Memory RDF Resource Description Framework REST Representational State Transfer RPC Remote Procedure Call SLA Service-Level Agreement SOA Service-Oriented Architecture SOC Service-Oriented Computing SQL Structured Query Language UML Unified Modeling Language URI Uniform Resource Identifier URL Uniform Resource Locator VPC (Amazon) Virtual Private Cloud VPN Virtual Private Network WAF Web Application Firewall XML Extensible Markup Language 12 Zusammenfassung Die breite Verfügbarkeit von schnellen Internetzugängen hat die Be- deutung der geographischen Position von IT Betriebsumgebungen re- duziert. Fortschritte in der Verwaltungsfunktionalität von Hardware und Software erlauben es darüber hinaus IT Ressourcen sehr flexibel und automatisiert zur Verfügung zu stellen. Das Geschäftsmodell Cloud Computing entstand auf Basis dieser Entwicklungen. Cloud Anbieter stellen IT Ressourcen, wie Server, Laufzeitumgebungen oder komplette Anwendungen zur Selbstbedienung durch den Kunden über das Internet bereit. Da diese Cloud Dienste sehr große Kundengruppen erreichen, können Anbieter Skaleneffekte ausnutzen. Daher sind Cloud Dienste oft schneller betriebsbereit und günstiger als gleichartige selbstverwaltete IT Ressourcen. Insbesondere können Cloud Ressourcen oftmals flexibel reserviert und freigegeben werden, wodurch Kunden die verwendeten 13 Zusammenfassung Ressourcen innerhalb von Minuten dem aktuellen Bedarf ihrer Anwen- dungen anpassen können. Die Auswirkungen dieser Eigenschaften von Cloud Umgebungen auf die dort betriebenen Anwendungen und die re- sultierenden Herausforderungen waren bisher größtenteils unbekannt. Die von Anbietern bereitgestellte Dokumentation und Architekturricht- linien waren stets auf die spezifischen Cloud Dienste zugeschnitten. Die hier vorgestellten Cloud Computing Patterns sind untereinander verknüpfte strukturierte Dokumente, die bewährte Lösungen zu wie- derkehrenden Architekturproblemen beschreiben, mit denen IT Archi- tekten bei der Erstellung von Cloud Anwendungsarchitekturen und ihrer Verwaltung zur Betriebszeit konfrontiert werden. Diese Patterns (dt. Muster) abstrahieren von technologiespezifischen Anbieterdoku- mentationen und -richtlinien, sowie von existierenden Anwendungen. Daher beschreiben sie abstrakte Architekturrichtlinien, die technolo- gieunabhängiges und langlebiges Erfahrungswissen darstellen. Diese Arbeit beschreibt die strukturierte Identifikation der Cloud Com- puting Patterns, ihr textuelles und grafisches Design, um sie für Men- schen leicht zugänglich zu machen, sowie eine Designmethode für Ihre Anwendung.