IP Library Granted Patent US 12,561,125
Granted Patent B2
US 12,561,125 · App. 17/965,996 · Granted Feb 24, 2026

Software application deployment across clusters

Inventors: Taher Vohra (Sunnyvale, CA); Luis Pablo Pabón (Sturbridge, MA)
Assignee: Pure Storage, Inc.
G06F8/65
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,561,125
App. No.
17/965,996
Granted
Feb 24, 2026
Kind
B2
Abstract

In some embodiments, a method for software application deployment across dusters may include receiving a request to deploy a software application with a first deployable component and a second deployable component. The method may further include determining, based on the request, an availability, within a first duster of the plurality of dusters, of first computing resources capable of executing the first deployable component, and an availability, within a second duster of the plurality of dusters different from the first duster, of second computing resources capable of executing the second deployable component. The method may further include deploying, based on the availabilities of the first and second computing resources, the software application across the plurality of dusters. For example, this deploying across dusters may include deploying the first deployable component to the first cluster and deploying the second deployable component to the second duster. Corresponding methods and systems are also disclosed.

Claims (51)

1 . A method comprising:

receiving, by a controller associated with a plurality of clusters, a request to deploy a software application that includes a hierarchy of independently deployable components comprising a first deployable component associated with a first type of function ality of the software application and a second deployable component associated with a second type of functionality of the software application, the first deployable component including a first plurality of independently deployable serverless functions, the second deployment component including a second plurality of independently deployable serverless functions;

determining, by the controller and based on the request and on telemetry data received from the plurality of clusters prior to receiving the request:

a first cluster of the plurality of clusters that provides a first service for the first type of functionality;

a second cluster of the plurality of clusters that provides a second service for the second type of functionality;

an availability, within the first cluster of the plurality of clusters, of first computing resources capable of executing the first deployable component, and

an availability, within the second cluster of the plurality of clusters, of second computing resources capable of executing the second deployable component; and

deploying, by the controller based on the availabilities of the first and second computing resources, the software application across the plurality of clusters, including by deploying the first plurality of independently deployable serverless functions to different clusters included in the plurality of clusters.

2 . The method of claim 1 , wherein the first and second deployable components of the software application are implemented as different software components from a group including:

a frontend component configured to provide control interfacing functionality for the software application;

a middleware component configured to perform operational functionality for the software application; and

a backend component configured to provide data storage interfacing for the software application.

3 . The method of claim 1 , further comprising determining, by the controller, a first compute time parameter associated with the first computing resources within the first cluster and a second compute time parameter associated with the second computing resources within the second cluster;

wherein the deploying of the software application is further based on the first and second compute time parameters.

4 . The method of claim 1 , further comprising determining, by the controller, a first power usage parameter associated with the first computing resources within the first cluster and a second power usage parameter associated with the second computing resources within the second cluster;

wherein the deploying of the software application is further based on the first and second power usage parameters.

5 . The method of claim 1 , wherein the deploying of the software application is performed such that one independently deployable serverless function of the first plurality of independently deployable serverless functions provides output data for use as input data by another independently deployable serverless function of the first plurality of independently deployable serverless functions.

6 . The method of claim 1 , wherein the deploying of the software application is performed such one independently deployable serverless function of the first plurality of independently deployable serverless functions uses input data that is provided as output data by another independently deployable serverless function of the first plurality of independently deployable serverless functions.

7 . A controller system associated with a plurality of clusters, the controller system comprising:

a memory storing instructions; and

one or more processors communicatively coupled to the memory and configured to execute the instructions to perform a process comprising:

receiving a request to deploy a software application that includes a hierarchy of independently deployable components comprising a first deployable component associated with a first type of functionality of the software application and a second deployable component associated with a second type of functionality of the software application, the first deployable component including a first plurality of independently deployable serverless functions, the second deployment component including a second plurality of independently deployable serverless functions;

determining, based on the request and on telemetry data received from the plurality of clusters prior to receiving the request:

a first cluster of the plurality of clusters that provides a first service for the first type of functionality;

a second cluster of the plurality of clusters that provides a second service for the second type of functionality;

an availability, within the first cluster of the plurality of clusters, of first computing resources capable of executing the first deployable component, and

an availability, within the second cluster of the plurality of clusters, of second computing resources capable of executing the second deployable component; and

deploying, based on the availabilities of the first and second computing resources, the software application across the plurality of clusters, including by deploying the first plurality of independently deployable serverless functions to different clusters included in the plurality of clusters.

8 . The controller system of claim 7 , wherein the first and second deployable components of the software application are implemented as different software components from a group including:

a frontend component configured to provide control interfacing functionality for the software application;

a middleware component configured to perform operational functionality for the software application; and

a backend component configured to provide data storage interfacing for the software application.

9 . The controller system of claim 7 , wherein:

the process further comprises determining a first compute time parameter associated with the first computing resources within the first cluster and a second compute time parameter associated with the second computing resources within the second cluster; and

the deploying of the software application is further based on the first and second compute time parameters.

10 . The controller system of claim 7 , wherein:

the process further comprises determining a first power usage parameter associated with the first computing resources within the first cluster and a second power usage parameter associated with the second computing resources within the second cluster; and

the deploying of the software application is further based on the first and second power usage parameters.

11 . The controller system of claim 7 , wherein the deploying of the software application is performed such that one independently deployable serverless function of the first plurality of independently deployable serverless functions provides output data for use as input data by another independently deployable serverless function of the first plurality of independently deployable serverless functions.

12 . A non-transitory computer-readable medium storing instructions that, when executed, direct a processor of a controller system associated within a plurality of clusters to perform a process comprising:

receiving a request to deploy a software application that includes a hierarchy of independently deployable components comprising a first deployable component associated with a first type of functionality of the software application and a second deployable component associated with a second type of functionality of the software application, the first deployable component including a first plurality of independently deployable serverless functions, the second deployment component including a second plurality of independently deployable serverless functions;

determining, based on the request and on telemetry data received from the plurality of clusters prior to receiving the request:

a first cluster of the plurality of clusters that provides a first service for the first type of functionality;

a second cluster of the plurality of clusters that provides a second service for the second type of functionality;

an availability, within the first cluster of the plurality of clusters, of first computing resources capable of executing the first deployable component, and

an availability, within the second cluster of the plurality of clusters, of second computing resources capable of executing the second deployable component; and

deploying, based on the availabilities of the first and second computing resources, the software application across the plurality of clusters, including by deploying the first plurality of independently deployable serverless functions to different clusters included in the plurality of clusters.

13 . The non-transitory computer-readable medium of claim 12 , wherein deploying the software application further comprises independently deploying the second plurality of independently deployable serverless functions to a single cluster included in the plurality of clusters.

14 . The non-transitory computer-readable medium of claim 12 , wherein deploying the software application further comprises independently deploying a single independently deployable serverless function included in the first plurality of independently deployable serverless functions to the different clusters included in the plurality of clusters.

15 . The non-transitory computer-readable medium of claim 14 , wherein the single independently deployable serverless function is an authentication function executed for each login to the software application.

16 . The non-transitory computer-readable medium of claim 12 , wherein the software application is a containerized application configured to execute as an isolated user space within an operating system of a host computer system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2022
From: VOHRA, TAHER; PABÓN, LUIS PABLO
To: PURE STORAGE, INC., A DELAWARE CORPORATION
Reel/Frame 061425/0124 →
Continuity (3)
Continuation In Part 17947529 · Sep 19, 2022
Continuation In Part 17555751 · Dec 20, 2021
Related Publication 20230195444A1 · Jun 22, 2023
References Cited (138)
US 7519964B1 · Islam et al. · 2009 [cited by applicant]
US 7712102B2 · Herington et al. · 2010 [cited by applicant]
US 7760641B2 · Gilfix · 2010 [cited by applicant]
US 7900206B1 · Joshi et al. · 2011 [cited by applicant]
US 7904910B2 · Romero · 2011 [cited by applicant]
US 7975115B2 · Wayda et al. · 2011 [cited by applicant]
US 8392564B1 · Czajkowski et al. · 2013 [cited by applicant]
US 8495472B1 · Magerramov et al. · 2013 [cited by applicant]
US 8504797B2 · Mimatsu · 2013 [cited by applicant]
US 8706914B2 · Duchesneau · 2014 [cited by applicant]
US 8793344B2 · Manivel et al. · 2014 [cited by applicant]
US 8822155B2 · Sukumar et al. · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 8930536B2 · Jackson · 2015 [cited by applicant]
US 9026658B2 · Xu et al. · 2015 [cited by applicant]
US 9086919B2 · Iyer et al. · 2015 [cited by applicant]
US 9256467B1 · Singh et al. · 2016 [cited by applicant]
US 9275063B1 · Natanzon · 2016 [cited by applicant]
US 9280678B2 · Redberg · 2016 [cited by applicant]
US 9300536B2 · Agarwala et al. · 2016 [cited by applicant]
US 9395922B2 · Nishikido et al. · 2016 [cited by applicant]
US 9507676B2 · Fitzpatrick et al. · 2016 [cited by applicant]
US 9552299B2 · Stalzer · 2017 [cited by applicant]
US 9571567B2 · Shu et al. · 2017 [cited by applicant]
US 9740403B2 · Storer et al. · 2017 [cited by applicant]
US 9766992B2 · Wipfel et al. · 2017 [cited by applicant]
US 9811387B2 · Baughman et al. · 2017 [cited by applicant]
US 9848041B2 · Einkauf et al. · 2017 [cited by applicant]
US 9864874B1 · Shanbhag et al. · 2018 [cited by applicant]
US 9942351B2 · Bhat et al. · 2018 [cited by applicant]
US 9954953B2 · Baughman et al. · 2018 [cited by applicant]
US 10015106B1 · Florissi et al. · 2018 [cited by applicant]
US 10025673B1 · Maccanti et al. · 2018 [cited by applicant]
US 10027758B2 · Baughman et al. · 2018 [cited by applicant]
US 10055239B2 · Adogla et al. · 2018 [cited by applicant]
US 10102356B1 · Sahin et al. · 2018 [cited by applicant]
US 10153941B2 · Dion et al. · 2018 [cited by applicant]
US 10185495B2 · Katsuki · 2019 [cited by applicant]
US 10187454B2 · Sengodan et al. · 2019 [cited by applicant]
US 10225335B2 · Fu et al. · 2019 [cited by applicant]
US 10277668B1 · Florissi · 2019 [cited by applicant]
US 10305747B2 · Shahab et al. · 2019 [cited by applicant]
US 10324639B2 · Seo · 2019 [cited by applicant]
US 10348822B2 · Phan et al. · 2019 [cited by applicant]
US 10382530B2 · Baughman et al. · 2019 [cited by applicant]
US 10469585B2 · Zhao et al. · 2019 [cited by applicant]
US 10567406B2 · Astigarraga et al. · 2020 [cited by applicant]
US 10594619B2 · Kasso et al. · 2020 [cited by applicant]
US 10664264B2 · Garvey et al. · 2020 [cited by applicant]
US 10705883B2 · Wen et al. · 2020 [cited by applicant]
US 10733029B2 · Kumar Shimoga Manjunatha et al. · 2020 [cited by applicant]
US 10749940B2 · Baughman et al. · 2020 [cited by applicant]
US 10778597B1 · Tan et al. · 2020 [cited by applicant]
US 10791138B1 · Siddiqui et al. · 2020 [cited by applicant]
US 10810088B1 · Gu et al. · 2020 [cited by applicant]
US 10841152B1 · Humphreys · 2020 [cited by applicant]
US 10846137B2 · Vallala et al. · 2020 [cited by applicant]
US 10868742B2 · Chitalia et al. · 2020 [cited by applicant]
US 10877683B2 · Wu et al. · 2020 [cited by applicant]
US 10887380B2 · Pahwa et al. · 2021 [cited by applicant]
US 10893097B1 · Liu et al. · 2021 [cited by applicant]
US 10904303B2 · Patel et al. · 2021 [cited by applicant]
US 10909003B2 · Neichev · 2021 [cited by applicant]
US 10922284B1 · Venkatasubramanian et al. · 2021 [cited by applicant]
US 10924535B2 · Du et al. · 2021 [cited by applicant]
US 10963349B2 · Dhamdhere et al. · 2021 [cited by applicant]
US 10990912B2 · Dravneek et al. · 2021 [cited by applicant]
US 11036521B2 · Ferrell et al. · 2021 [cited by applicant]
US 11086974B2 · Iliofotou et al. · 2021 [cited by applicant]
US 11102281B2 · Chatt et al. · 2021 [cited by applicant]
US 11102282B2 · Chatt et al. · 2021 [cited by applicant]
US 11106810B2 · Natanzon et al. · 2021 [cited by applicant]
US 11368539B1 · Chen · 2022 [cited by examiner]
US 11593103B1 · Chawda · 2023 [cited by examiner]
US 20060026599A1 · Herington et al. · 2006 [cited by applicant]
US 20070180451A1 · Ryan et al. · 2007 [cited by applicant]
US 20110035540A1 · Fitzgerald et al. · 2011 [cited by applicant]
US 20110283194A1 · Chen · 2011 [cited by examiner]
US 20130219022A1 · Manivel et al. · 2013 [cited by applicant]
US 20130297770A1 · Zhang · 2013 [cited by applicant]
US 20150113150A1 · Jackson · 2015 [cited by applicant]
US 20160173640A1 · Bhat et al. · 2016 [cited by applicant]
US 20160179636A1 · Fitzpatrick et al. · 2016 [cited by applicant]
US 20160203060A1 · Singh et al. · 2016 [cited by applicant]
US 20160323377A1 · Einkauf et al. · 2016 [cited by applicant]
US 20170099352A1 · Baughman et al. · 2017 [cited by applicant]
US 20170235603A1 · Baughman et al. · 2017 [cited by applicant]
US 20170235616A1 · Baughman et al. · 2017 [cited by applicant]
US 20170237804A1 · Baughman et al. · 2017 [cited by applicant]
US 20170257432A1 · Fu et al. · 2017 [cited by applicant]
US 20170339008A1 · Dion et al. · 2017 [cited by applicant]
US 20170373940A1 · Shahab et al. · 2017 [cited by applicant]
US 20180046446A1 · Turovsky et al. · 2018 [cited by applicant]
US 20180048532A1 · Poort et al. · 2018 [cited by applicant]
US 20180157536A1 · Jiang · 2018 [cited by examiner]
US 20180219794A1 · Patil et al. · 2018 [cited by applicant]
US 20180287902A1 · Chitalia et al. · 2018 [cited by applicant]
US 20180293152A1 · Sherafat Kazemzadeh et al. · 2018 [cited by applicant]
US 20190102155A1 · Garvey et al. · 2019 [cited by applicant]
US 20190238625A1 · Baughman et al. · 2019 [cited by applicant]
US 20190253490A1 · Du et al. · 2019 [cited by applicant]
US 20190324786A1 · Ranjan et al. · 2019 [cited by applicant]
US 20190327271A1 · Saxena et al. · 2019 [cited by applicant]
US 20190354473A1 · Bahirat et al. · 2019 [cited by applicant]
US 20190384649A1 · Wen et al. · 2019 [cited by applicant]
US 20200073764A1 · Neichev · 2020 [cited by applicant]
US 20200104202A1 · Stupak et al. · 2020 [cited by applicant]
US 20200133689A1 · Ferrell et al. · 2020 [cited by applicant]
US 20200136920A1 · Doshi et al. · 2020 [cited by applicant]
US 20200151023A1 · Bai · 2020 [cited by examiner]
US 20200186441A1 · Fitzer et al. · 2020 [cited by applicant]
US 20200192692A1 · Ghag et al. · 2020 [cited by applicant]
US 20200265134A1 · Cristina et al. · 2020 [cited by applicant]
US 20200267071A1 · Ghag · 2020 [cited by applicant]
US 20200267210A1 · Chatt et al. · 2020 [cited by applicant]
US 20200267212A1 · Chatt et al. · 2020 [cited by applicant]
US 20200301751A1 · Wen et al. · 2020 [cited by applicant]
US 20200314173A1 · Pahwa et al. · 2020 [cited by applicant]
US 20200341789A1 · Ghag et al. · 2020 [cited by applicant]
US 20200379794A1 · Kim · 2020 [cited by applicant]
US 20210037087A1 · Liu et al. · 2021 [cited by applicant]
US 20210084048A1 · Kannan et al. · 2021 [cited by applicant]
US 20210099515A1 · Liu et al. · 2021 [cited by applicant]
US 20210160138A1 · Barnes et al. · 2021 [cited by applicant]
US 20210200814A1 · Tal et al. · 2021 [cited by applicant]
US 20210240539A1 · Murthy et al. · 2021 [cited by applicant]
US 20210281662A1 · Mathur · 2021 [cited by applicant]
US 20210286611A1 · Garvey et al. · 2021 [cited by applicant]
US 20210374564A1 · Kaspa · 2021 [cited by applicant]
US 20210377184A1 · Singh et al. · 2021 [cited by applicant]
US 20220191248A1 · Pieczul et al. · 2022 [cited by applicant]
US 20230035310A1 · Denneman et al. · 2023 [cited by applicant]
US 20230111775A1 · Lee et al. · 2023 [cited by applicant]
US 20230126168A1 · Birsan et al. · 2023 [cited by applicant]
US 20230205599A1 · Pathak et al. · 2023 [cited by applicant]
Hwang, et al., RAID-x: A New Distributed Disk Array for I/O-Centric Cluster Computing, Proceedings the Ninth International Symposium on High-Performance Distributed Computing, 2000, pp. 279-286. [cited by applicant]
Stalzer, et al., “FlashBlades: System Architecture and Applications”, Proceedings of the 2nd Workshop on Architectures and Systems for Big Data, Association for Computing Machinery, New York, NY, 2012, pp. 10-14. [cited by applicant]
Storer, et al., “Pergamum: Replacing Tape with Energy Efficient, Reliable, Disc-Based Archival Storage”, Fast'08: Proceedings of the 6th USENIX Conference on File and Storage Technologies, Feb. 2008, Article No. 1, pp. … [cited by applicant]
Cited By (1)
US 12,625,701