TIERED APPLICATION PATTERN
Systems and methods for providing a development application having a tiered application pattern. One system includes an electronic processor configured to, with a gateway layer, receive and route a request to an application layer. In response to receiving the request from the gateway layer, the electronic processor is also configured to, with the application layer, perform application functionality corresponding to a function associated with the request. The application functionality includes generating an application event. The electronic processor is configured to receive, with an event stream layer, the application event from the application layer. The electronic processor is configured to, with the data processing layer, access the application event and process the application event. The electronic processor is configured to transmit, with the data processing layer, the processed application event to a data storage layer.
Embodiments described herein relate to a tiered application pattern, and more particularly, to providing a development application having a tiered application pattern.
SUMMARYDisparate and amalgamated systems that are traditionally used by teams to build software often result in insufficient data protection, access restrictions, and reliability. To solve these and other problems, embodiments described herein provide methods and systems for providing a development application having a tiered application pattern (for example, a five-tiered application pattern). The five-tier application pattern is an application design that helps businesses reliably develop and manage software at a global-scale. Usage of the five-tier application pattern in software solutions achieves a software development foundation that is global-scale, self-healing, and auto-scaling with enhanced availability. The embodiments described herein may also produce applications that, by design, are secure, private, data localized, or a combination thereof. Additionally, the five-tier application pattern described herein may support up to, for example, 10 million requests per second per uniform resource locator. This is a massive improvement (5000×) over usage of a gated microservice architecture with a standard three-tier application pattern. The five-tier application pattern may achieve these by implementing a communication workflow as described herein, which may utilize streams and queues. Alternatively or in addition, in some embodiments, for example, the tiered application pattern enables software applications to be designed around decoupled read and write paths to a data store to enable massively scaled global application services.
One embodiment provides a system for providing a development application having a tiered application pattern. The system includes an electronic processor configured to receive, with a gateway layer, a request from a user device, where the request is associated with a function. The electronic processor is also configured to route, with the gateway layer, the request to an application layer, where the application layer provides application functionality corresponding to the function. The electronic processor is also configured to, in response to receiving the request from the gateway layer, perform, with the application layer, the application functionality corresponding to the function, where the application functionality includes generating an application event. The electronic processor is also configured to receive, with an event stream layer, the application event from the application layer. The electronic processor is also configured to access, with a data processing layer, the application event and process, with the data processing layer, the application event. The electronic processor is also configured to transmit, with the data processing layer, the processed application event to a data storage layer, where the processed application event is stored in the data storage layer.
Another embodiments provides a method for providing a development application having a tiered application pattern. The method includes receiving, within a gateway layer with an electronic processor, a request from a user device, where the request is associated with a function. The method also includes routing, within the gateway layer with the electronic processor, the request to an application layer, where the application layer provides application functionality corresponding to the function. The method also includes, in response to receiving the request from the gateway layer, performing, within the application layer with the electronic processor, the application functionality corresponding to the function, where the application functionality includes generating an application event. The method also includes receiving, within an event stream layer with the electronic processor, the application event from the application layer. The method also includes accessing, within a data processing layer with the electronic processor, the application event. The method also includes processing, within the data processing layer with the electronic processor, the application event. The method also includes transmitting, within the data processing layer with the electronic processor, the processed application event to a data storage layer. The method also includes storing, within the data storage layer, the processed application event.
Yet another embodiment provides a non-transitory, computer-readable medium storing instructions that, when executed by an electronic processor, perform a set of functions. The set of functions includes receiving, within a gateway layer, a request from a user device, wherein the request is associated with a function. The set of functions also includes routing, within the gateway layer, the request to an application layer, where the application layer provides application functionality corresponding to the function. In response to receiving the request from the gateway layer, the set of functions also includes performing, within the application layer, the application functionality corresponding to the function, where the application functionality includes generating an application event. The set of functions also includes receiving, within an event stream layer, the application event from the application layer. The set of functions also includes accessing, within a data processing layer, the application event from an event storage. The set of functions also includes processing, within the data processing layer, the application event. The Set of functions also includes transmitting, within the data processing layer, the processed application event to a data storage layer, where the processed application event is stored in the data storage layer.
Other aspects of the embodiments described herein will become apparent by consideration of the detailed description and accompanying drawings.
Other aspects of the embodiments described herein will become apparent by consideration of the detailed description.
DETAILED DESCRIPTION OF THE EMBODIMENTSBefore embodiments of the invention are explained in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways.
Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms “mounted,” “connected” and “coupled” are used broadly and encompass both direct and indirect mounting, connecting and coupling. Further, “connected” and “coupled” are not restricted to physical or mechanical connections or couplings, and may include electrical connections or couplings, whether direct or indirect. Also, electronic communications and notifications may be performed using any known means including direct connections, wireless connections, etc.
A plurality of hardware and software based devices, as well as a plurality of different structural components may be utilized to implement the embodiments described herein. In addition, embodiments described herein may include hardware, software, and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic-based aspects of the embodiments described herein may be implemented in software (for example, stored on non-transitory computer-readable medium) executable by one or more processors. As such, it should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components, may be utilized to implement the embodiments described herein. For example, “mobile device,” “computing device,” and “server” as described in the specification may include one or more electronic processors, one or more memory modules including non-transitory computer-readable medium, one or more input/output interfaces, and various connections (for example, a system bus) connecting the components.
The server 110 and the user devices 105 are communicatively coupled via a communication network 130. The communication network 130 is an electronic communications network including wireless and wired connections. Portions of the communication network 130 may be implemented using a wide area network, such as the Internet, a local area network, such as a Bluetooth™ network or Wi-Fi, and combinations or derivatives thereof. Alternatively or in addition, in some embodiments, components of the system 100 communicate directly with each other as compared to communicating through the communication network 130. Also, in some embodiments, the components of the system 100 communicate through one or more intermediary devices not illustrated in
The server 110 is a computing device, which may host or provide a development application for developing and managing a software application. For example, in some embodiments, the server 110 is a cloud computing service or platform server for software development and management. Alternatively, in some embodiments, the server 110 may be a server that communicates with a cloud computing service or platform (for example, AZURE™ provided by Microsoft Corporation or AWS™ provided by Amazon Web Services, Inc.) for developing a software application.
As illustrated in
The electronic processor 200 can include a microprocessor, an application-specific integrated circuit (ASIC), or another suitable electronic device for processing data. The memory 205 can include a non-transitory computer-readable medium, such as read-only memory (“ROM”), random access memory (“RAM”) (for example, dynamic RAM (“DRAM”), synchronous DRAM (“SDRAM”), and the like), electrically erasable programmable read-only memory (“EEPROM”), flash memory, a hard disk, a secure digital (“SD”) card, another suitable memory device, or a combination thereof. The electronic processor 200 is configured to access and execute computer-readable instructions (“software”) stored in the memory 205. The software may include firmware, one or more applications, program data, filters, rules, one or more program modules, and other executable instructions. For example, the software may include instructions and associated data for performing a set of functions, including the methods described herein. For example, as illustrated in
The communication interface 210 allows the server 110 to communicate with devices external to the server 110. For example, as illustrated in
The user device 105 is also a computing device and may include a desktop computer, a terminal, a workstation, a laptop computer, a tablet computer, a smart watch or other wearable, a smart television or whiteboard, or the like. Although not illustrated, the user device 105 may include similar components as the server 110 (an electronic processor, a memory, and a communication interface). The user device 105 may also include a human-machine interface. The human-machine interface may include one or more input devices, one or more output devices, or a combination thereof. Accordingly, in some embodiments, the human-machine interface allows a user to interact with (for example, provide input to and receive output from) the user device 105. For example, the human-machine interface may include a keyboard, a cursor-control device (for example, a mouse), a touch screen, a scroll ball, a mechanical button, a display device (for example, a liquid crystal display (“LCD”)), a printer, a speaker, a microphone, or a combination thereof. In some embodiments, the user device 105 is a customer device or server that is part of a computing network, such as a distributed computing network, a cloud computing service, or the like, that leverages or accesses the tired application pattern. Alternatively or in addition, the user device 105 may be a customer device or server that accesses an application (having a five-tiered application design) as a customer or user of the application.
A user (for example, a software developer) may use the user device 105 to develop and manage an application (for example, an ecommerce application). For example, the user may access the development application 215 (through a browser application or a dedicated application stored on the user device 105 that communicates with the server 110) and interact with the development application 215 via the human-machine interface associated with the user device 105.
In some embodiments, the development application 215 has a tiered application pattern. In the illustrated example, the development application 215 has a five-tier application pattern. In other words, the development application 215 may designate five application layers. For example,
As noted above, in some embodiments, the functionality (or a portion thereof) of the server 110 may be distributed among multiple devices or servers. Accordingly, in some embodiments, the system 100 includes multiple servers 110, where each server provides a layer described herein as being provided by the server 110. For example, a first server (for example, a gateway server) may provide the gateway layer 350, a second server (for example, an application server) may provide the application layer 360, a third server (for example, a data storage server) may provide the data storage layer 370, a fourth server (for example, a data processing server) may provide the data processing layer 380, and a fifth server (for example, an event stream server) may provide the event stream layer 390.
The gateway layer 350 functions as an entry point to the development application 215. In some embodiments, the gateway layer 350 serves as the only publically accessible entry point to the development application 215. As such, the gateway layer 350 is configured to receive one or more requests from the user devices 105 and process the received requests, and, ultimately, trigger application functionality (via the other layers of the tiered application pattern). Accordingly, in some embodiments, the gateway layer 350 contains or functions as an application programmable interface (API) gateway. The gateway layer 350 may define a type of request an application may handle, a type of parameter, a response body, an error code, a failure situation, and the like. In some embodiments, the gateway layer 350 includes multiple technology components incorporated into a single layer that serves a functional purpose. For example, the gateway layer 350 may include technology components that implement edge security technology, enforce encryption protocols, and the like. In some embodiments, the gateway layer 350 implements request transformation templates to directly integrate with select data storage and queue resources as, for example, an optimization that may bypass a need for building and maintaining application code. As a result of this optimization, application cost may be reduced where viable. As seen in
The application layer 360 contains application or product functionality. In other words, the application layer 360 contains the business logic for handling incoming requests from the gateway layer 350. Alternatively or in addition, in some embodiments, the application layer 360 contains template functionality and security. Further, in some embodiments, the application layer 360 implements support for one or more software endpoints defined in an OpenAPI Specification used to define the gateway layer 350. As seen in
The data storage layer 370 contains, for example, one or more managed databases, file systems, alternative databases, machine learning model databases, artificial intelligence model databases, or a combination thereof. For example, the application layer 360 may interact with the data storage layer 370 by reading (or accessing) data from the data storage layer 370. Alternatively or in addition, in some embodiments, the application layer 370 accesses one or more models stored in the machine learning model database, the artificial intelligence model database, or a combination thereof. The application layer 370 may use the accessed one or more models to process a request (for example, perform application functionality associated with the request). In some embodiments, the application functionality performed by the application layer 370 is improved by accessing and using the one or more models.
The event stream layer 390 provides event stream processing. In other words, application events are streamed into the event stream layer 390 (for example, from the application layer 360). The application events streamed into the event stream layer 390 are stored until each application event is processed by the data processing layer 380. As seen in
As part of a normal operation of the application layer 360, the five-tier application pattern may encourage the application layer 360 to read from the data storage layer 370 while application writes (i.e., application events) are pushed (or streamed) to event streams (for example, the event stream layer 390) for eventual processing. Accordingly, in some embodiments, the tiered application pattern enables software applications to be designed around the concept of decoupled read and write paths to a data store to enable massively scaled global application services.
The data processing layer 380 is configured to process one or more application events from the event stream layer 390. For example, in some embodiments, the data processing layer 380 is configured to process the one or more application events using an extract, transform, and load (ETL) procedure. The data processing layer 380 may support online application event processing, offline application event processing, or a combination thereof. In some embodiments, the data processing layer 380 utilizes the notion of notifications and queues to create fan out capabilities. For example, when application events are fanned out, the application events may be processed multiple times by different compute functions. As seen in
As illustrated in
As seen in
After receiving the request from the user device 105, the gateway layer 350 (via the electronic processor 200) routes (or transmits) the request to the application layer 360 (at block 410). As seen in
In some embodiments, the API gateway 520 (via the electronic processor 200) processes the request to determine a function (or functionality) associated with the request. A function associated with the request may include, for example, an event retrieval function, an authentication function, an authorization function, a reporting function, a data processing function, and the like. After the API gateway 520 determines a function associated with the request, the API gateway 520 (via the electronic processor 200) routes the request based on the determined function. For example, as illustrated in
Returning to
In in response to receiving the request from the gateway layer 350 (at block 415), the application layer 360 (via the electronic processor 200) performs the application functionality corresponding to the function (at block 420). In other words, application functionality associated with the application layer 360 is triggered (via the electronic processor 200 executing application functionality associated with the application layer 360). The triggering of the application functionality associated with the application layer 360 is depicted by a compute component 527 in
In some embodiments, the receipt of the request triggers the application layer 360 (via the electronic processor 200) to interact with the data storage layer 370. The application layer 360 may interact with the data storage layer 370 by reading (or accessing) stored data from the data storage layer 370. In some embodiments, the application layer 360 reads data from the data storage layer 370 and provides (or transmits) the read data as an output (or response) to the user device 105 (for example, as a response body). For example, the application layer 360 may access the data storage layer 307 to read a processed application event, a machine learning model, an artificial intelligence model, and the like. As noted above, the data storage layer 370 may include a managed database, a file system, a machine learning model database, an artificial intelligence model database, an alternative data storage technology, or a combination thereof. For example, as illustrated in
Alternatively or in addition, in some embodiments, the receipt of the request triggers the application layer 360 (via the electronic processor 200) to interact with the event stream layer 390. The application layer 360 interacts with the event stream layer 390 by writing (via the electronic processor 200) an application event (for example, an application write) to the event stream layer 390. In some embodiments, the application layer 360 includes the data read from the data storage layer 370 as part of the application event. For example, as illustrated in
As seen in
As noted above, in some embodiments, the data processing layer 380 utilizes the notion of notifications and queues to create fan out capabilities. For example, when application events are fanned out, the application events may be processed multiple times by different compute functions. Accordingly, as seen in
After processing the application event (at block 435), the data processing layer 380 (via the electronic processor 200) transmits the processed application event to the data storage layer 370 (at block 440). As noted above, in some embodiments, the data processing layer 380 (via the electronic processor 200) updates and maintains one or more databases included in the data storage layer 370. For example, as illustrated in
Thus, the embodiments described herein provide, among other things, methods and systems for providing a development application having a tiered application pattern. Various features and advantages of the invention are set forth in the following claims.
Claims
1. A system for providing a development application having a tiered application pattern, the system comprising:
- an electronic processor configured to receive, with a gateway layer, a request from a user device, wherein the request is associated with a function, route, with the gateway layer, the request to an application layer, wherein the application layer provides application functionality corresponding to the function, in response to receiving the request from the gateway layer, perform, with the application layer, the application functionality corresponding to the function, wherein the application functionality includes generating an application event, receive, with an event stream layer, the application event from the application layer, access, with a data processing layer, the application event, process, with the data processing layer, the application event, and transmit, with the data processing layer, the processed application event to a data storage layer, wherein the processed application event is stored in the data storage layer.
2. The system of claim 1, wherein the data storage layer includes at least one selected from a group consisting of a managed database, a file system, an alternative data storage technology, a machine learning model database, and an artificial intelligence model database.
3. The system of claim 1, wherein the gateway layer includes an application programming interface (API) gateway.
4. The system of claim 1, wherein the electronic processor is further configured to access, with the application layer, data stored in the data storage layer.
5. The system of claim 4, wherein the data stored in the data storage layer includes the processed application event.
6. The system of claim 4, wherein the data stored in the data storage layer includes at least one selected from a group consisting of a machine learning model and an artificial intelligence model.
7. The system of claim 1, wherein the electronic processor is configured to process, with the data processing layer, the application event by
- extracting the application event from the event storage,
- transforming the application event, and
- loading the transformed application event to the data storage layer.
8. The system of claim 1, wherein the application layer includes a load balancer configured to manage a distribution of workloads associated with the request received by the application layer.
9. The system of claim 1, wherein the event stream layer includes an event aggregator configured to aggregate incoming application events.
10. The system of claim 1, wherein the application functionality corresponds to at least one selected from a group consisting of an event retrieval function, an authentication function, an authorization function, a data processing function, and a reporting function.
11. A method for providing a development application having a tiered application pattern, the method comprising:
- receiving, within a gateway layer with an electronic processor, a request from a user device, wherein the request is associated with a function;
- routing, within the gateway layer with the electronic processor, the request to an application layer, wherein the application layer provides application functionality corresponding to the function;
- in response to receiving the request from the gateway layer, performing, within the application layer with the electronic processor, the application functionality corresponding to the function, wherein the application functionality includes generating an application event;
- receiving, within an event stream layer with the electronic processor, the application event from the application layer;
- accessing, within a data processing layer with the electronic processor, the application event;
- processing, within the data processing layer with the electronic processor, the application event;
- transmitting, within the data processing layer with the electronic processor, the processed application event to a data storage layer; and
- storing, within the data storage layer, the processed application event.
12. The method of claim 11, further comprising:
- accessing, with the application layer, data stored in the data storage layer.
13. The method of claim 12, wherein accessing, with the application layer, data stored in the data storage layer includes accessing, with the application layer, the processed application event.
14. The method of claim 12, wherein accessing, with the application layer, data stored in the data storage layer includes accessing, with the application layer, at least one selected from a group consisting of a machine learning model and an artificial intelligence model.
15. The method of claim 11, wherein processing, with the data processing layer, the application event includes
- extracting, with the data processing layer, the application event from the event storage,
- transforming, with the data processing layer, the application event, and
- loading, with the data processing layer, the transformed application event to the data storage layer.
16. A non-transitory, computer-readable medium storing instructions that, when executed by an electronic processor, perform a set of functions, the set of functions comprising:
- receiving, within a gateway layer, a request from a user device, wherein the request is associated with a function;
- routing, within the gateway layer, the request to an application layer, wherein the application layer provides application functionality corresponding to the function;
- in response to receiving the request from the gateway layer, performing, within the application layer, the application functionality corresponding to the function, wherein the application functionality includes generating an application event;
- receiving, within an event stream layer, the application event from the application layer;
- accessing, within a data processing layer, the application event from an event storage;
- processing, within the data processing layer, the application event; and
- transmitting, within the data processing layer, the processed application event to a data storage layer, wherein the processed application event is stored in the data storage layer.
17. The computer-readable medium of claim 11, wherein the set of functions further comprises:
- accessing, with the application layer, data stored in the data storage layer.
18. The computer-readable medium of claim 17, wherein accessing, with the application layer, data stored in the data storage layer includes accessing, with the application layer, the processed application event.
19. The computer-readable medium of claim 17, wherein accessing, with the application layer, data stored in the data storage layer includes accessing, with the application layer, at least one selected from a group consisting of a machine learning model and an artificial intelligence model.
20. The method of claim 11, wherein processing, with the data processing layer, the application event includes
- extracting, with the data processing layer, the application event from the event storage,
- transforming, with the data processing layer, the application event, and
- loading, with the data processing layer, the transformed application event to the data storage layer.
Type: Application
Filed: May 1, 2020
Publication Date: Nov 4, 2021
Inventors: Marc Grimson (Vancouver), Justin Fox (Pitt Meadows)
Application Number: 16/864,329