IP Library Granted Patent US 12,316,720
Granted Patent B1
US 12,316,720 · App. 18/523,161 · Granted May 27, 2025

Transaction processing system with decomposed architecture

Inventors: Grant Michael Smith (Union Mills, IM); Scott Xavier Dukes (KwaZulu-Natal, ZA); Matthew John Harris (Berkhamsted, GB)
Assignee: Games Global Operations Limited
H04L67/63H04L67/306
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,316,720
App. No.
18/523,161
Granted
May 27, 2025
Kind
B1
Abstract

An implementation may involve: receiving, by an application launcher, a message on behalf of a client device; determining a server application based on the message and metadata, wherein the server application is associated with a path, wherein the path includes a set of steps, wherein each of the set of steps is respectively associated with program logic to perform a discrete set of functions, wherein a generate result step causes the server application to determine an outcome of executing the path, and wherein a handle request step causes the server application to provide, to an external service, a representation of a request related to the outcome; providing, by the application launcher, a client application to the client device; and executing, by an orchestrator, the path, wherein a context of the execution is written in a database between execution of at least some of the set of steps.

Claims (44)

1. A system comprising:

one or more processors; and

memory storing instructions that are executable by the one or more processors to perform operations of software components comprising:

a server application associated with a path, wherein the path includes a set of steps, wherein each of the set of steps is respectively associated with program logic to perform a discrete set of functions, wherein a generate result step of the set of steps causes the server application to determine an outcome of executing the path, and wherein a handle request step of the set of steps causes the server application to provide, to an external service, a representation of a request related to the outcome;

storage containing metadata that relate to the server application, an operator of the server application, or a user of the server application;

an application launcher configured to: receive a message on behalf of a client device, determine the server application based on the message and the metadata, and provide a client application to the client device, wherein the client application is configured to interact with the server application; and

an orchestrator configured to execute the path, wherein a context of the execution is written in a database between execution of at least some of the set of steps.

2. The system of claim 1 , the software components further comprising:

a web site configured to allow selection of the server application from a menu of server applications associated with the operator or with one or more other operators.

3. The system of claim 1 , wherein the path specifies that pre-step processing is to be performed prior to the generate result step, and wherein the pre-step processing comprises:

reading, from the database, at least part of the context;

determining, from the context as read, that an additional feature applies to the generate result step; and

performing the generate result step in accordance with the additional feature.

4. The system of claim 3 , wherein determining that the additional feature applies to the generate result step comprises:

determining that the context indicates that the user has engaged with the server application a threshold number of times.

5. The system of claim 3 , wherein the path specifies that post-step processing is to be performed after the handle request step, and wherein the post-step processing comprises:

reading, from the database, at least part of the context;

determining, from the context as read, that an additional modification of the context is to be applied after the handle request step; and

writing, to the context, an update based on the additional modification.

6. The system of claim 1 , wherein the path specifies that pre-step processing is to be performed prior to the generate result step, and wherein the pre-step processing comprises:

reading, from the database, at least part of the context;

determining, from the context as read, that a constraint applies to the handle request step; and

performing the handle request step in accordance with the constraint.

7. The system of claim 1 , wherein the constraint relates to an amount specified by the user as part of the handle request step.

8. The system of claim 1 , wherein the server application is a gaming application, and wherein the outcome is based on an iteration of the gaming application.

9. The system of claim 1 , wherein providing the client application to the client device is based on determining, by way of a geolocation service, that the client device is permitted to access the server application.

10. The system of claim 1 , wherein the client application is executable within a web browser of the client device.

11. The system of claim 1 , wherein the path indicates that: at least two of the set of steps can be performed in parallel to one another, and a pair of steps in the set of steps are to be performed serially.

12. The system of claim 1 , wherein the path defines a boundary separating the set of steps into a first group of steps and a second group of steps, wherein the first group of steps are configured to be performed before the second group of steps, wherein a failure that occurs during execution of the first group of steps causes the context to be rolled back and the path to be restarted, and wherein a further failure that occurs during execution of the second group of steps causes at least some of the second group of steps to be retried.

13. The system of claim 12 , wherein the boundary is between the handle request step and a further step that immediately follows either: the handle request step, or any post-processing step related to the handle request step.

14. The system of claim 1 , further comprising:

a plurality of orchestrators, each configured to execute paths, wherein the orchestrator is one of the plurality of orchestrators; and

a load balancer configured to distribute representations of the paths across the plurality of orchestrators according to a load balancing discipline.

15. The system of claim 1 , wherein a particular step of the set of steps is configured to interact with a particular external service of one or more external services, wherein a plurality of server components are configured to perform the particular external service, the system further comprising:

a load balancer configured to distribute interactions across the plurality of server components according to a load balancing discipline.

16. The system of claim 1 , wherein the application launcher is configured to facilitate loading of the server application in parallel to determining whether a user associated with the client device is permitted to access the server application.

17. The system of claim 1 , wherein the orchestrator and one or more external services invoked by the path are hosted within different virtual private cloud systems.

18. The system of claim 1 , wherein the context represents an intermediate or final state of the execution of the path.

19. The system of claim 1 , wherein the orchestrator receives a representation of the path from the application launcher.

20. A computer-implemented method comprising:

receiving, by an application launcher, a message on behalf of a client device;

determining a server application based on the message and metadata relating to the server application, an operator of the server application, or a user of the server application, wherein the server application is associated with a path, wherein the path includes a set of steps, wherein each of the set of steps is respectively associated with program logic to perform a discrete set of functions, wherein a generate result step of the set of steps causes the server application to determine an outcome of executing the path, and wherein a handle request step of the set of steps causes the server application to provide, to an external service, a representation of a request related to the outcome;

providing, by the application launcher, a client application to the client device, wherein the client application is configured to interact with the server application; and

executing, by an orchestrator, the path, wherein a context of the execution is written in a database between execution of at least some of the set of steps.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2024
From: SMITH, GRANT MICHAEL; DUKES, SCOTT XAVIER; HARRIS, MATTHEW JOHN
To: GAMES GLOBAL OPERATIONS LIMITED
Reel/Frame 066543/0459 →
CHANGE OF ADDRESS Recorded Feb 9, 2024
From: GAMES GLOBAL OPERATIONS LIMITED
To: GAMES GLOBAL OPERATIONS LIMITED
Reel/Frame 066544/0909 →
References Cited (98)
US 7490153B1 · Krishnan · 2009 [cited by examiner]
US 8956220B2 · Melton · 2015 [cited by applicant]
US 9286766B2 · Igesund · 2016 [cited by applicant]
US 9685043B2 · Naicker · 2017 [cited by applicant]
US 9722927B2 · Zhang · 2017 [cited by examiner]
US 10171567B2 · Huang · 2019 [cited by applicant]
US 10269220B2 · Harpur · 2019 [cited by applicant]
US 10749992B2 · Gowda · 2020 [cited by applicant]
US 10798187B2 · Mullender · 2020 [cited by examiner]
US 10824981B2 · Koutyrine · 2020 [cited by applicant]
US 10950084B2 · Watkeys · 2021 [cited by applicant]
US 10951691B2 · Mishra · 2021 [cited by applicant]
US 11005708B1 · Gheorghe · 2021 [cited by applicant]
US 11356525B2 · Miedema · 2022 [cited by applicant]
US 11379461B2 · Raman · 2022 [cited by applicant]
US 11489738B2 · Palladino · 2022 [cited by applicant]
US 11577162B2 · Slabbert · 2023 [cited by applicant]
US 11651653B2 · Ross · 2023 [cited by applicant]
US 11669594B2 · Gibb · 2023 [cited by applicant]
US 20030069055A1 · Moody · 2003 [cited by applicant]
US 20040107168A1 · Millner · 2004 [cited by applicant]
US 20050215304A1 · Moshal · 2005 [cited by applicant]
US 20060079331A1 · Moshal · 2006 [cited by applicant]
US 20060121968A1 · Daniel · 2006 [cited by applicant]
US 20060189381A1 · Daniel · 2006 [cited by applicant]
US 20060194628A1 · Novellie · 2006 [cited by applicant]
US 20060229949A1 · Moshal · 2006 [cited by applicant]
US 20060287097A1 · Moshal · 2006 [cited by applicant]
US 20070063443A1 · Moshal · 2007 [cited by applicant]
US 20070093297A1 · Moshal · 2007 [cited by applicant]
US 20070197282A1 · Moshal · 2007 [cited by applicant]
US 20070213121A1 · Moshal · 2007 [cited by applicant]
US 20070225057A1 · Moshal · 2007 [cited by applicant]
US 20080018049A1 · Hebden · 2008 [cited by applicant]
US 20080045288A1 · Moshal · 2008 [cited by applicant]
US 20080076501A1 · Mares · 2008 [cited by applicant]
US 20080090632A1 · Kumar · 2008 [cited by applicant]
US 20080090662A1 · Verardi · 2008 [cited by applicant]
US 20080176618A1 · Toompere · 2008 [cited by applicant]
US 20080214259A1 · Novellie · 2008 [cited by applicant]
US 20090023490A1 · Moshal · 2009 [cited by applicant]
US 20090093296A1 · Gerson · 2009 [cited by applicant]
US 20090098920A1 · Toompere · 2009 [cited by applicant]
US 20090124352A1 · Gerson · 2009 [cited by applicant]
US 20090286586A1 · Heymann · 2009 [cited by applicant]
US 20090318231A1 · Lange · 2009 [cited by applicant]
US 20090325688A1 · Naicker · 2009 [cited by applicant]
US 20100052255A1 · Naicker · 2010 [cited by applicant]
US 20100167808A1 · Moshal · 2010 [cited by applicant]
US 20100210362A1 · Toompere · 2010 [cited by applicant]
US 20110028202A1 · Naicker · 2011 [cited by applicant]
US 20120178518A1 · Moshal · 2012 [cited by applicant]
US 20130023324A1 · Lange · 2013 [cited by applicant]
US 20130090164A1 · Moshal · 2013 [cited by applicant]
US 20130276101A1 · Rautenbach · 2013 [cited by applicant]
US 20130276102A1 · Rautenbach · 2013 [cited by applicant]
US 20130276103A1 · Rautenbach · 2013 [cited by applicant]
US 20130290178A1 · Masie · 2013 [cited by applicant]
US 20140289107A1 · Moshal · 2014 [cited by applicant]
US 20140310117A1 · Moshal · 2014 [cited by applicant]
US 20150119129A1 · Igesund · 2015 [cited by applicant]
US 20150126264A1 · Igesund · 2015 [cited by applicant]
US 20150141115A1 · Vermaak · 2015 [cited by applicant]
US 20150170460A1 · Marais · 2015 [cited by applicant]
US 20150221162A1 · Peters · 2015 [cited by applicant]
US 20150248811A1 · Wortmann · 2015 [cited by applicant]
US 20150324777A1 · Moshal · 2015 [cited by applicant]
US 20150358235A1 · Zhang · 2015 [cited by examiner]
US 20150381493A1 · Bansal · 2015 [cited by examiner]
US 20160203671A1 · Vermaak · 2016 [cited by applicant]
US 20170046704A1 · Büchner · 2017 [cited by applicant]
US 20170213416A1 · Wortmann · 2017 [cited by applicant]
US 20180122184A1 · Wortmann · 2018 [cited by applicant]
US 20180122189A1 · Wortmann · 2018 [cited by applicant]
US 20180349871A1 · Moshal · 2018 [cited by applicant]
US 20180367621A1 · Mullender · 2018 [cited by examiner]
US 20190004871A1 · Sukhomlinov · 2019 [cited by examiner]
US 20190005473A1 · De Villiers · 2019 [cited by applicant]
US 20190220834A1 · Moshal · 2019 [cited by applicant]
US 20200057618A1 · Alex · 2020 [cited by applicant]
US 20200204492A1 · Sarva · 2020 [cited by examiner]
US 20200312085A1 · Rottcher · 2020 [cited by applicant]
US 20200382420A1 · Suryanarayana · 2020 [cited by examiner]
US 20210034997A1 · Harpur · 2021 [cited by applicant]
US 20220005018A1 · White · 2022 [cited by applicant]
US 20220143505A1 · Mathieson · 2022 [cited by applicant]
US 20220197597A1 · Harpur · 2022 [cited by applicant]
US 20230035443A1 · Harpur · 2023 [cited by applicant]
US 20230162559A1 · Harpur · 2023 [cited by applicant]
US 20230315819A1 · Guy · 2023 [cited by applicant]
WO 2023193971A1 · 2023 [cited by applicant]
Tatemura et al. “Web service decomposition: Edge computing architecture for cache-friendly e-commerce applications” Electronic Commerce Research and Applications, vol. 5, Issue 1,2006, pp. 57-65 (Year: 2006). [cited by examiner]
“Architecting a Highly Available Serverless, Microservices-Based Ecommerce Site”, Jul. 15, 2021 (Jul. 15, 2021), XP093257148, Retrieved from the Internet: URL:https://aws.amazon.com/blogs/architecture/architecting-a-hig… [cited by applicant]
Anonymous: “Amazon Gamelift Developer Guide”, Dec. 16, 2022 (Dec. 16, 2022), XP093257041, Retrieved from the Internet: URL:https://web.archive.org/web/20221216055550if_/https://docs.aws.amazon.com/pdfs/gamelift/latest/d… [cited by applicant]
Anonymous: “AWS Lambda Developer Guide—first 400 pages”, Oct. 17, 2023 (Oct. 17, 2023), XP093257048, Retrieved from the Internet: URL:https://web.archive.org/web/20231017155908if_/https://docs.aws.amazon.com/pdfs/lambda… [cited by applicant]
Anonymous: “Choosing between AWS Lambda data storage options in web apps”, Oct. 28, 2020 (Oct. 28, 2020), XP093257397, Retrieved from the Internet: URL:https://aws.amazon.com/blogs/compute/choosing-between-aws-lambda-da… [cited by applicant]
Anonymous: “How to build online multiplayer games using Amazon GameLift, AWS Serverless, and C++ | AWS for Games Blog”, Sep. 15, 2021 (Sep. 15, 2021), XP093257033, Retrieved from the Internet: URL:https://aws.amazon. co… [cited by applicant]
Extended European Search Report, European Patent Application No. 24212300.8, mailed Apr. 1, 2025. [cited by applicant]