<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.6//EN" "ep-patent-document-v1-6.dtd">
<!--This XML data has been generated under the supervision of the European Patent Office -->
<ep-patent-document id="EP18197597B1" file="EP18197597NWB1.xml" lang="en" country="EP" doc-number="3584701" kind="B1" date-publ="20231213" status="n" dtd-version="ep-patent-document-v1-6">
<SDOBI lang="en"><B000><eptags><B001EP>ATBECHDEDKESFRGBGRITLILUNLSEMCPTIESILTLVFIROMKCYALTRBGCZEEHUPLSK..HRIS..MTNORS..SM..................</B001EP><B005EP>J</B005EP><B007EP>BDM Ver 2.0.24 -  2100000/0</B007EP></eptags></B000><B100><B110>3584701</B110><B120><B121>EUROPEAN PATENT SPECIFICATION</B121></B120><B130>B1</B130><B140><date>20231213</date></B140><B190>EP</B190></B100><B200><B210>18197597.0</B210><B220><date>20180928</date></B220><B240><B241><date>20200608</date></B241><B242><date>20211119</date></B242></B240><B250>en</B250><B251EP>en</B251EP><B260>en</B260></B200><B300><B310>201841022643</B310><B320><date>20180618</date></B320><B330><ctry>IN</ctry></B330></B300><B400><B405><date>20231213</date><bnum>202350</bnum></B405><B430><date>20191225</date><bnum>201952</bnum></B430><B450><date>20231213</date><bnum>202350</bnum></B450><B452EP><date>20230630</date></B452EP></B400><B500><B510EP><classification-ipcr sequence="1"><text>G06F   9/50        20060101AFI20190408BHEP        </text></classification-ipcr></B510EP><B520EP><classifications-cpc><classification-cpc sequence="1"><text>G06F   9/5005      20130101 LI20190405BHEP        </text></classification-cpc><classification-cpc sequence="2"><text>G06F   9/5027      20130101 FI20190326BHEP        </text></classification-cpc></classifications-cpc></B520EP><B540><B541>de</B541><B542>VERFAHREN UND SYSTEM ZUR VERARBEITUNG VON DATEN IN EINER SERVERLOSEN DATENVERARBEITUNGSUMGEBUNG</B542><B541>en</B541><B542>METHOD AND SYSTEM FOR PROCESSING DATA IN A SERVERLESS COMPUTING ENVIRONMENT</B542><B541>fr</B541><B542>PROCÉDÉ ET SYSTÈME DE TRAITEMENT DE DONNÉES DANS UN ENVIRONNEMENT INFORMATIQUE SANS SERVEUR</B542></B540><B560><B561><text>US-A1- 2018 113 746</text></B561><B562><text>IOANA BALDINI ET AL: "Serverless Computing: Current Trends and Open Problems", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 10 June 2017 (2017-06-10), XP080768870, DOI: 10.1007/978-981-10-5026-8_1</text></B562><B562><text>NASTIC STEFAN ET AL: "A Serverless Real-Time Data Analytics Platform for Edge Computing", IEEE INTERNET COMPUTING, vol. 21, no. 4, 27 July 2017 (2017-07-27), pages 64-71, XP011657727, ISSN: 1089-7801, DOI: 10.1109/MIC.2017.2911430 [retrieved on 2017-07-27]</text></B562></B560></B500><B700><B720><B721><snm>SINGURU, Radha Krishna</snm><adr><str>Flat 206, Daffodil, Bhanu township, Hafeez pet,
Miyapur, Hyderabad</str><city>500050 Telangana</city><ctry>IN</ctry></adr></B721></B720><B730><B731><snm>Wipro Limited</snm><iid>101151628</iid><irf>11612.764.00155</irf><adr><str>Doddakannelli 
Sarjapur Road 
Bangalore</str><city>560 035 Karnataka</city><ctry>IN</ctry></adr></B731></B730><B740><B741><snm>Finnegan Europe LLP</snm><iid>101466345</iid><adr><str>1 London Bridge</str><city>London SE1 9BG</city><ctry>GB</ctry></adr></B741></B740></B700><B800><B840><ctry>AL</ctry><ctry>AT</ctry><ctry>BE</ctry><ctry>BG</ctry><ctry>CH</ctry><ctry>CY</ctry><ctry>CZ</ctry><ctry>DE</ctry><ctry>DK</ctry><ctry>EE</ctry><ctry>ES</ctry><ctry>FI</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>GR</ctry><ctry>HR</ctry><ctry>HU</ctry><ctry>IE</ctry><ctry>IS</ctry><ctry>IT</ctry><ctry>LI</ctry><ctry>LT</ctry><ctry>LU</ctry><ctry>LV</ctry><ctry>MC</ctry><ctry>MK</ctry><ctry>MT</ctry><ctry>NL</ctry><ctry>NO</ctry><ctry>PL</ctry><ctry>PT</ctry><ctry>RO</ctry><ctry>RS</ctry><ctry>SE</ctry><ctry>SI</ctry><ctry>SK</ctry><ctry>SM</ctry><ctry>TR</ctry></B840></B800></SDOBI>
<description id="desc" lang="en"><!-- EPO <DP n="1"> -->
<heading id="h0001"><b><u>Technical Field</u></b></heading>
<p id="p0001" num="0001">The present subject matter is, in general, related to serverless computing and more particularly, to a method and system for processing data in a serverless computing environment comprising a plurality of serverless computing platforms.</p>
<heading id="h0002"><b><u>Background</u></b></heading>
<p id="p0002" num="0002">In a server-based computing environment, once an application gets developed, the next step would be to deploy the application on the servers. Deploying the application on the server includes various steps such as capacity planning, resource procurement, installation of hardware and software and the like, which is a time-consuming process. Also, deploying the applications on the server involves lot of initial set-up expenses and running expenses.</p>
<p id="p0003" num="0003">However, the advent of cloud computing has enabled developers to deploy and run the applications on cloud-based servers available on cloud computing environment, rather than the physical servers running at company's site. Further, since the cloud-based servers usually work on principles of sharing of virtual and/or physical resources, they also help in minimizing the expenses involved in setting-up and running applications on the servers.</p>
<p id="p0004" num="0004">At present, because of usefulness of cloud computing, data or workloads which are collected at different remote locations are moved to centralized cloud computing environment to process and derive insights from the data. However, this may not be efficient in certain use cases, for example, when the data is huge, critical and time-sensitive. A major drawback of transmitting the collected data to the cloud computing environment is that the data cannot be processed and analyzed in an effective manner at the remote data center. For example, due to inherent latencies in network, the processing of time-critical tasks in the remote data center becomes ineffective. Also, when the data is huge, it may not be practically feasible to transfer the data to distant cloud computing servers because of limitations in terms of size of network and cost of transmitting the data.</p>
<p id="p0005" num="0005">The information disclosed in this background of the disclosure section is only for enhancement of understanding of the general background of the invention and should not be<!-- EPO <DP n="2"> --> taken as an acknowledgement or any form of suggestion that this information forms the prior art already known to a person skilled in the art.</p>
<p id="p0006" num="0006"><patcit id="pcit0001" dnum="US20180113746A1"><text>US20180113746A1</text></patcit> discloses a software service execution apparatus, comprising: a registry of software services, each service to execute a r data processing function in the registry; a controller, to receive a processing request defining requested data processing functions, compose an execution schedule of software services from the software services identified, fulfill the data processing request by identifying a software service that matches the requested processing function, and including the identified software service in the execution schedule; and control execution. The apparatus comprising: a machine learning mechanism configured to maintain a record of the composing; wherein: the composing includes, in an automated mode, if more than one software services is identified, requesting a selection of one software service as an automated selection candidate; the mechanism providing a selection of one software service, basing selection on analysis of the composing and execution of execution schedules in which an automated selection candidate is identified. The publication by <nplcit id="ncit0001" npl-type="s"><text>Nastic et al. "A Serverless Real-Time Data Analytics Platform for Edge Computing", IEEE INTERNET COMPUTING (2017</text></nplcit>), discloses the consideration of a proximity in the selection of the functions.</p>
<heading id="h0003"><b><u>Summary</u></b></heading>
<p id="p0007" num="0007">One or more shortcomings of the prior art may be overcome, and additional advantages may be provided through the present disclosure. Additional features and advantages may be realized through the techniques of the present disclosure.</p>
<p id="p0008" num="0008">In accordance with aspects of the disclosure, there are provided: a method, a serverless orchestrator, and a computer readable medium as set forth in the appended claims. Other features will be apparent from the dependent claims, attached drawings, and the description which follows.<!-- EPO <DP n="3"> --></p>
<p id="p0009" num="0009">Disclosed herein is a method for processing data in a serverless computing environment, comprising a plurality of serverless computing platforms. The method comprises receiving, by a serverless orchestrator, information related to each of one or more functions associated with each of the plurality of serverless computing platforms. The information relates to capability of the one or more functions to perform a set of operations when an event is triggered. Further, the method comprises receiving data, to be processed, from one or more data sources associated with the serverless orchestrator. Subsequently, the method comprises determining one or more processing operations to be performed on the data based on one or more characteristics of the data and a domain related to the data. Upon determining the one or more processing operations, the method comprises determining confidence scores corresponding to each of the one or more functions based on correlation between the one or more processing operations and the information related to each of the one or more functions. Thereafter, the method comprises identifying a target function from the one or more functions, which is best suited for performing the one or more processing operations, based on an evaluation of the confidence scores. Further, the method comprises deploying the target function for performing the one or more operations by forwarding the data to a serverless computing platform associated with the target function. Finally, the method comprises triggering an event for processing the forwarded data by the target function.</p>
<p id="p0010" num="0010">Further, the present disclosure relates to a serverless orchestrator for processing data in a serverless computing environment comprising a plurality of serverless computing platforms. The serverless orchestrator comprises a processor and a memory. The memory is communicatively coupled to the processor and stores processor-executable instructions, which on execution, cause the processor to receive information related to each of one or more functions associated with each of the plurality of serverless computing platforms. The<!-- EPO <DP n="4"> --> information comprises capability of the one or more functions to perform a set of operations when an event is triggered. Further, the instructions cause the processor to receive data, to be processed, from one or more data sources associated with the serverless orchestrator. Thereafter, the instructions cause the processor to determine one or more processing operations, to be performed on the data, based on one or more characteristics of the data and a domain related to the data. Further, the instructions cause the processor to determine confidence scores corresponding to each of the one or more functions based on correlation between the one or more processing operations and the information related to each of the one or more functions. Upon determining the confidence scores, the instructions cause the processor to identify a target function from the one or more functions, which is best suited to perform the one or more processing operations based on an evaluation of the confidence scores. Further, the instructions cause the processor to deploy the target function to perform the one or more operations by forwarding the data to a serverless computing platform associated with the target function. Finally, the instructions cause the processor to trigger an event to process the forwarded data by the target function.</p>
<p id="p0011" num="0011">Furthermore, the present disclosure relates to a non-transitory computer readable medium including instructions stored thereon that when processed by at least one processor cause a serverless orchestrator to perform operations comprising receiving information related to each of one or more functions associated with each of the plurality of serverless computing platforms. The information related to each of one or more functions comprises capability of the one or more functions to perform a set of operations when an event is triggered. Further, the instructions cause the serverless orchestrator to receive data to be processed from one or more data sources associated with the serverless orchestrator. Thereafter, the instructions cause the serverless orchestrator to determine one or more processing operations to be performed on the data based on one or more characteristics of the data and a domain related to the data. Subsequently, the instructions cause the serverless orchestrator to determine confidence scores corresponding to each of the one or more functions based on correlation between the one or more processing operations and the information related to each of the one or more functions. Further, the instructions cause the serverless orchestrator to identify a target function from the one or more functions, which is best suited to perform the one or more processing operations. Identification of the target function is based on an evaluation of the confidence scores. Finally, the instructions cause the serverless orchestrator to deploy the target function to perform the one or more processing operations by forwarding the data to a serverless computing platform<!-- EPO <DP n="5"> --> associated with the target function and trigger an event to process the forwarded data by the target function.</p>
<heading id="h0004"><b><u>Brief Description of Drawings</u></b></heading>
<p id="p0012" num="0012">The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate exemplary embodiments and, together with the description, explain the disclosed principles. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the figures to reference like features and components. Some embodiments of system and/or methods in accordance with embodiments of the present subject matter are now described, by way of example only, and regarding the accompanying figures, in which:
<ul id="ul0001" list-style="none" compact="compact">
<li><figref idref="f0001"><b>FIG. 1</b></figref> illustrates an exemplary environment for processing data in a serverless computing environment comprising a plurality of serverless computing platforms in accordance with some embodiments of the present disclosure;</li>
<li><figref idref="f0002"><b>FIG. 2</b></figref> shows a detailed block diagram illustrating a serverless orchestrator in accordance with some embodiments of the present disclosure;</li>
<li><figref idref="f0003"><b>FIG. 3</b></figref> shows a flowchart illustrating a method of processing data in a serverless computing environment comprising a plurality of serverless computing platforms in accordance with some embodiments of the present invention; and</li>
<li><figref idref="f0004"><b>FIG. 4</b></figref> illustrates a block diagram of an exemplary computer system for implementing embodiments consistent with the present disclosure.</li>
</ul></p>
<p id="p0013" num="0013">It should be appreciated by those skilled in the art that any block diagrams herein represent conceptual views of illustrative systems embodying the principles of the present subject matter. Similarly, it will be appreciated that any flow charts, flow diagrams, state transition diagrams, pseudo code, and the like represent various processes which may be<!-- EPO <DP n="6"> --> substantially represented in computer readable medium and executed by a computer or processor, whether such computer or processor is explicitly shown.</p>
<heading id="h0005"><b><u>Detailed Description</u></b></heading>
<p id="p0014" num="0014">In the present document, the word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or implementation of the present subject matter described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments.</p>
<p id="p0015" num="0015">While the disclosure is susceptible to various modifications and alternative forms, specific embodiment thereof has been shown by way of example in the drawings and will be described in detail below.</p>
<p id="p0016" num="0016">The present disclosure relates to a method and a serverless orchestrator for processing data in a serverless computing environment comprising a plurality of serverless computing platforms. In an embodiment, the serverless orchestrator leverages machine learning techniques to dynamically identify an optimal serverless computing platform, among the plurality of serverless computing platforms, for processing the data.</p>
<p id="p0017" num="0017">Serverless computing may be perceived as the next step of Platform-as-a-Service (PaaS). The serverless computing may also be referred as Function-as-a-Service (FaaS). Serverless computing works based on stateless compute containers using an event-driven model. It is an approach to software development that attempts to completely eliminate the need for creating and maintaining servers in the form of physical machines, virtual machines or cloud instances. The serverless computing allows the developers to build and run applications and services without the need to manage a server infrastructure, such that developers and testers can quickly run and test applications in the cloud, without going through traditional workflow of cloud-based computing. Also, in case of serverless computing, the pricing may be done based on actual amount of time and quantity of resources consumed by an application, rather than on pre-purchased units of capacity. This, in turn, minimizes expenditure associated with testing and/or running applications or services on the serverless computing platforms.<!-- EPO <DP n="7"> --></p>
<p id="p0018" num="0018">In the following detailed description of the embodiments of the disclosure, reference is made to the accompanying drawings that form a part hereof, and in which are shown by way of illustration specific embodiments in which the disclosure may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the disclosure, and it is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the present disclosure. The following description is, therefore, not to be taken in a limiting sense.</p>
<p id="p0019" num="0019"><figref idref="f0001"><b>FIG. 1</b></figref> illustrates an exemplary environment <b>100</b> for processing data in a serverless computing environment <b>101</b> comprising a plurality of serverless computing platforms <b>102</b> in accordance with some embodiments of the present disclosure.</p>
<p id="p0020" num="0020">In some implementations, the environment <b>100</b> may include a serverless computing environment <b>101</b>, a serverless orchestrator <b>105</b> and one or more data sources <b>106</b>. The serverless computing environment <b>101</b> may comprise a plurality of serverless computing platforms <b>102</b>, namely, serverless computing platform <b>102<sub>1</sub></b> to serverless computing platform <b>102<sub>N</sub></b> (hereinafter collectively referred to as plurality of serverless computing platforms <b>102</b>). In an embodiment, each of the plurality of serverless computing platforms <b>102</b> may provide one or more functions, namely, function <b>103<sub>1</sub></b> to function <b>103<sub>N</sub></b> (hereinafter collectively referred to as functions <b>103</b>). As an example, the plurality of serverless computing platforms <b>102</b> may be cloud computing platforms hosted by third-party cloud service providers such as Amazon<sup>®</sup> Web Service (AWS<sup>®</sup>), Microsoft<sup>®</sup> Azure<sup>®</sup>, Google<sup>®</sup> cloud platform and IBM<sup>®</sup> cloud, which provide serverless computing services through the one or more functions <b>103</b>.</p>
<p id="p0021" num="0021">In an implementation, the one or more data sources <b>106</b>, namely, data source <b>106<sub>1</sub></b> to data source <b>106<sub>N</sub></b> (hereinafter collectively referred to as data sources <b>106</b>) may include, without limiting to, one or more sensors or data capturing devices deployed in a site for real-time monitoring and transmission of data, or data storage units that store the data to be processed <b>107</b> (alternatively referred to as the data <b>107</b>).</p>
<p id="p0022" num="0022">In an embodiment, the serverless orchestrator <b>105</b> may receive information related to each of the one or more functions <b>104</b> from the plurality of serverless computing platforms <b>102</b> for analyzing capability of the one or more functions <b>103</b> to perform a set of processing operations when an event is triggered. As an example, the information related to the one or more functions <b>104</b> may include, without limiting to, at least one of runtime support and Service<!-- EPO <DP n="8"> --> Level Agreement (SLA) support provided by the plurality of serverless computing platforms <b>102</b>, geographic location of the plurality of serverless computing platforms <b>102</b>, cost of computation and network latency associated with the plurality of serverless computing platforms <b>102</b>, and computing resources available on the plurality of serverless computing platforms <b>102</b>.</p>
<p id="p0023" num="0023">In an embodiment, the serverless orchestrator <b>105</b> may receive the data to be processed <b>107</b> from the one or more data sources <b>106</b>. Further, the serverless orchestrator <b>105</b> may determine one or more processing operations that are required to be performed on the data <b>107</b>, for processing the data to be processed <b>107</b>, based on one or more characteristics of the data <b>107</b> and a domain related to the data <b>107</b>. In an embodiment, the domain of the data <b>107</b> may be determined based on an application or a task to which the data <b>107</b> belongs. As an example, the data <b>107</b> received from one or more sensors deployed in a mining site may be considered as relating to a mining domain. Similarly, the data <b>107</b> analyzed for estimating weather forecast may be considered as relating to a weather domain.</p>
<p id="p0024" num="0024">In an embodiment, upon determining the one or more processing operations to be performed, the serverless orchestrator <b>105</b> may correlate the one or more processing operations and the information related to each of the one or more functions <b>104</b> for determining confidence scores corresponding to each of the one or more functions <b>103</b>. In an embodiment, the confidence score of a function may be indicative of the capability of the function to perform the one or more processing operations on the data <b>107</b> for processing the data <b>107</b>.</p>
<p id="p0025" num="0025">In an embodiment, upon determining the confidence scores for each of the one or more functions <b>103</b>, the serverless orchestrator <b>105</b> may identify a target function from the one or more functions <b>103</b> by evaluating the confidence scores of each of the one or more functions <b>103</b>. The target function may be a function which is best suited for performing the one or more processing operations on the data to be processed <b>107</b>. As an example, one of the one or more functions <b>103</b> having highest confidence score may be identified as the target function for processing the data <b>107</b>. In an embodiment, the target function may be a combination of one or more functions <b>103</b>, which are sourced from two or more distinct serverless computing platforms <b>102</b>.</p>
<p id="p0026" num="0026">In an embodiment, upon identifying the target function, the serverless orchestrator <b>105</b> may deploy the target function for performing the one or more processing operations by<!-- EPO <DP n="9"> --> forwarding the data <b>107</b> to a serverless computing platform associated with the target function. Finally, the data <b>107</b> forwarded to the target function may be processed by the target function when the event is triggered for processing the data <b>107</b>. Thus, in summary, the serverless orchestrator <b>105</b> identifies one or more functions <b>103</b> which may be optimal for performing the one or more processing operations on the data <b>107</b>, and deploys each of the one or more functions <b>103</b> on the respective serverless computing platform from the plurality of serverless computing platforms <b>102</b> for efficient processing of the data <b>107</b>.</p>
<p id="p0027" num="0027"><figref idref="f0002"><b>FIG. 2</b></figref> shows a detailed block diagram illustrating a serverless orchestrator <b>105</b> in accordance with some embodiments of the present disclosure.</p>
<p id="p0028" num="0028">In some implementations, the serverless orchestrator <b>105</b> may include an I/O interface <b>201</b>, a processor <b>203</b>, and a memory <b>205</b>. The I/O interface <b>201</b> may be configured to communicate with plurality of serverless computing platforms <b>102</b> for receiving information related to each of one or more functions <b>104</b> associated with the plurality of serverless computing platforms <b>102</b>. Further, the I/O interface <b>201</b> may be configured to receive data to be processed <b>107</b>, from one or more data sources <b>106</b> associated with the serverless orchestrator <b>105</b>. The memory <b>205</b> may be communicatively coupled to the processor <b>203</b> and may store system data <b>207</b> and one or more modules <b>209</b>. The processor <b>203</b> may be configured to perform one or more functions <b>103</b> of the serverless orchestrator <b>105</b> during processing of the data <b>107</b>, using the system data <b>207</b> and the one or more modules <b>209</b>.</p>
<p id="p0029" num="0029">In an embodiment, the system data <b>207</b> may include, without limitation, information related to functions <b>104</b>, characteristics of data <b>211</b>, confidence scores <b>213</b>, and other data <b>215</b>. In some implementations, the system data <b>207</b> may be stored within the memory <b>205</b> in the form of various data structures. Additionally, the system data <b>207</b> may be organized using data models, such as relational or hierarchical data models. The other data <b>215</b> may store data <b>107</b> received from the one or more data sources <b>106</b> and other temporary data and files generated by one or more modules <b>209</b> while performing various functions of the serverless orchestrator <b>105</b>.</p>
<p id="p0030" num="0030">In an embodiment, the information related to the one or more functions <b>104</b> may include, without limiting to, at least one of runtime support and Service Level Agreement (SLA) support provided by the plurality of serverless computing platforms <b>102</b>, geographic location of the plurality of serverless computing platforms <b>102</b>, cost of computation and<!-- EPO <DP n="10"> --> network latency associated with the plurality of serverless computing platforms <b>102</b>, and computing resources available on the plurality of serverless computing platforms <b>102</b>. The information related to the one or more functions <b>104</b> may be used to estimate the capability and/or suitability of the one or more functions <b>103</b> to perform a set of operations on the data <b>107</b>. For example, the information related to the one or more functions <b>104</b> such as the SLA offered by a selected function may be compared against the SLA requirements of the processing operations to determine whether the selected function is suitable for processing the data <b>107</b>. Similarly, the information related to the one or more functions <b>104</b> such as geographic location and/or distance, and cost of computation for the selected one or more functions <b>103</b> may be analyzed to determine feasibility of using the selected one or more functions <b>103</b> for processing the data <b>107</b>. Thus, the information related to the one or more functions <b>104</b> helps in selecting optimal serverless computing platform from the plurality of serverless computing platforms <b>102</b> for processing the data <b>107</b>.</p>
<p id="p0031" num="0031">In an embodiment, the information related to the one or more functions <b>104</b> may be also used for performing a comparison among the one or more functions <b>103</b> and/or the plurality of serverless computing platforms <b>102</b>. For example, the runtime support provided by the Microsoft<sup>®</sup> Azure<sup>®</sup> may include C# and NodeJS as runtime for programming languages. Whereas, the AWS<sup>®</sup> platform may support Java and Python as the runtime for programming languages. Thus, in this scenario, comparing the runtime support of both the serverless platforms, i.e. Azure<sup>®</sup> and AWS<sup>®</sup>, would be helpful to determine the serverless computing platform <b>102</b> that best suits the required runtime support.</p>
<p id="p0032" num="0032">In an embodiment, the one or more characteristics of the data <b>211</b> may be used to determine a domain of the data <b>107</b>. Also, the one or more characteristics of the data <b>211</b> may be used to determine the one or more operations that are required to be performed on the data <b>107</b>. For example, if the one or more characteristics of the data <b>211</b> indicate that the data <b>107</b> is complex and time-critical, then the one or more processing operations, which are capable of processing complex, time-critical data may be selected for processing the data <b>107</b>.</p>
<p id="p0033" num="0033">In an embodiment, the one or more characteristics of the data <b>211</b> may be determined using a data classification technique, such as logistic regression analysis. For example, consider a use case of an exploratory well, which is drilled to find if there is oil in the well. In such instances, drill tools having a number of sensors may be used to learn about properties of rock while the well is being drilled, to help make on-site drilling decisions like where to steer the<!-- EPO <DP n="11"> --> tool or when to set casing to seal off formation pressure or when to give up further drilling and the like. Thus, the one or more characteristics of the data <b>211</b> collected during this task may include size of the drill hole, shape of the drill hole, geothermal temperature profile, rock density, rock porosity, formation fluid resistivity, and the like. Another use case may be in retail domain, wherein various customer data is collected to understand the consumer behavior. Here, based on the data collected from in-store Point-of-Sale (PoS) systems, online purchase data and loyalty programs, the retailers may analyze the characteristics of the data <b>211</b> to derive insights into customer behavior to improve overall shopping experience and to respond to trends and demands in real-time.</p>
<p id="p0034" num="0034">In an embodiment, the confidence scores <b>213</b> are computed for each of the one or more functions <b>103</b> based on correlation between the one or more processing operations selected for processing the data <b>107</b>, and the information related to each of the one or more functions <b>104</b>. Alternatively, the confidence scores <b>213</b> may be determined based on historical data related to successful processing of the data <b>107</b> by the one or more functions <b>103</b>. i.e., the confidence score for a function may be a higher value, if the function has been successful in processing the data <b>107</b> in a predetermined number of previous instances.</p>
<p id="p0035" num="0035">In an embodiment, each of the system data <b>207</b> may be processed by one or more modules <b>209</b> of the serverless orchestrator <b>105</b>. In some implementations, the one or more modules <b>209</b> may be communicatively coupled to the processor <b>203</b> for performing one or more functions <b>103</b> of the serverless orchestrator <b>105</b>. In an implementation, the one or more modules <b>209</b> may include, without limiting to, a receiving module <b>217</b>, an operation determination module <b>219</b>, a confidence score determination module <b>221</b>, a target function identification module <b>223</b>, a function deployment module <b>225</b>, and other modules <b>227</b>.</p>
<p id="p0036" num="0036">As used herein, the term module refers to an Application Specific Integrated Circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) and memory that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality. In an embodiment, the other modules <b>227</b> may be used to perform various miscellaneous functionalities of the serverless orchestrator <b>105</b>. It will be appreciated that such one or more modules <b>209</b> may be represented as a single module or a combination of different modules.<!-- EPO <DP n="12"> --></p>
<p id="p0037" num="0037">In an embodiment, the receiving module <b>217</b> is configured for receiving the information related to each of the one or more functions <b>104</b> associated with each of the plurality of serverless computing platforms <b>102</b> in the serverless computing environment <b>101</b>. Also, the receiving module <b>217</b> may be used for receiving the data to be processed <b>107</b> from the one or more data sources <b>106</b> associated with the serverless orchestrator <b>105</b>.</p>
<p id="p0038" num="0038">In an embodiment, the operation determination module <b>219</b> is configured for determining the one or more processing operations required for processing the data <b>107</b>. The operation determination module <b>219</b> may determine the one or more processing operations based on the one or more characteristics of the data <b>211</b> and a domain related to the data. As an example, in case of data processing in an Oil and Gas domain, the one or more processing operations, which need to be selected for computing reservoir quality may be determined based on capability of the one or more functions <b>103</b>, providing the one or more processing operations, in computing the reservoir quality. Thus, the operation determination module <b>219</b> may determine right set of processing operations for processing the data <b>107</b> by mapping the one or more characteristics of the data <b>211</b>, and the insights and/or results that are required to be derived from the data <b>107</b>.</p>
<p id="p0039" num="0039">In an embodiment, the confidence score determination module <b>221</b> may be configured for determining the confidence scores <b>213</b> corresponding to each of the one or more functions <b>103</b> based on correlation between the one or more processing operations and the information related to each of the one or more functions <b>104</b>. In an embodiment, the confidence score determination module <b>221</b> may classify the data <b>107</b>, and the information related to each of one or more functions <b>104</b> into respective bins associated with the data <b>107</b> and the one or more functions <b>103</b>. Thereafter, the confidence score determination module <b>221</b> may establish relationships between the bins corresponding to the data <b>107</b> and the bins corresponding to the information, based on one or more inputs received from a user. Subsequently, the confidence score determination module <b>221</b> may perform a machine learning on the established relationships to create an ontology of the data <b>107</b> and the corresponding function required for processing the data <b>107</b>.</p>
<p id="p0040" num="0040">In other words, the confidence score determination module <b>221</b> may use the machine learning model to learn the relationship existing between the data <b>107</b>, and the information related to each of the one or more functions <b>104</b>. Subsequently, the confidence score determination module <b>221</b> may map the data <b>107</b>, and the relevant set of functions based on<!-- EPO <DP n="13"> --> knowledge of relationships, to tag and categorize the data <b>107</b>. Further, information related to categorization of the data <b>107</b> may be fed into a data classification model for determining whether an acceptable level of confidence score may be assigned to the identified set of functions. In an embodiment, machine learning techniques used for establishing the relationships may be reinforced with feedback provided by the user upon completion of the processing of the data <b>107</b>.</p>
<p id="p0041" num="0041">In an embodiment, the target function identification module <b>223</b> may be configured for identifying the target function from the one or more functions <b>103</b>. In an embodiment, the target function identification module <b>223</b> may identify the target function based on an evaluation of the confidence scores <b>213</b> of each of the one or more functions <b>103</b>. Initially, the target function identification module <b>223</b> may compare the confidence scores <b>213</b> of each of the one or more functions <b>103</b> with a pre-defined threshold value and rank each of the one or more functions <b>103</b> based on the confidence scores <b>213</b>. Subsequently, the target function identification module <b>223</b> may identify the target function from the set of functions based on the ranking.</p>
<p id="p0042" num="0042">In an embodiment, the pre-defined threshold value of the confidence score is use case specific. For example, in some use cases, which involve less-critical data processing operations, a confidence level of 0.7 may be acceptable. Here, the value 0.7 means that the function being selected for processing the data <b>107</b> has successfully processed the data in 70% of the times among total number of times it has been selected for processing the data <b>107</b>. Similarly, for use cases which involve critical data processing operations, a confidence level of 0.9 may be required. In an embodiment, the pre-defined threshold may be adapted based on the inputs provided by the user during processing of the data <b>107</b> or based on the feedback provided by the user upon completion of the processing of the data <b>107</b>.</p>
<p id="p0043" num="0043">In an embodiment, when the target function is a combination of the one or more functions <b>103</b> sourced from two or more distinct serverless computing platforms from the plurality of serverless computing platforms <b>102</b>, the confidence score for such a target function may be determined based on a weighted confidence score determined for each of the one or more functions <b>103</b> constituting the target function.</p>
<p id="p0044" num="0044">In an embodiment, the function deployment module <b>225</b> may be configured for deploying the target function for performing the one or more processing operations by forwarding the data <b>107</b> to the serverless computing platform associated with the target<!-- EPO <DP n="14"> --> function. In some implementations, the function deployment module <b>225</b> may deploy the target function when an event is triggered for processing the forwarded data <b>107</b> by the target function. As an example, the event may be a request/command from the user for processing the data <b>107</b>.</p>
<p id="p0045" num="0045"><figref idref="f0003"><b>FIG. 3</b></figref> shows a flowchart illustrating a method of processing data <b>107</b> in a serverless computing environment <b>101</b> in accordance with some embodiments of the present disclosure.</p>
<p id="p0046" num="0046">As illustrated in <figref idref="f0003"><b>FIG. 3</b></figref>, the method <b>300</b> may include one or more blocks illustrating a method of processing the data <b>107</b> using the serverless orchestrator <b>105</b> shown in <figref idref="f0001"><b>FIG. 1</b></figref>. The method <b>300</b> may be described in the general context of computer executable instructions. Generally, computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, and functions, which perform specific functions or implement specific abstract data types.</p>
<p id="p0047" num="0047">The order in which the method <b>300</b> is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method. Additionally, individual blocks may be deleted from the methods without departing from the scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof.</p>
<p id="p0048" num="0048">At block <b>301</b>, the method <b>300</b> includes receiving, by the serverless orchestrator <b>105</b>, information related to each of one or more functions <b>104</b> associated with each of the plurality of serverless computing platforms <b>102</b>. In an embodiment, the information may be related to capability of the one or more functions <b>103</b> to perform a set of operations when an event is triggered. As an example, the information related to the one or more functions <b>104</b> may include, without limiting to, at least one of runtime support and Service Level Agreement (SLA) support provided by the plurality of serverless computing platforms <b>102</b>, geographic location of the plurality of serverless computing platforms <b>102</b>, cost of computation and network latency associated with the plurality of serverless computing platforms <b>102</b>, and computing resources available on the plurality of serverless computing platforms <b>102</b>.<!-- EPO <DP n="15"> --></p>
<p id="p0049" num="0049">At block <b>303</b>, the method <b>300</b> includes receiving, by the serverless orchestrator <b>105</b>, the data to be processed <b>107</b>, from one or more data sources <b>106</b> associated with the serverless orchestrator <b>105</b>.</p>
<p id="p0050" num="0050">At block <b>305</b>, the method <b>300</b> includes determining, by the serverless orchestrator <b>105</b>, one or more processing operations to be performed on the data <b>107</b> based on one or more characteristics of the data <b>211</b> and a domain related to the data <b>107</b>. As an example, the one or more characteristics of the data <b>211</b> may include, without limiting to, at least one of size of the data <b>107</b>, location of the one or more data sources <b>106</b>, complexity of the data <b>107</b>, and service-level requirements associated with the data <b>107</b>.</p>
<p id="p0051" num="0051">At block <b>307</b>, the method <b>300</b> includes determining, by the serverless orchestrator <b>105</b>, confidence scores <b>213</b> corresponding to each of the one or more functions <b>103</b> based on correlation between the one or more processing operations and the information related to each of the one or more functions <b>104</b>. In an embodiment, correlating includes classifying the data <b>107</b> and the information related to each of one or more functions <b>104</b> into respective bins associated with the data <b>107</b> and the one or more functions <b>103</b>. Further, correlating includes establishing relationships between the bins corresponding to the data <b>107</b> and the bins corresponding to the information, based on one or more inputs received from user. Furthermore, correlating includes performing a machine learning on the relationships to create an ontology of the data <b>107</b> and corresponding function required for processing the data <b>107</b>.</p>
<p id="p0052" num="0052">At block <b>309</b>, the method <b>300</b> includes identifying, by the serverless orchestrator <b>105</b>, a target function from the one or more functions <b>103</b>, which is best suited for performing the one or more processing operations. In an embodiment, the target function may be a combination of one or more functions <b>103</b> sourced from two or more distinct serverless computing platforms from the plurality of serverless computing platforms <b>102</b>.</p>
<p id="p0053" num="0053">In an embodiment, identification of the target function is based on an evaluation of the confidence scores <b>213</b>. Evaluation of the confidence scores <b>213</b> comprises comparing the confidence scores <b>213</b> with a pre-defined threshold, identifying a set of functions from the one or more functions <b>103</b> based on the comparison, and ranking each function from the set of functions based on the confidence scores <b>213</b>. Thereafter, the target function may be identified from the set of functions based on the ranking.<!-- EPO <DP n="16"> --></p>
<p id="p0054" num="0054">At block <b>311</b>, the method <b>300</b> includes deploying, by the serverless orchestrator <b>105</b>, the target function for performing the one or more operations by forwarding the data <b>107</b> to a serverless computing platform associated with the target function.</p>
<p id="p0055" num="0055">At block <b>313</b>, the method <b>300</b> includes triggering, by the serverless orchestrator <b>105</b>, an event for processing the forwarded data <b>107</b> by the target function. In an embodiment, the machine learning techniques used for correlating may be reinforced based on feedback provided by the user upon completion of the processing of the data <b>107</b>. Constant reinforcement of the machine learning techniques based on the feedback provided by the user or human experts would help in minimizing negative outcomes while identifying the right target function.</p>
<p id="p0056" num="0056"><figref idref="f0004"><b>FIG. 4</b></figref> illustrates a block diagram of an exemplary computer system <b>400</b> for implementing embodiments consistent with the present disclosure. In an embodiment, the computer system <b>400</b> may be serverless orchestrator <b>105</b> shown in <figref idref="f0001"><b>FIG. 1</b></figref>, which may be used for processing data <b>107</b> in a serverless computing environment <b>101</b>. The computer system <b>400</b> may include a central processing unit ("CPU" or "processor") <b>402</b>. The processor <b>402</b> may comprise at least one data processor for executing program components for executing user- or system-generated business processes. A user may include a person, a user in the computing environment <b>100</b>, or any system/sub-system being operated parallelly to the computer system <b>400</b>. The processor <b>402</b> may include specialized processing units such as integrated system (bus) controllers, memory management control units, floating point units, graphics processing units, digital signal processing units, etc.</p>
<p id="p0057" num="0057">The processor <b>402</b> may be disposed in communication with one or more input/output (I/O) devices (<b>411</b> and <b>412</b>) via I/O interface <b>401</b>. The I/O interface <b>401</b> may employ communication protocols/methods such as, without limitation, audio, analog, digital, stereo, IEEE<sup>®</sup>-1394, serial bus, Universal Serial Bus (USB), infrared, PS/2, BNC, coaxial, component, composite, Digital Visual Interface (DVI), high-definition multimedia interface (HDMI), Radio Frequency (RF) antennas, S-Video, Video Graphics Array (VGA), IEEE<sup>®</sup> 802.n /b/g/n/x, Bluetooth, cellular (e.g., Code-Division Multiple Access (CDMA), High-Speed Packet Access (HSPA+), Global System For Mobile Communications (GSM), Long-Term Evolution (LTE) or the like), etc. Using the I/O interface <b>401</b>, the computer system <b>400</b> may communicate with one or more I/O devices <b>411</b> and <b>412</b>.</p>
<p id="p0058" num="0058">In some embodiments, the processor <b>402</b> may be disposed in communication with a communication network <b>409</b> via a network interface <b>403</b>. The network interface <b>403</b> may<!-- EPO <DP n="17"> --> communicate with the communication network <b>409</b>. The network interface <b>403</b> may employ connection protocols including, without limitation, direct connect, Ethernet (e.g., twisted pair 10/100/1000 Base T), Transmission Control Protocol/Internet Protocol (TCP/IP), token ring, IEEE<sup>®</sup> 802.11a/b/g/n/x, etc. Using the network interface <b>403</b> and the communication network <b>409</b>, the computer system <b>400</b> may receive information related to one or more functions <b>104</b> associated with a plurality of serverless computing platforms <b>102</b>. Further, the communication network <b>409</b> may be used for receiving the data to be processed <b>107</b> on the serverless computing environment <b>101</b>, from the one or more data sources <b>106</b>.</p>
<p id="p0059" num="0059">In an implementation, the communication network <b>409</b> can be implemented as one of the several types of networks, such as intranet or Local Area Network (LAN) and such within the organization. The communication network <b>409</b> may either be a dedicated network or a shared network, which represents an association of several types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), etc., to communicate with each other. Further, the communication network <b>409</b> may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, etc.</p>
<p id="p0060" num="0060">In some embodiments, the processor <b>402</b> may be disposed in communication with a memory <b>405</b> (e.g., RAM <b>413</b>, ROM <b>414</b>, etc. as shown in <figref idref="f0004"><b>FIG. 4</b></figref>) via a storage interface <b>404</b>. The storage interface <b>404</b> may connect to memory <b>405</b> including, without limitation, memory drives, removable disc drives, etc., employing connection protocols such as Serial Advanced Technology Attachment (SATA), Integrated Drive Electronics (IDE), IEEE-1394, Universal Serial Bus (USB), fiber channel, Small Computer Systems Interface (SCSI), etc. The memory drives may further include a drum, magnetic disc drive, magneto-optical drive, optical drive, Redundant Array of Independent Discs (RAID), solid-state memory devices, solid-state drives, etc.</p>
<p id="p0061" num="0061">The memory <b>405</b> may store a collection of program or database components, including, without limitation, user/application interface <b>406</b>, an operating system <b>407</b>, a web browser <b>408</b>, and the like. In some embodiments, computer system <b>400</b> may store user/application data (not shown), such as the data, variables, records, etc. as described in this invention. Such databases may be implemented as fault-tolerant, relational, scalable, secure databases such as Oracle<sup>®</sup> or Sybase<sup>®</sup>.<!-- EPO <DP n="18"> --></p>
<p id="p0062" num="0062">The operating system <b>407</b> may facilitate resource management and operation of the computer system <b>400</b>. Examples of operating systems include, without limitation, APPLE<sup>®</sup> MACINTOSH<sup>®</sup> OS X<sup>®</sup>, UNIX<sup>®</sup>, UNIX-like system distributions (E.G., BERKELEY SOFTWARE DISTRIBUTION<sup>®</sup> (BSD), FREEBSD<sup>®</sup>, NETBSD<sup>®</sup>, OPENBSD, etc.), LINUX<sup>®</sup> DISTRIBUTIONS (E.G., RED HAT<sup>®</sup>, UBUNTU<sup>®</sup>, KUBUNTU<sup>®</sup>, etc.), IBM<sup>®</sup> OS/2<sup>®</sup>, MICROSOFT<sup>®</sup> WINDOWS<sup>®</sup> (XP<sup>®</sup>, VISTA<sup>®</sup>/7/8, 10 etc.), APPLE<sup>®</sup>IOS<sup>®</sup>, GOOGLE<sup>™</sup> ANDROID<sup>™</sup>, BLACKBERRY<sup>®</sup> OS , or the like.</p>
<p id="p0063" num="0063">The user interface <b>406</b> may facilitate display, execution, interaction, manipulation, or operation of program components through textual or graphical facilities. For example, the user interface <b>406</b> may provide computer interaction interface elements on a display system operatively connected to the computer system <b>400</b>, such as cursors, icons, check boxes, menus, scrollers, windows, widgets, and the like. Further, Graphical User Interfaces (GUIs) may be employed, including, without limitation, APPLE<sup>®</sup>MACINTOSH<sup>®</sup> operating systems' Aqua<sup>®</sup>, IBM<sup>®</sup> OS/2<sup>®</sup>, MICROSOFT<sup>®</sup> WINDOWS<sup>®</sup> (e.g., Aero, Metro, etc.), web interface libraries (e.g., ActiveX<sup>®</sup>, JAVA<sup>®</sup>, JAVASCRIPT<sup>®</sup>, AJAX, HTML, ADOBE<sup>®</sup> FLASH<sup>®</sup>, etc.), or the like.</p>
<p id="p0064" num="0064">The web browser <b>408</b> may be a hypertext viewing application. Secure web browsing may be provided using Secure Hypertext Transport Protocol (HTTPS), Secure Sockets Layer (SSL), Transport Layer Security (TLS), and the like. The web browsers <b>408</b> may utilize facilities such as AJAX, DHTML, ADOBE<sup>®</sup> FLASH<sup>®</sup>, JAVASCRIPT<sup>®</sup>, JAVA<sup>®</sup>, Application Programming Interfaces (APIs), and the like. Further, the computer system <b>400</b> may implement a mail server stored program component. The mail server may utilize facilities such as ASP, ACTIVEX<sup>®</sup>, ANSI<sup>®</sup> C++/C#, MICROSOFT<sup>®</sup>, .NET, CGI SCRIPTS, JAVA<sup>®</sup>, JAVASCRIPT<sup>®</sup>, PERL<sup>®</sup>, PHP, PYTHON<sup>®</sup>, WEBOBJECTS<sup>®</sup>, etc. The mail server may utilize communication protocols such as Internet Message Access Protocol (IMAP), Messaging Application Programming Interface (MAPI), MICROSOFT<sup>®</sup> exchange, Post Office Protocol (POP), Simple Mail Transfer Protocol (SMTP), or the like. In some embodiments, the computer system <b>400</b> may implement a mail client stored program component. The mail client may be a mail viewing application, such as APPLE<sup>®</sup> MAIL, MICROSOFT<sup>®</sup> ENTOURAGE<sup>®</sup>, MICROSOFT<sup>®</sup> OUTLOOK<sup>®</sup>, MOZILLA<sup>®</sup> THUNDERBIRD<sup>®</sup>, and the like.</p>
<p id="p0065" num="0065">Furthermore, one or more computer-readable storage media may be utilized in implementing embodiments consistent with the present invention. A computer-readable storage<!-- EPO <DP n="19"> --> medium refers to any type of physical memory on which information or data readable by a processor may be stored. Thus, a computer-readable storage medium may store instructions for execution by one or more processors, including instructions for causing the processor(s) to perform steps or stages consistent with the embodiments described herein. The term "computer-readable medium" should be understood to include tangible items and exclude carrier waves and transient signals, i.e., non-transitory. Examples include Random Access Memory (RAM), Read-Only Memory (ROM), volatile memory, nonvolatile memory, hard drives, Compact Disc (CD) ROMs, Digital Video Disc (DVDs), flash drives, disks, and any other known physical storage media.</p>
<p id="p0066" num="0066"><u>Advantages of the embodiment of the present disclosure are illustrated herein.</u></p>
<p id="p0067" num="0067">In an embodiment, the method of present disclosure uses machine learning techniques to dynamically identify an optimal serverless computing platform, among the plurality of serverless computing platforms, for processing data.</p>
<p id="p0068" num="0068">In an embodiment, the method of present disclosure dynamically identifies an optimal function, which is a combination of one or more optimal functions sourced from distinct serverless computing platforms, for efficient processing of the data.</p>
<p id="p0069" num="0069">In an embodiment, the method of present disclosure minimizes function warm-up time by automatically selecting the set of functions required for processing the data, thereby reducing expenditure involved in setting-up and running a serverless computing platform.</p>
<p id="p0070" num="0070">In an embodiment, the method of present disclosure minimizes network latency involved in transferring the data to be processed to the serverless computing platforms, since one or more serverless computing platforms, which are closer to the sources of data, are selected for processing the data.</p>
<p id="p0071" num="0071">A description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary, a variety of optional components are described to illustrate the wide variety of possible embodiments.</p>
<p id="p0072" num="0072">When a single device or article is described herein, it will be clear that more than one device/article (whether they cooperate) may be used in place of a single device/article.<!-- EPO <DP n="20"> --> Similarly, where more than one device or article is described herein (whether they cooperate), it will be clear that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the invention need not include the device itself.</p>
<p id="p0073" num="0073">Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based here on.</p>
<p id="p0074" num="0074">While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the scope being indicated by the following claims.</p>
</description>
<claims id="claims01" lang="en"><!-- EPO <DP n="21"> -->
<claim id="c-en-01-0001" num="0001">
<claim-text>A method for processing data in a serverless computing environment (101) comprising a plurality of serverless computing platforms (102), the method comprising:
<claim-text>receiving, by a serverless orchestrator (105), information related to each of one or more functions (104) associated with each of the plurality of serverless computing platforms (102),<br/>
wherein the information related to each of one or more functions (104) is related to capability of the one or more functions (103) to perform a set of operations when an event is triggered, the information comprising a geographic location or a distance of each of the plurality of serverless computing platforms (102), and a cost of computation associated with each of the plurality of serverless computing platforms (102);</claim-text>
<claim-text>receiving, by the serverless orchestrator (105), data to be processed (107), from one or more data sources (106) associated with the serverless orchestrator (105);</claim-text>
<claim-text>determining, by the serverless orchestrator (105), one or more processing operations to be performed on the data (107) based on one or more characteristics of the data (211) and a domain related to the data (107),<br/>
the one or more characteristics of the data (211) comprising at least one of the size of the data (107), a location of the one or more data sources (106), complexity of the data (107), and a service-level requirement associated with the data (107);</claim-text>
<claim-text>determining, by the serverless orchestrator (105), confidence scores (213) corresponding to each of the one or more functions (103) based on correlation between the one or more processing operations and the information related to each of the one or more functions (104), a confidence score of a function being indicative of a capability of the function to perform the one or more processing operations on the data (107);</claim-text>
<claim-text>identifying, by the serverless orchestrator (105), a target function from the one or more functions (103), which is best suited for performing the one or more processing operations,<br/>
wherein identification of the target function is based on an evaluation of the confidence scores (213) from comparing the confidence score (213) of each of the one or more functions (103) with a pre-defined threshold value, wherein a higher threshold value is required for critical data processing operations than for less-critical data processing operations;</claim-text>
<claim-text>deploying, by the serverless orchestrator (105), the target function for performing the one or more processing operations by forwarding the data (107) to a serverless computing platform associated with the target function; and</claim-text>
<claim-text>triggering, by the serverless orchestrator (105), an event for processing the forwarded data by the target function,<!-- EPO <DP n="22"> --></claim-text>
<claim-text>wherein a serverless computing platform closer to the one or more data sources (106) than another serverless computing platform is selected as the serverless computing platform associated with the target function.</claim-text></claim-text></claim>
<claim id="c-en-01-0002" num="0002">
<claim-text>The method as claimed in claim 1, wherein the correlation comprises:
<claim-text>classifying the data (107), and the information related to each of one or more functions (104) into respective bins associated with the data (107), and the one or more functions (103);</claim-text>
<claim-text>establishing relationships between the bins corresponding to the data (107) and the bins corresponding to the information, based on one or more inputs received from a user; and</claim-text>
<claim-text>performing a machine learning on the relationships to create an ontology of the data (107) and corresponding function required for processing the data (107).</claim-text></claim-text></claim>
<claim id="c-en-01-0003" num="0003">
<claim-text>The method as claimed in claim 2, wherein the machine learning is reinforced with feedback provided by the user upon completion of the processing of the data (107).</claim-text></claim>
<claim id="c-en-01-0004" num="0004">
<claim-text>The method as claimed in any of claims 1 to 3, wherein the evaluation comprises:
<claim-text>comparing the confidence scores (213) with the pre-defined threshold;</claim-text>
<claim-text>identifying a set of functions from the one or more functions (103) based on the comparison;</claim-text>
<claim-text>ranking each function from the set of functions based on the confidence scores (213); and</claim-text>
<claim-text>identifying the target function from the set of functions based on the ranking.</claim-text></claim-text></claim>
<claim id="c-en-01-0005" num="0005">
<claim-text>The method as claimed in claim 4, wherein the pre-defined threshold is adapted based on the feedback provided by the user upon completion of the processing of the data (107).</claim-text></claim>
<claim id="c-en-01-0006" num="0006">
<claim-text>The method as claimed in any of claims 1 to 5, wherein the confidence scores (213) corresponding to each of the one or more functions (103) are determined based on historical data related to successful processing of the data (107) by the one or more functions (103).</claim-text></claim>
<claim id="c-en-01-0007" num="0007">
<claim-text>The method as claimed in any of claims 1 to 6, wherein the target function is a combination of one or more functions (103) sourced from two or more distinct serverless computing platforms from the plurality of serverless computing platforms (102).<!-- EPO <DP n="23"> --></claim-text></claim>
<claim id="c-en-01-0008" num="0008">
<claim-text>The method as claimed in claim 7, wherein the confidence score for the target function is determined based on a weighted confidence score determined for each of the one or more functions (103) constituting the target function.</claim-text></claim>
<claim id="c-en-01-0009" num="0009">
<claim-text>The method as claimed in any of claims 1 to 8, wherein the information related to the one or more functions (104) further comprises at least one of runtime support and Service Level Agreement, SLA, support provided by the plurality of serverless computing platforms (102), network latency associated with the plurality of serverless computing platforms (102), and computing resources available on the plurality of serverless computing platforms (102).</claim-text></claim>
<claim id="c-en-01-0010" num="0010">
<claim-text>A serverless orchestrator (105) for processing data in a serverless computing environment (101) comprising a plurality of serverless computing platforms (102), the serverless orchestrator (105) comprising:
<claim-text>a processor (203); and</claim-text>
<claim-text>a memory (205), communicatively coupled to the processor (203), wherein the memory (205) stores processor-executable instructions, which on execution, cause the serverless orchestrator (105) to perform the method as claimed in any of claims 1 to 9.</claim-text></claim-text></claim>
<claim id="c-en-01-0011" num="0011">
<claim-text>A computer readable medium including instructions stored thereon that when processed by at least one processor (203) of a serverless orchestrator (105) cause the serverless orchestrator (105) to perform the method as claimed in any of claims 1 to 9.</claim-text></claim>
</claims>
<claims id="claims02" lang="de"><!-- EPO <DP n="24"> -->
<claim id="c-de-01-0001" num="0001">
<claim-text>Verfahren zum Verarbeiten von Daten in einer serverlosen Rechenumgebung (101), die eine Vielzahl von serverlosen Rechenplattformen (102) umfasst, das Verfahren umfassend:
<claim-text>Empfangen von Informationen durch einen serverlosen Orchestrator (105), die sich auf jede von einer oder mehreren Funktionen (104) beziehen, die jeder der Vielzahl von serverlosen Rechenplattformen (102) zugeordnet sind,</claim-text>
<claim-text>wobei sich die Informationen, die sich auf jede von einer oder mehreren Funktionen (104) beziehen, auf die Fähigkeit der einen oder der mehreren Funktionen (103) beziehen, einen Satz von Vorgängen durchzuführen, wenn ein Ereignis ausgelöst wird, wobei die Informationen einen geografischen Standort oder eine Entfernung von jeder der Vielzahl von serverlosen Rechenplattformen (102) und einen Rechenaufwand umfassen, der jeder der Vielzahl von serverlosen Rechenplattformen (102) zugeordnet ist;</claim-text>
<claim-text>Empfangen von zu verarbeitenden Daten (107) durch den serverlosen Orchestrator (105) von einer oder mehreren Datenquellen (106), die dem serverlosen Orchestrator (105) zugeordnet sind;</claim-text>
<claim-text>Bestimmen eines oder mehrerer Verarbeitungsvorgänge durch den serverlosen Orchestrator (105), die an den Daten (107) durchgeführt werden sollen, basierend auf einer oder mehreren Eigenschaften der Daten (211) und einer Domäne, die sich auf die Daten (107) bezieht,</claim-text>
<claim-text>wobei die eine oder die mehreren Eigenschaften der Daten (211) zumindest eines von der Größe der Daten (107), einem Standort der einen oder der mehreren Datenquellen (106), der Komplexität der Daten (107) und einer Dienstgrad-Anforderung umfassen, die den Daten (107) zugeordnet ist;</claim-text>
<claim-text>Bestimmen von Konfidenzwerten (213) durch den serverlosen Orchestrator (105), die jeder der einen oder der mehreren Funktionen (103) entsprechen, basierend auf einer Korrelation zwischen dem einen oder den mehreren Verarbeitungsvorgängen und den Informationen, die sich auf jede der einen oder der mehreren Funktionen (104) beziehen, wobei ein Konfidenzwert einer Funktion die Fähigkeit der Funktion angibt, den einen oder die mehreren Verarbeitungsvorgänge an den Daten (107) durchzuführen;</claim-text>
<claim-text>Identifizieren einer Zielfunktion aus der einen oder den mehreren Funktionen (103) durch den serverlosen Orchestrator (105), welche am besten zum Durchführen des einen oder der mehreren Verarbeitungsvorgänge geeignet ist,</claim-text>
<claim-text>wobei die Identifizierung der Zielfunktion auf einer Bewertung der Konfidenzwerte (213) aus dem Vergleichen des Konfidenzwerts (213) jeder der einen oder der mehreren Funktionen (103) mit einem vordefinierten Schwellenwert basiert, wobei ein höherer Schwellenwert für kritische Datenverarbeitungsvorgänge erforderlich ist als für weniger kritische<!-- EPO <DP n="25"> --> Datenverarbeitungsvorgänge;</claim-text>
<claim-text>Implementieren der Zielfunktion durch den serverlosen Orchestrator (105) zum Durchführen des einen oder der mehreren Verarbeitungsvorgänge durch Weiterleiten der Daten (107) an eine serverlose Rechenplattform, die der Zielfunktion zugeordnet ist; und</claim-text>
<claim-text>Auslösen eines Ereignisses durch den serverlosen Orchestrator (105) zum Verarbeiten der weitergeleiteten Daten durch die Zielfunktion,</claim-text>
<claim-text>wobei eine serverlose Rechenplattform, die näher an der einen oder den mehreren Datenquellen (106) liegt als eine weitere serverlose Rechenplattform, als die serverlose Rechenplattform ausgewählt wird, die der Zielfunktion zugeordnet ist.</claim-text></claim-text></claim>
<claim id="c-de-01-0002" num="0002">
<claim-text>Verfahren nach Anspruch 1, wobei die Korrelation umfasst:
<claim-text>Klassifizieren der Daten (107) und der Informationen, die sich auf jede von einer oder mehreren Funktionen (104) beziehen, in jeweilige Behälter, die den Daten (107) und der einen oder den mehreren Funktionen (103) zugeordnet sind;</claim-text>
<claim-text>Erstellen von Beziehungen zwischen den Behältern, die den Daten (107) entsprechen, und den Behältern, die den Informationen entsprechen, basierend auf einer oder mehreren Eingaben, die von einem Benutzer empfangen wurden; und</claim-text>
<claim-text>Durchführen eines maschinellen Lernens an den Beziehungen, um eine Ontologie der Daten (107) und die entsprechende Funktion zu erstellen, die für das Verarbeiten der Daten (107) erforderlich ist.</claim-text></claim-text></claim>
<claim id="c-de-01-0003" num="0003">
<claim-text>Verfahren nach Anspruch 2, wobei das maschinelle Lernen durch Rückmeldung verstärkt wird, die durch den Benutzer nach Abschluss des Verarbeitens der Daten (107) bereitgestellt wird.</claim-text></claim>
<claim id="c-de-01-0004" num="0004">
<claim-text>Verfahren nach einem der Ansprüche 1 bis 3, wobei die Bewertung umfasst:
<claim-text>Vergleichen der Konfidenzwerte (213) mit dem vordefinierten Schwellenwert;</claim-text>
<claim-text>Identifizieren eines Satzes von Funktionen aus der einen oder den mehreren Funktionen (103) basierend auf dem Vergleich;</claim-text>
<claim-text>Einordnen jeder Funktion aus dem Satz von Funktionen basierend auf den Konfidenzwerten (213); und</claim-text>
<claim-text>Identifizieren der Zielfunktion aus dem Satz von Funktionen basierend auf dem Einordnen.</claim-text></claim-text></claim>
<claim id="c-de-01-0005" num="0005">
<claim-text>Verfahren nach Anspruch 4, wobei der vordefinierte Schwellenwert basierend auf der Rückmeldung angepasst wird, die durch den Benutzer nach Abschluss des Verarbeitens der Daten (107) bereitgestellt wird.<!-- EPO <DP n="26"> --></claim-text></claim>
<claim id="c-de-01-0006" num="0006">
<claim-text>Verfahren nach einem der Ansprüche 1 bis 5, wobei die Konfidenzwerte (213), die jeder der einen oder den mehreren Funktionen (103) entsprechen, basierend auf Verlaufsdaten bestimmt werden, die sich auf ein erfolgreiches Verarbeiten der Daten (107) durch die eine oder die mehreren Funktionen (103) beziehen.</claim-text></claim>
<claim id="c-de-01-0007" num="0007">
<claim-text>Verfahren nach einem der Ansprüche 1 bis 6, wobei die Zielfunktion eine Kombination aus einer oder mehreren Funktionen (103) ist, die von zwei oder mehr verschiedenen serverlosen Rechenplattformen aus der Vielzahl von serverlosen Rechenplattformen (102) stammen.</claim-text></claim>
<claim id="c-de-01-0008" num="0008">
<claim-text>Verfahren nach Anspruch 7, wobei der Konfidenzwert für die Zielfunktion basierend auf einem gewichteten Konfidenzwert bestimmt wird, der für jede der einen oder der mehreren Funktionen (103) bestimmt wird, aus denen die Zielfunktion besteht.</claim-text></claim>
<claim id="c-de-01-0009" num="0009">
<claim-text>Verfahren nach einem der Ansprüche 1 bis 8, wobei die Informationen, die sich auf die eine oder die mehreren Funktionen (104) beziehen, ferner zumindest eine von Laufzeitunterstützung und Dienstgrad-Vereinbarung-, SLA, Unterstützung, die durch die Vielzahl serverloser Rechenplattformen (102) bereitgestellt wird, Netzwerklatenz, die der Vielzahl von serverlosen Rechenplattformen (102) zugeordnet ist, und Rechenressourcen umfassen, die auf der Vielzahl von serverlosen Rechenplattformen (102) verfügbar sind.</claim-text></claim>
<claim id="c-de-01-0010" num="0010">
<claim-text>Serverloser Orchestrator (105) zum Verarbeiten von Daten in einer serverlosen Rechenumgebung (101), der eine Vielzahl von serverlosen Rechenplattformen (102) umfasst, der serverlose Orchestrator (105) umfassend:
<claim-text>einen Prozessor (203); und</claim-text>
<claim-text>einen Speicher (205), der kommunikativ an den Prozessor (203) gekoppelt ist, wobei der Speicher (205) prozessorausführbare Anweisungen speichert, welche bei Ausführung den serverlosen Orchestrator (105) veranlassen, das Verfahren nach einem der Ansprüche 1 bis 9 durchzuführen.</claim-text></claim-text></claim>
<claim id="c-de-01-0011" num="0011">
<claim-text>Computerlesbares Medium, das darauf gespeicherte Anweisungen einschließt, die, wenn sie durch den zumindest einen Prozessor (203) eines serverlosen Orchestrators (105) verarbeitet werden, den serverlosen Orchestrator (105) veranlassen, das Verfahren nach einem der Ansprüche 1 bis 9 durchzuführen.</claim-text></claim>
</claims>
<claims id="claims03" lang="fr"><!-- EPO <DP n="27"> -->
<claim id="c-fr-01-0001" num="0001">
<claim-text>Procédé permettant le traitement de données dans un environnement informatique sans serveur (101) comprenant une pluralité de plates-formes informatiques sans serveur (102), le procédé comprenant :
<claim-text>la réception, par un orchestrateur sans serveur (105), d'informations relatives à chacune d'une ou plusieurs fonctions (104) associées à chacune de la pluralité de plates-formes informatiques sans serveur (102),</claim-text>
<claim-text>lesdites informations relatives à chacune d'une ou plusieurs fonctions (104) étant liées à la capacité de la ou des fonctions (103) à réaliser un ensemble d'opérations lorsqu'un événement est déclenché, les informations comprenant un emplacement géographique ou une distance de chacune de la pluralité de plates-formes informatiques sans serveur (102), et un coût de calcul associé à chacune de la pluralité de plates-formes informatiques sans serveur (102) ;</claim-text>
<claim-text>la réception, par l'orchestrateur sans serveur (105), des données à traiter (107), en provenance d'une ou plusieurs sources de données (106) associées à l'orchestrateur sans serveur (105) ;</claim-text>
<claim-text>la détermination, par l'orchestrateur sans serveur (105), d'une ou de plusieurs opérations de traitement à réaliser sur les données (107) sur la base d'une ou plusieurs caractéristiques des données (211) et d'un domaine relatif aux données (107),</claim-text>
<claim-text>la ou les caractéristiques des données (211) comprenant au moins l'un de la taille des données (107), d'un emplacement de la ou des sources de données (106), de la complexité des données (107) et d'une exigence de niveau de service associée aux données (107) ;</claim-text>
<claim-text>la détermination, par l'orchestrateur sans serveur (105), des scores de confiance (213) correspondant à chacune de la ou des fonctions (103) sur la base d'une corrélation entre la ou les opérations de traitement et les informations relatives à chacune de la ou des fonctions (104), un score de confiance d'une fonction indiquant une capacité de la fonction à réaliser la ou les opérations de traitement sur les données (107) ;</claim-text>
<claim-text>l'identification, par l'orchestrateur sans serveur (105), d'une fonction cible parmi la ou les fonctions (103), qui est la mieux adaptée pour réaliser la ou les opérations de traitement,</claim-text>
<claim-text>ladite identification de la fonction cible étant basée sur une évaluation des scores de confiance (213) à partir de la comparaison du score de confiance (213) de chacune de la ou des fonctions (103) avec une valeur seuil prédéfinie, une valeur seuil plus élevée étant nécessaire pour les opérations de traitement de données critiques que pour les opérations de traitement de données moins critiques ;</claim-text>
<claim-text>le déploiement, par l'orchestrateur sans serveur (105), de la fonction cible pour réaliser la ou les opérations de traitement en transférant les données (107) à une plate-forme informatique<!-- EPO <DP n="28"> --> sans serveur associée à la fonction cible ; et</claim-text>
<claim-text>le déclenchement, par l'orchestrateur sans serveur (105), d'un événement pour le traitement des données transférées par la fonction cible,</claim-text>
<claim-text>une plate-forme informatique sans serveur plus proche de la ou des sources de données (106) qu'une autre plate-forme informatique sans serveur étant sélectionnée en tant que plate-forme informatique sans serveur associée à la fonction cible.</claim-text></claim-text></claim>
<claim id="c-fr-01-0002" num="0002">
<claim-text>Procédé selon la revendication 1, ladite corrélation comprenant :
<claim-text>le classement des données (107) et des informations relatives à chacune d'une ou plusieurs fonctions (104) dans des compartiments respectifs associés aux données (107) et à la ou aux fonctions (103) ;</claim-text>
<claim-text>l'établissement des relations entre les compartiments correspondant aux données (107) et les compartiments correspondant aux informations, sur la base d'une ou plusieurs entrées reçues en provenance d'un utilisateur ; et</claim-text>
<claim-text>la réalisation d'un apprentissage automatique sur les relations pour créer une ontologie des données (107) et une fonction correspondante requise pour le traitement des données (107).</claim-text></claim-text></claim>
<claim id="c-fr-01-0003" num="0003">
<claim-text>Procédé selon la revendication 2, ledit apprentissage automatique étant renforcé par un retour fourni par l'utilisateur à la fin du traitement des données (107).</claim-text></claim>
<claim id="c-fr-01-0004" num="0004">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 3, ladite évaluation comprenant :
<claim-text>la comparaison des scores de confiance (213) avec le seuil prédéfini ;</claim-text>
<claim-text>l'identification d'un ensemble de fonctions parmi la ou les fonctions (103) sur la base de la comparaison ;</claim-text>
<claim-text>la hiérarchisation de chaque fonction parmi l'ensemble de fonctions sur la base des scores de confiance (213) ; et</claim-text>
<claim-text>l'identification de la fonction cible parmi l'ensemble de fonctions sur la base de la hiérarchisation.</claim-text></claim-text></claim>
<claim id="c-fr-01-0005" num="0005">
<claim-text>Procédé selon la revendication 4, ledit seuil prédéfini étant adapté sur la base du retour fourni par l'utilisateur à la fin du traitement des données (107).</claim-text></claim>
<claim id="c-fr-01-0006" num="0006">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 5, lesdits scores de confiance (213) correspondant à chacune de la ou des fonctions (103) étant déterminés sur la base de données historiques relatives au traitement réussi des données (107) par la ou les fonctions (103).<!-- EPO <DP n="29"> --></claim-text></claim>
<claim id="c-fr-01-0007" num="0007">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 6, ladite fonction cible étant une combinaison d'une ou plusieurs fonctions (103) provenant de deux ou plus plates-formes informatiques sans serveur distinctes parmi la pluralité de plates-formes informatiques sans serveur (102).</claim-text></claim>
<claim id="c-fr-01-0008" num="0008">
<claim-text>Procédé selon la revendication 7, ledit score de confiance pour la fonction cible étant déterminé sur la base d'un score de confiance pondéré déterminé pour chacune de la ou des fonctions (103) constituant la fonction cible.</claim-text></claim>
<claim id="c-fr-01-0009" num="0009">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 8, lesdites informations relatives à la ou aux fonctions (104) comprenant en outre au moins l'un d'un support d'exécution et d'un support d'accord de niveau de service, SLA, fourni par la pluralité de plates-formes informatiques sans serveur (102), de la latence du réseau associée à la pluralité de plates-formes informatiques sans serveur (102), et des ressources informatiques disponibles sur la pluralité de plates-formes informatiques sans serveur (102).</claim-text></claim>
<claim id="c-fr-01-0010" num="0010">
<claim-text>Orchestrateur sans serveur (105) destiné à traiter des données dans un environnement informatique sans serveur (101) comprenant une pluralité de plates-formes informatiques sans serveur (102), l'orchestrateur sans serveur (105) comprenant :
<claim-text>un processeur (203) ; et</claim-text>
<claim-text>une mémoire (205) couplée en communication au processeur (203), ladite mémoire (205) stockant des instructions exécutables par un processeur, qui, lors de l'exécution, amènent l'orchestrateur sans serveur (105) à réaliser le procédé selon l'une quelconque des revendications 1 à 9.</claim-text></claim-text></claim>
<claim id="c-fr-01-0011" num="0011">
<claim-text>Support lisible par ordinateur comprenant des instructions stockées sur celui-ci qui, lorsqu'elles sont traitées par au moins un processeur (203) d'un orchestrateur sans serveur (105), amènent l'orchestrateur sans serveur (105) à réaliser le procédé selon l'une quelconque des revendications 1 à 9.</claim-text></claim>
</claims>
<drawings id="draw" lang="en"><!-- EPO <DP n="30"> -->
<figure id="f0001" num="1"><img id="if0001" file="imgf0001.tif" wi="146" he="227" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="31"> -->
<figure id="f0002" num="2"><img id="if0002" file="imgf0002.tif" wi="161" he="188" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="32"> -->
<figure id="f0003" num="3"><img id="if0003" file="imgf0003.tif" wi="157" he="220" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="33"> -->
<figure id="f0004" num="4"><img id="if0004" file="imgf0004.tif" wi="159" he="209" img-content="drawing" img-format="tif"/></figure>
</drawings>
<ep-reference-list id="ref-list">
<heading id="ref-h0001"><b>REFERENCES CITED IN THE DESCRIPTION</b></heading>
<p id="ref-p0001" num=""><i>This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.</i></p>
<heading id="ref-h0002"><b>Patent documents cited in the description</b></heading>
<p id="ref-p0002" num="">
<ul id="ref-ul0001" list-style="bullet">
<li><patcit id="ref-pcit0001" dnum="US20180113746A1"><document-id><country>US</country><doc-number>20180113746</doc-number><kind>A1</kind></document-id></patcit><crossref idref="pcit0001">[0006]</crossref></li>
</ul></p>
<heading id="ref-h0003"><b>Non-patent literature cited in the description</b></heading>
<p id="ref-p0003" num="">
<ul id="ref-ul0002" list-style="bullet">
<li><nplcit id="ref-ncit0001" npl-type="s"><article><author><name>NASTIC et al.</name></author><atl>A Serverless Real-Time Data Analytics Platform for Edge Computing</atl><serial><sertitle>IEEE INTERNET COMPUTING</sertitle><pubdate><sdate>20170000</sdate><edate/></pubdate></serial></article></nplcit><crossref idref="ncit0001">[0006]</crossref></li>
</ul></p>
</ep-reference-list>
</ep-patent-document>
