Cloud Application Architecture Patterns

This chapter covers architectural patterns that describe how applications have to be designed to benefit from a cloud environment. Additionally, it is described how applications themselves can be offered as configurable cloud services. Having introduced cloud service models (see Sect. 2.3 on Page 39 in Chap. 2) and cloud deployment types (see Sect. 2.4 on Page 54 in Chap. 2), this chapter describes patterns that architects and developers can use to build cloud-native applications, i.e., applications that display the cloud application properties introduced in Sect. 1.2 on Page 5 in Chap. 1. Following the overview, fundamental application architectural patterns cover the architectural principles found in most cloud-native applications to enable the cloud application properties. Application component patterns then specify patterns on how to design and build individual components of a cloud-native application, so that the overall application can be built on top of an elastic infrastructure (78) or elastic platform (81). Multi-tenancy patterns describe how cloud applications and individual components can be shared by multiple customers, so called tenants, on different levels of the application stack. Cloud integration patterns finally describe mechanisms on how to integrate multiple cloud environments or cloud environments and on-premise datacenters as well as applications both in and outside the cloud.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Cal Henderson Building scalable web sites - building, scaling, and optimizing the next generation of web applications: the Flickr way , 2006 .

[3]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[4]  Michael Fisher,et al.  The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise , 2009 .

[5]  Bo Gao,et al.  A Framework for Native Multi-Tenancy Application Development and Management , 2007, The 9th IEEE International Conference on E-Commerce Technology and The 4th IEEE International Conference on Enterprise Computing, E-Commerce and E-Services (CEC-EEE 2007).

[6]  Gregor Hohpe,et al.  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions , 2003 .

[7]  Douglas Crockford,et al.  The application/json Media Type for JavaScript Object Notation (JSON) , 2006, RFC.

[8]  Werner Vogels,et al.  Building reliable distributed systems at a worldwide scale demands trade-offs between consistency and availability. , 2022 .

[9]  Michael Mahemoff Ajax Design Patterns , 2006 .

[10]  Frank Leymann,et al.  An architectural pattern language of cloud-based applications , 2011, PLoP '11.

[11]  Lukáš Rajter IBM websphere MQ , 2010 .

[12]  John Daniels,et al.  UML Components: A Simple Process for Specifying Component-Based Software , 2000 .

[13]  Frank Leymann,et al.  Moving Applications to the Cloud: an Approach Based on Application Model Enrichment , 2011, Int. J. Cooperative Inf. Syst..

[14]  Dean Jacobs,et al.  Ruminations on Multi-Tenant Databases , 2007, BTW.

[15]  Frank Leymann,et al.  Capturing Cloud Computing Knowledge and Experience in Patterns , 2012, 2012 IEEE Fifth International Conference on Cloud Computing.

[16]  Martin Fowler Data Access Routines , 2003, IEEE Softw..

[17]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[18]  Jesse James Garrett Ajax: A New Approach to Web Applications , 2007 .

[19]  Robert Daigneau,et al.  Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services , 2011 .

[20]  Roy Fielding,et al.  Architectural Styles and the Design of Network-based Software Architectures"; Doctoral dissertation , 2000 .

[21]  Arthur Tatnall Web Portals: The New Gateways to Internet Information and Services , 2004 .

[22]  Clodoaldo Robledo,et al.  Google Web Toolkit , 2012 .

[23]  Richard Monson-Haefel,et al.  Java message service , 2000 .

[24]  Charles Kim,et al.  Oracle Database 11g , 2004 .

[25]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[26]  Olaf Zimmermann,et al.  Second generation web services-oriented architecture in production in the finance industry , 2004, OOPSLA '04.

[27]  Andrew S. Tanenbaum,et al.  Distributed systems - principles and paradigms, 2nd Edition , 2007 .

[28]  Nancy A. Lynch,et al.  Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services , 2002, SIGA.

[29]  Francisco Curbera,et al.  Web Services Business Process Execution Language Version 2.0 , 2007 .

[30]  Abraham Silberschatz,et al.  Database System Concepts , 1980 .

[31]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[32]  Frank Leymann,et al.  Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More , 2005 .

[33]  Olaf Zimmermann,et al.  Service-oriented architecture and business process choreography in an order management scenario: rationale, concepts, lessons learned , 2005, OOPSLA '05.

[34]  David A Chappell,et al.  Enterprise Service Bus , 2004 .

[35]  Mark von Rosing,et al.  Business Process Model and Notation - BPMN , 2015, The Complete Business Process Handbook, Vol. I.

[36]  Ramez Elmasri,et al.  Fundamentals of Database Systems , 1989 .

[37]  Mark Perry,et al.  Mqseries programming patterns , 2002 .

[38]  Philip A. Bernstein,et al.  Principles of Transaction Processing , 1996 .

[39]  D. Redmond-Pyle,et al.  A Standard for Architecture Description , 1999, IBM Syst. J..