Patent Description:
A cloud-computing system may include a number of data centers that may be located in different geographic locations. Each data center may include many servers. A server may be a physical computer system. The cloud-computing system may run virtual machines on a server. A virtual machine may be a program that emulates a distinct computer system but that can run on a server with other virtual machines. Like a physical computer, a virtual machine may include an operating system and applications.

Data centers may be located far away from large population centers and from clients who access the cloud-computing system. The distance between the client and the data center may cause a client to experience latency in accessing the cloud-computing system.

<CIT> discloses a method for migrating an application container between nodes in a network. An interest for an application container is received by an origin node and, in response, the origin node transfers a copy of the application container over the network and to a destination node. The origin node can then shut down the application container and transmit any remaining container state and received requests to the destination node. The destination node may then update a routing plane for the network to provide delivery of service requests to the migrated application.

<CIT> discloses the placement and use of a network node function in a second network node instead of using the network node function in a first network node. The network node function is a server function or a router function. The second network node is typically located in or close to the client device or to the network of an operator servicing a client device to enable optimization of client- server communication and optimization of the load on the client- server communication in the network. Client requests transmitted to the first network node may be redirected to the second network node.

It is the object of the present invention to provide an improved method and system for reducing latency in providing service from a cloud-computing system.

In accordance with one aspect of the present disclosure, a method is disclosed for reducing latency in providing services from a cloud-computing system, according to independent claim <NUM>. Further embodiments of the method are provided in dependent claims <NUM>-<NUM>.

In accordance with a second aspect of the present disclosure, one or more non-transitory computer-readable media having computer-executable instructions stored thereon are disclosed, according to independent claim <NUM>.

Additional features and advantages will be set forth in the description that follows. Features and advantages of the disclosure may be realized and obtained by means of the systems and methods that are particularly pointed out in the appended claims. Features of the present disclosure will become more fully apparent from the following description and appended claims, or may be learned by the practice of the disclosed subject matter as set forth hereinafter.

In order to describe the manner in which the above-recited and other features of the disclosure can be obtained, a more particular description will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. For better understanding, the like elements have been designated by like reference numbers throughout the various accompanying figures. Understanding that the drawings depict some example embodiments, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:.

This disclosure concerns systems and methods for reducing latency in accessing dynamic content hosted on a cloud-computing system. Hosting dynamic content at an edge of the cloud-computing system may offer better latency profiles for compute-intensive and latency-sensitive workloads. In other words, the closer a container is to the user, the better the user experience is. But keeping a container close to the user is a challenge because the route traffic from the user travels to reach the cloud-computing system may change. The systems and methods of this disclosure place dynamic content in containers hosted on edge sites of the cloud-computing system and automatically relocate the containers based on where network traffic from a client device enters the cloud-computing system.

A cloud-computing system may refer to a collection of computing devices or resources that can be accessed remotely. The cloud-computing system may provide computing services over the Internet to clients. The cloud-computing system may host content provided by a third-party content provider and give customers of the content provider access to the content. The cloud-computing system may include a number of data centers located in different geographic locations. Each data center may include multiple servers. A server may be a physical computer system. The server may include multiple virtual containers (such as virtual machines). Each virtual container may provide services to a client. In this way, a single server may provide services to multiple clients. A virtual container may provide a client access to content (such as a game) of a third-party content provider.

Data centers may be located far away from large population centers and from clients who access the cloud-computing system. Data centers may be large real-estate complexes that require significant amounts of power to operate. Land may be more available and less expensive in less populated areas. Similarly, power may be cheaper and easier to access in less populated areas. The distance between the client and the data center may cause a client to experience latency in accessing the cloud-computing system and services hosted on the cloud-computing system.

Clients who want to access cloud-computing services generally rely on one or more networks external to the cloud-computing system. The one or more networks may include an internet service provider (ISP). It is unlikely that an ISP has, or that additional networks connecting the ISP to the cloud-computing system have, a large bandwidth to carry traffic to a data center located in a rural and potentially remote area. The limited bandwidth available for carrying traffic from a client device to a rural data center may result in a client experiencing latency in accessing the cloud-computing system and receiving services from the cloud-computing system.

To help reduce latency a cloud-computing system may include edge sites. The edge sites may be part of the cloud-computing system and be connected to the data center through the cloud-computing system's internal network and backbone. The edge sites may, however, be located closer to where large groups of clients reside, such as in population centers and large cities. The edge sites may be able to receive communications from networks external to the cloud-computing system. The edge sites may be much smaller in physical size than data centers. The edge sites may also have much smaller capacity and fewer computing resources than data centers. As a result, the edge sites may be limited to hosting frequently accessed content and services. But because edge sites may be located close to clients, hosting cloud-computing services on an edge site may reduce the latency a client experiences. Communications between the client and an edge site may have to travel a shorter distance than communications between the client and a data center. Moreover, an ISP may have more bandwidth available for carrying traffic between a client and a nearby edge site than for carrying traffic between a client and a distant data center.

Edge sites may also reduce latency and improve overall reliability because once information reaches an edge site, the cloud-computing system can use its own backbone and network to carry the information to a data center if necessary. The operator of a cloud-computing system may control the reliability and bandwidth of the backbone and network of the cloud-computing system but have no control over the reliability of networks external to the cloud-computing system. The operator of the cloud-computing system may have a greater incentive to maintain a reliable network than those operating networks external to the cloud-computing system.

Reducing latency may improve user experience with the cloud-computing system and content (including third-party content) hosted on the cloud-computing system. For example, consider that a cloud-computing system hosts a software application (like a game) for a third-party content provider. Assume a user accesses the game using a smart phone. High latency may cause the game to constantly pause to load content. Or it may result in noticeable delays between performing actions on the smart phone and the actions registering on the screen. Reducing the latency may reduce or eliminate those delays, resulting in a much smoother game-playing experience for the user.

Improving user experience with third-party content hosted on the cloud-computing system may benefit the cloud-computing system operator. Third-party content providers may pay to host their content on the cloud-computing system. And the amount the third-party content provider pays may be based (at least in part) on the total demand for the content provider's content. When users have a good experience using the third-party content provider's content on the cloud-computing system, demand for the content provider's content may increase. The increased demand may cause the content provider to pay more money to the cloud-computing system operator. Positive user experience with the content provider's content may also cause additional content providers to host their content on the cloud-computing system. Thus, reducing latency may increase revenues of the cloud-computing system.

In addition to reducing latency, a cloud-computing system may attract content providers (which may also be referred to as service providers) by providing serverless computing. A cloud-computing system may provide a physical server to a third-party service provider for hosting the third-party's services. But because of the challenges with managing a physical host, the cloud-computing system may also allow the service provider to provide content using a virtual machine. A virtual machine may be a program that emulates a distinct computer system but that can run on a server with other virtual machines. Like a physical computer, a virtual machine may include an operating system and applications. Thus, managing the virtual machine is less complex than managing a server. And using virtual machines (rather than entire servers) gives the service provider greater flexibility in choosing the amount of computing resources that it needs. But the service provider must still manage the virtual machine (such as scaling the virtual machine as demand increases). An even more flexible and less burdensome option (at least from the service provider's perspective) is serverless computing. With serverless computing, the service provider provides a cloud-computing system with small functions that together provide the service provider's services. The cloud-computing system then deploys the services in a sandbox environment. The sandbox environment may host containers, which provide the service provider's services to customers. All the service provider does is provide code. The operator of the cloud-computing system manages scaling and updating.

A cloud-computing system may improve customer and service provider experience with the cloud-computing system by hosting serverless computing containers on edge sites close to a user and dynamically migrating those containers in response to changes in where external traffic enters the cloud-computing system. Doing so may reduce latency experienced by users of services hosted on a cloud-computing system.

A service provider may provide content or code to a cloud-computing system operator. The operator may deploy the code in a container hosted at a data center. But because the data center may not be close to a user of the container, the cloud-computing system may automatically move the container to minimize latency experienced by the user. For example, the cloud-computing system may automatically move the container to a location within the cloud-computing system that is closer to the user than the data center, such as an edge site near the user. The edge site may be where the user connects to the cloud-computing system. Or the edge site may be near where the user connects to the cloud-computing system if where the user connects to the cloud-computing system lacks capacity for the container. In the alternative to deploying the container first at the data center and then migrating the container, the cloud-computing system may automatically deploy the container in the first instance near the user. In this context, a distance may be measured in terms of a physical distance or in terms of a distance a signal must travel from one point to another.

At some future point, the location (such as the edge site) hosting the container may no longer be where traffic from the user enters the cloud-computing system. For example, the user may use an ISP to connect to the internet. The ISP may route traffic from the user to a second network, which then sends the traffic to a first edge site close to the user. The first edge site may host a container that provides services to the user. But the second network may become unavailable due to maintenance, failure, cost, or other reasons. At that point, the ISP may route traffic to a third network, which then sends the traffic to a second edge site farther from the user than the first edge site. The user's traffic now enters the cloud-computing system at the second edge site, but the container that services the user is still at the first edge site. In that situation, traffic from the user may have to travel through the cloud-computing system from the second edge site to the first edge site. This pathway may be long (and much longer than the pathway from the user to the second edge site) and result in a significant increase in latency experienced by the user. The user, of course, will not understand the cause of the latency increase and may blame the service provider or the cloud-computing system.

To improve user experience the cloud-computing system includes a service that automatically works to minimize latency based on changes in network routing. The service automatically detects that the user's traffic now enters the cloud-computing system through the second edge site. In response, the service automatically migrates the container from its current location to a new location closer to the second edge site, such as at the second edge site. Because the second edge site is the point where the user connects to the cloud-computing system, the user experiences less latency.

To detect changes in where user traffic enters the cloud-computing system the service may periodically (such as at fixed time intervals) query edge sites for information regarding containers hosted at the edge sites. For each container, the service creates a record associating the container, an external network being serviced by the container, and a connection location where traffic from the external network is entering the cloud-computing system. At the next query, the service compares, for each container, a current connection location of the external network with the previous connection location of the external network. If the current connection location is different from the previous connection location, the service migrates the container to the current connection location. Automatically detecting changes in where traffic enters the cloud-computing system and automatically migrating containers in response to those changes improves user experience with services hosted on the cloud-computing system. That in turn increases service-provider satisfaction and attracts more service providers to the cloud-computing system. In at least this way, the disclosed systems and methods improve cloud-computing technology.

<FIG> illustrates an example cloud-computing system <NUM> for reducing latency in accessing cloud-computing services.

The cloud-computing system <NUM> may include a data center <NUM>. The data center <NUM> may be a large real-estate complex that includes servers <NUM>. The servers <NUM> may include physical computing resources such as processors, memory, storage, and networking hardware. The data center <NUM> may require large amounts of power to run the servers <NUM>. The cloud-computing system <NUM> may use the data center <NUM> to provide cloud-computing services to clients. The data center <NUM> may host content and services from third-party content and service providers.

The data center <NUM> may have a physical location. The physical location of the data center <NUM> may be chosen based on land availability, land prices, access to power, power prices, ambient temperature, wind conditions, etc. The physical location of the data center <NUM> may be far away from large population centers. For example, the data center <NUM> may be located in a remote, rural area.

The cloud-computing system <NUM> may include edge sites <NUM>. The edge sites <NUM> may include physical computing resources. The edge sites <NUM> may receive communications from networks external to the cloud-computing system <NUM>. The physical computing resources of the edge sites <NUM> may be more limited than the physical computing resources of the data center <NUM>. The edge sites <NUM> may be designed to store frequently accessed content or to provide frequently requested services. For example, assume the cloud-computing system <NUM> stores digital copies of movies for a content provider. Assume the edge sites <NUM> do not have enough storage to store all the movies hosted by the cloud-computing system <NUM>. Assume that the content provider uploads a new movie to the cloud-computing system <NUM> and that the content provider anticipates that the new movie will be extremely popular. The cloud-computing system <NUM> may place copies of the new movie on the edge sites <NUM>.

The edge sites <NUM> may have physical locations different from the data center <NUM>. The edge sites <NUM> may communicate with the data center <NUM> through a network of the cloud-computing system <NUM>. The edge site 106a may have a first physical location and the edge site 106b may have a second physical location. The first physical location may be different from the second physical location. The first physical location and the second physical location may be different from the physical location of the data center <NUM>. The first physical location and the second physical location may be far away from the physical location of the data center <NUM>. The first physical location and the second physical location may be chosen to reduce a distance between clients who want to access services provided by the cloud-computing system <NUM> and the physical computing resources of the cloud-computing system <NUM> that provide the services. Having a shorter physical distance between the clients and the edge sites <NUM> may mean that communications from the clients can reach the edge sites <NUM> much faster than the communications can reach the data center <NUM>. The first physical location and the second physical location may be in large population centers. For example, the first physical location may be in a metropolitan area (such as Los Angeles, California, USA), the second physical location may be in a different metropolitan area (such as San Francisco, California, USA), and the data center <NUM> may be in a rural area of West Virginia, USA. A communication from a client in San Jose, California, USA may be able to reach either Los Angeles or San Francisco much faster than the communication can reach West Virginia.

Placing the edge sites <NUM> in metropolitan areas may reduce latency experienced by clients who access the cloud-computing system <NUM>. For example, consider a situation where a client in Los Angeles, California wants to use an app on the client's phone to view a movie that is stored on the cloud-computing system <NUM>. Assume that the data center <NUM> is located in West Virginia and the movie is stored on the data center <NUM>. The large distance between the client and the data center <NUM> may result in the client experiencing a slow response time between clicking on the movie in the app and the movie beginning playing on the phone. The large distance may also cause pauses in the movie to allow for content buffering. But assume an alternative situation where a copy of the movie is stored on the edge site 106a, and the edge site 106a is located in Los Angeles. The shorter distance between the client and the edge site 106a may result in the client experiencing a faster response time than the client experienced when the movie was stored on the data center <NUM>.

A client device <NUM> may access the cloud-computing system <NUM>. Communications between the client device <NUM> and the cloud-computing system <NUM> may travel through one or more networks <NUM>. The networks <NUM> may be internet service providers. There may be connections <NUM> that link the client device <NUM>, the networks <NUM>, and the cloud-computing system <NUM>. The connection 116a may be a pathway through which the client device <NUM> and the network 114a can exchange information. The connection 116b may be a pathway through which the network 114a and the network 114b exchange information. The connection 116c may be a pathway through which the network 114a and the network 114c exchange information. The connection 116d may be a pathway through which the network 114b and the cloud-computing system <NUM> exchange information. To exchange information with the cloud-computing system <NUM> the network 114b may exchange information with the edge site 106a. The connection 116e may be a pathway through which the network 114c and the cloud-computing system <NUM> exchange information. To exchange information with the cloud-computing system <NUM> the network 114c may exchange information with the edge site 106b. It may be that the network 114a does not have a connection through which it can exchange information directly with the cloud-computing system <NUM>.

There may be more than one pathway through which information can travel from the client device <NUM> to the cloud-computing system <NUM>. A first pathway may be the following: (a) the client device <NUM> sends data to the network 114a using the connection 116a; (b) the network 114a sends the data to the network 114b using the connection 116b; and (c) the network 114b sends the data to the edge site 106a using the connection 116d. A second pathway may be the following: (a) the client device <NUM> sends data to the network 114a using the connection 116a; (b) the network 114a sends the data to the network 114c using the connection 116c; and (c) the network 114c sends the data to the edge site 106b using the connection 116e.

One of the first pathway or the second pathway may be a primary pathway and the other may be a secondary pathway. The network 114a may send data to the cloud-computing system <NUM> using the primary pathway unless the primary pathway is not available. When the primary pathway is not available, the network 114a may send the data to the cloud-computing system <NUM> using the secondary pathway. A pathway may become unavailable if one or more connections or networks on the pathway become unavailable. A connection or network may become unavailable due to a hardware failure, due to the network or the connection refusing to carry traffic for the cloud-computing system <NUM>, or due to other reasons. For example, assume the primary pathway is the first pathway described above. Assume, however, that the network 114b fails or goes down for maintenance. In that instance, the client device <NUM> and the cloud-computing system <NUM> may use the second pathway described above to communicate.

The primary pathway for transmitting data between the cloud-computing system <NUM> and the client device <NUM> may change. For example, the first pathway may initially be set as the primary pathway, and the cloud-computing system <NUM> and the client device <NUM> may initially exchange information using the first pathway. At a later time, the second pathway may become the primary pathway. At that time, the cloud-computing system <NUM> and the client device <NUM> may exchange information using the second pathway unless it becomes unavailable. The primary pathway may change for a variety of reasons. For example, assume the first pathway described above is initially the primary pathway. But assume the network 114b increases prices for carrying traffic to the cloud-computing system <NUM>. That may result in the second pathway described above becoming the primary pathway. In that situation, even though the first pathway is still available, the cloud-computing system <NUM> and the client device <NUM> may stop using the first pathway and begin using the second pathway to communicate.

The network 114a may advertise one or more border gateway protocol (BGP) prefixes, which may be referred to as "prefixes. " A prefix may be a string of characters that indicates a source of network traffic. A prefix may represent a collection of Internet Protocol (IP) addresses. One or more users may be behind a prefix. A prefix may indicate to the cloud-computing system <NUM> a network location for sending return communications. The network 114a may advertise a prefix that includes the client device <NUM>. The cloud-computing system <NUM> may receive the prefix when the cloud-computing system receives communications from the network 114a that originate from the prefix. The network 114a may advertise more than one prefix.

The edge sites <NUM> may include containers, such as container <NUM>. Although <FIG> shows only the container <NUM>, the edge site 106a and the edge site 106b may contain multiple containers. The data center <NUM> may also include containers.

The container <NUM> may be hosted in a compute sandbox deployed on the edge site 106a. The container <NUM> may enable serverless computing. The compute sandbox may host multiple containers. The container <NUM> may provide access to computing resources, applications, content, or services. The content provided by the container <NUM> may be static or dynamic. When the content is dynamic content, the container <NUM> may maintain information about one or more states of the dynamic content. The container <NUM> may have a globally unique identifier (GUI) that uniquely identifies the container <NUM> as compared to all other containers operating within the cloud-computing system <NUM>. The container <NUM> may provide services to a particular client or client device. The container <NUM> may be limited to providing services to the particular client or client device. The container <NUM> may have a container location. The container location may be a location within the cloud-computing system <NUM> where the container <NUM> is hosted. For example, the container location of the container <NUM> may be the edge site 106a.

The container <NUM> may be associated with a prefix. Being associated with a prefix may mean the container <NUM> provides services to a user accessing the cloud-computing system <NUM> from the prefix. The container <NUM> may be associated with only a single prefix. The single prefix may, however, have multiple associated containers. Traffic from the prefix associated with the container <NUM> may enter the cloud-computing system <NUM>. The traffic may enter the cloud-computing system <NUM> through an edge site, such as the edge site 106a or the edge site 106b. Traffic from the prefix associated with the container <NUM> may enter the cloud-computing system <NUM> at an edge site where the container <NUM> is hosted or at a different edge site. Traffic from the prefix associated with the container <NUM> may also enter the cloud-computing system <NUM> at the data center <NUM>.

The cloud-computing system <NUM> may include a service <NUM>. The service <NUM> may obtain BGP routes from all the edge sites <NUM>. The BGP routes may indicate a path (such as networks and connections) that data entering the cloud-computing system <NUM> has taken to reach the cloud-computing system <NUM>. The BGP routes may include prefixes. A network being used by client devices to access the internet may advertise one or more prefixes to the cloud-computing system <NUM>. The cloud-computing system <NUM> may use the prefix to send data back to the network and the client devices.

The service <NUM> may periodically obtain and store information regarding network traffic at the edge sites <NUM>. The service <NUM> may query one or more of the edge sites 106a, 106b of the cloud-computing system <NUM> for information regarding prefixes that are entering the cloud-computing system <NUM>. The service <NUM> may store information regarding prefixes that are entering the cloud-computing system <NUM>. The service <NUM> may also obtain and store information regarding any containers that support the prefixes that are entering the cloud-computing system <NUM>. The service <NUM> may associate the edge site where a prefix is entering the cloud-computing system <NUM>, the prefix, and the containers that support the prefix in a record and store the record. For example, assume a first prefix accesses the cloud-computing system <NUM> at the edge site 106a. Also assume the container <NUM> provides services to the first prefix. The service <NUM> may associate, in a record, the edge site 106a with the first prefix and the container <NUM>. The service <NUM> may store the record on the cloud-computing system <NUM>.

The service <NUM> may periodically obtain and store information regarding containers (such as the container <NUM>) operating on the edge sites <NUM>. The service <NUM> may obtain the information at defined time intervals (such as every five minutes or every <NUM> seconds). The service <NUM> may obtain and store the GUI for the container <NUM>. The service <NUM> may obtain and store information regarding the prefix the container <NUM> supports. The service <NUM> may obtain and store information regarding a prefix-connection location for the prefix that the container <NUM> supports. The prefix-connection location may be a location where traffic from the prefix enters the cloud-computing system <NUM>. For example, assume the client device <NUM> accesses the network 114a through a client prefix. Assume that traffic from the client prefix is routed through the network 114b to the edge site 106a. The prefix-connection location for the client prefix may be the edge site 106a. The service <NUM> may associate the GUI of the container <NUM> and the prefix the container <NUM> supports. The service <NUM> may also associate the prefix-connection location of the prefix associated with the container <NUM> with the GUI of the container <NUM> and the prefix. The service <NUM> may obtain and store information about a container location of the container <NUM>. The service <NUM> may associate the container location (such as the edge site 106a) with the GUI of the container <NUM>.

The service <NUM> may use information the service <NUM> obtains regarding containers and prefixes to automatically determine whether to modify container locations for containers hosted on the cloud-computing system <NUM>. The service <NUM> may use the information the service <NUM> obtains to automatically determine how to modify the container locations. The service <NUM> may automatically determine how to modify the container locations based on the information the service <NUM> obtains.

For example, the service <NUM> may compare current information regarding containers operating on the edge sites <NUM> with past information regarding containers operating on the edge sites <NUM>. The service <NUM> may, based on the comparison, automatically modify a location of one or more containers operating in the cloud-computing system <NUM>. The service <NUM> may automatically modify the location of the one or more containers to reduce latency experienced by one or more users. The service <NUM> may automatically modify the location of the one or more containers such that the one or more containers are closer to where traffic from prefixes supported by the one or more containers enters the cloud-computing system <NUM> than the containers are currently. In this context, a first location may be closer to a second location than to a third location if data travels a shorter distance to go from the first location to the second location than from the first location to the third location. The service <NUM> may automatically migrate the one or more containers to an edge site of the cloud-computing system <NUM> where the traffic supported by the one or more containers enters the cloud-computing system <NUM>.

Consider the following example. At time t<NUM> the service <NUM> obtains and stores information regarding the container <NUM>. The container <NUM> has a GUI of "4172ee21-fc66-44d8-be64-4c6b4db86870. " The container <NUM> supports a prefix "<NUM>. <NUM>/<NUM>. " The prefix <NUM>. <NUM>/<NUM> has a prefix-connection location of the edge site 106a. The service <NUM> stores and associates the GUI, the prefix, and the prefix-connection location as (4172ee21-fc66-44d8-be64-4c6b4db86870, <NUM>. <NUM>/<NUM>, the edge site 106a). Now assume at time t<NUM>, which is some period after time t<NUM>, the service <NUM> again obtains information regarding the container <NUM>. The container <NUM> has the GUI of 4172ee21-fc66-44d8-be64-4c6b4db86870 and supports the prefix <NUM>. <NUM>/<NUM>. But the prefix-connection location of the prefix <NUM>. <NUM>/<NUM> is now edge site 106b. The service <NUM> may observe that the prefix-connection location for the container <NUM> and the prefix <NUM>. <NUM>/<NUM> at time t<NUM> is different from the prefix-connection location at time t<NUM>. The service <NUM> may, in response to that observation, determine to modify a container location of the container <NUM>. The service <NUM> may, based on that observation, migrate the container <NUM> to the prefix-connection location at time t<NUM>, which is the edge site 106b.

In the above example, moving the container <NUM> from the edge site 106a to the edge site 106b may reduce latency experienced by a user accessing dynamic content housed in the container <NUM>. The following example illustrates this point. A user is located in Los Angeles, California, USA. The user uses the client device <NUM> to play an interactive game hosted on the cloud-computing system <NUM>. The edge site 106a hosts the interactive game (or at least some portion of the interactive game) for the user in the container <NUM>. The user connects to the network 114a through the connection 116a to play the interactive game. Traffic from the client device <NUM> travels through the connection 116b, the network 114b, and the connection 116d to the edge site 106a. The edge site 106a is located within <NUM> miles of the user. After the user has been playing the interactive game for a period of time while experiencing low latency, the network 114b stops carrying traffic from the network 114a to the edge site 106a. At that time, traffic from the network 114a begins travelling through the network 114c to the edge site 106b. The edge site 106b is <NUM> miles from the user. Moreover, the edge site 106b communicates with the edge site 106a through the data center <NUM>. The data center <NUM> is located <NUM>,<NUM> miles from the edge site 106a and the edge site 106b. Even though the container <NUM> is still within <NUM> miles of the client device <NUM>, communications from the client device <NUM> may have to travel more than <NUM>,<NUM> miles to reach the container <NUM>. As a result, the user may experience significantly higher latency while playing the interactive game. Moving the container <NUM> to the edge site 106b means that communications from the client device <NUM> to the container <NUM> have to travel only <NUM> miles (instead of <NUM>,<NUM>). That may reduce the latency the user experiences in playing the interactive game.

<FIG> illustrates an example of a service <NUM> within a cloud-computing system <NUM>.

The cloud-computing system <NUM> may provide services to client devices. The cloud-computing system <NUM> may provide services to the client devices on behalf of third-party content providers. To send data to the cloud-computing system <NUM> the client devices may connect to one or more networks external to the cloud-computing system <NUM>. The networks may announce prefixes that represent the client devices.

Traffic from the prefixes may enter the cloud-computing system <NUM> at an edge site of the cloud-computing system <NUM>. The cloud-computing system <NUM> may include multiple edge sites. For example, the cloud-computing system <NUM> may include edge site 206a, edge site 206b, edge site 206c, and edge site 206d. Traffic from prefix 218a may enter the cloud-computing system <NUM> at the edge site 206a. Traffic from prefix 218b may enter the cloud-computing system <NUM> at the edge site 206b. Traffic from prefix 218c may enter the cloud-computing system <NUM> at the edge site 206c. The cloud-computing system <NUM> may also include data center <NUM>.

The cloud-computing system <NUM> may provide services using containers. The cloud-computing system <NUM> may host containers at different locations within the cloud-computing system <NUM>. The data center <NUM> may host container 208e, the edge site 206a may host container 208a and container 208b, the edge site 206c may host container 208c, and the edge site 206d may host container 208d. A container may provide services to a user associated with a prefix. For example, the container 208a may provide services to a first user accessing the cloud-computing system <NUM> from the prefix 218a. The container 208b may provide services to a second user accessing the cloud-computing system <NUM> from the prefix 218a. The container 208c may provide services to a third user accessing the cloud-computing system <NUM> from the prefix 218c. The container 208d may provide services to a fourth user accessing the cloud-computing system <NUM> from the prefix 218c. The container 208e may provide services to a fifth user accessing the cloud-computing system <NUM> from the prefix 218b.

The service <NUM> may obtain and store information regarding the containers <NUM> operating on the cloud-computing system <NUM>. The service <NUM> may obtain information regarding the containers <NUM> from the edge sites <NUM> and the data center <NUM>. The service <NUM> may create and store a record <NUM> with the information regarding the containers. For example, the service <NUM> may obtain information regarding the container 208a. The service <NUM> may obtain a GUI 222a for the container 208a. The service <NUM> may determine that the container 208a is supporting the prefix 218a. The service <NUM> may determine that the prefix 218a is accessing the cloud-computing system <NUM> at the edge site 206a. The service <NUM> may associate the GUI 222a, the prefix 218a, and the edge site 206a in entry 220a of the record <NUM>. The service <NUM> may also determine a container location for the container 208a and include the container location in the entry 220a.

Similarly, the service <NUM> may obtain information regarding the container 208b. The service <NUM> may obtain a GUI 222b for the container 208b. The service <NUM> may determine that the container 208b is supporting the prefix 218a. The service <NUM> may determine that the prefix 218a is accessing the cloud-computing system <NUM> at the edge site 206a. The service <NUM> may associate the GUI 222b, the prefix 218a, and the edge site 206a in entry 220b of the record <NUM>. The service may also determine a container location for the container 208b and include the container location in the entry 220b.

Similarly, the service <NUM> may obtain information regarding the container 208c. The service <NUM> may obtain a GUI 222c for the container 208c. The service <NUM> may determine that the container 208c is supporting the prefix 218c. The service <NUM> may determine that the prefix 218c is accessing the cloud-computing system <NUM> at the edge site 206c. The service <NUM> may associate the GUI 222c, the prefix 218c, and the edge site 206c in entry 220c of the record <NUM>. The service may also determine a container location for the container 208c and include the container location in the entry 220c.

Similarly, the service <NUM> may obtain information regarding the container 208d. The service <NUM> may obtain a GUI 222d for the container 208d. The service <NUM> may determine that the container 208d is supporting the prefix 218c. The service <NUM> may determine that the prefix 218c is accessing the cloud-computing system <NUM> at the edge site 206c. The service <NUM> may associate the GUI 222d, the prefix 218c, and the edge site 206c in entry 220d of the record <NUM>. The service may also determine a container location for the container 208d and include the container location in the entry 220d.

Similarly, the service <NUM> may obtain information regarding the container 208e. The service <NUM> may obtain a GUI 222e for the container 208e. The service <NUM> may determine that the container 208e is supporting the prefix 218b. The service <NUM> may determine that the prefix 218b is accessing the cloud-computing system <NUM> at the edge site 206b. The service <NUM> may associate the GUI 222e, the prefix 218b, and the edge site 206b in entry 220e of the record <NUM>. The service may also determine a container location for the container 208e and include the container location in the entry 220e.

The service <NUM> may use the information the service <NUM> obtains regarding the containers to determine whether to modify a location of the containers <NUM> hosted on the cloud-computing system <NUM>. The service <NUM> may modify the location of the containers <NUM> based on the information. The service <NUM> may determine a new location for the containers <NUM> based on the information. The service <NUM> may migrate one or more of the containers <NUM> to new locations in order to reduce latency experienced by users. The service <NUM> may migrate one or more of the containers <NUM> to new locations closer to where traffic from the prefixes supported by the containers enter the cloud-computing system <NUM>. The service <NUM> may migrate one or more of the containers <NUM> to edge sites where the traffic from the prefixes supported by the containers enters the cloud-computing system <NUM>.

In determining whether to modify the location of the containers <NUM>, the service <NUM> may compare current prefix-connection locations associated with the containers 208a, 208b, 208c, 208d, 208e to previous prefix-connection locations associated with the containers 208a, 208b, 208c, 208d, 208e. The service <NUM> may determine to modify the location of a container if the current prefix-connection location associated with the container is different from the previous prefix-connection location associated with the container. In that case, the service <NUM> may migrate the container to a location closer to the current prefix-connection location, such as the current prefix-connection location. For example, assume the prefix 218b (which is associated with the container 208e) has a previous prefix-connection location of the data center <NUM>. The current prefix-connection location of the prefix 218b is the edge site 206b. The service <NUM> may observe that the previous prefix-connection location of the prefix 218b is different from the current prefix-connection location of the prefix 218b. In response to that observation, the service <NUM> may move the container 208e to the current prefix-connection location of the prefix 218b.

In determining whether to modify the location of the containers <NUM>, the service <NUM> may determine whether a first distance between the current prefix-connection locations associated with the containers <NUM> and the container locations of the containers is greater than a second distance between the previous prefix-connection locations associated with the containers <NUM> and the container locations of the containers. The distance at issue may be a measure of a distance a signal must travel. In the alternative, the distance may be a measure of time (such as an average time) it takes signals to travel from one location to another. The service <NUM> may determine to modify a container location if the first distance is greater than the second distance. In that case, the service <NUM> may migrate the container to a location closer to the current prefix-connection location, such as the current prefix-connection location.

In determining whether to modify the location of the containers <NUM>, the service <NUM> may compare the prefix-connection location associated with the containers 208a, 208b, 208c, 208d, 208e with the container locations associated with the containers 208a, 208b, 208c, 208d, 208e. The service <NUM> may determine to modify the location of a container if the prefix-connection location associated with the container is different from the container location. In that case, the service <NUM> may migrate the container to a location closer to the prefix-connection location, such as the prefix-connection location. For example, the container 208d supports the prefix 218c. The container location of the container 208d is the edge site 206d. But the prefix-connection location of the prefix 218c is the edge site 206c. The service <NUM> may observe that the container location of the container 208d is different from the prefix-connection location of the prefix 218c. In response to that observation, the service <NUM> may move the container 208d to the edge site 206c.

<FIG> illustrates an example timeline showing changes in a cloud-computing system. <FIG> illustrates the cloud computing system at three different points in time: t<NUM> (shown as cloud-computing system 300a), t<NUM> (shown as cloud-computing system 300b), and t<NUM> (shown as cloud-computing system 300c). Time t<NUM> occurs before time t<NUM>, and time t<NUM>, occurs before time t<NUM>. The cloud-computing system 300a, the cloud-computing system 300b, and the cloud-computing system 300c (and elements included therein) are intended to represent the same cloud-computing system but at different points in time.

At time t<NUM>, the cloud-computing system 300a includes edge site 306a-<NUM> and edge site 306a-<NUM>. The cloud-computing system 300a includes service 310a. The edge site 306a-<NUM> hosts container 308a. Prefix 318a enters the cloud-computing system 300a at the edge site 306a-<NUM>. The container 308a may provide services to a device behind the prefix 318a.

At time t<NUM>, the service 310a may query the edge sites 306a-<NUM>, 306a-<NUM> for information regarding containers hosted on the edge sites 306a-<NUM>, 306a-<NUM>. The service 310a may query the edge site 306a-<NUM> to provide information regarding any containers hosted on the edge site 306a-<NUM>. The edge site 306a-<NUM> may identify the container 308a. For example, the edge site 306a-<NUM> may identify the container 308a using a GUI of the container 308a. The edge site 306a-<NUM> may indicate that the container 308a provides services to the prefix 318a. The edge site 306a-<NUM> may indicate that the prefix 318a is communicating with the edge site 306a-<NUM>. The service 310a may store information identifying the container 308a, the prefix 318a, a prefix-connection location for the prefix 318a (the edge site 306a-<NUM>), and a container location of the container 308a (the edge site 306a-<NUM>) as a record 320a.

At time t<NUM>, the cloud-computing system 300b includes edge site 306b-<NUM> and edge site 306b-<NUM>. The cloud-computing system 300b includes service 310b. The edge site 306b-<NUM> still hosts container 308b. But prefix 318b now enters the cloud-computing system 300b at the edge site 306b-<NUM>. The container 308b may still provide services to a device behind the prefix 318b.

At time t<NUM>, the service 310b may again query the edge sites 306b-<NUM>, 306b-<NUM> for information regarding containers hosted on the edge sites 306b-<NUM>, 306b-<NUM>. The service 310b may query the edge site 306b-<NUM> to provide information regarding any containers hosted on the edge site 306b-<NUM>. The edge site 306b-<NUM> may identify the container 308b. For example, the edge site 306b-<NUM> may identify the container 308b using a GUI of the container 308b. The edge site 306b-<NUM> may indicate that the container 308b provides services to the prefix 318b. The edge site 306b-<NUM> may not, however, have information regarding where traffic from the prefix 318a enters the cloud-computing system 300b. The service 310b may learn that traffic from the prefix 318b enters the cloud-computing system 300b through the edge site 306b-<NUM> when the service 310b queries the edge site 306b-<NUM>. The service 310b may store information identifying the container 308b, the prefix 318b, a prefix-connection location for the prefix 318b (the edge site 306b-<NUM>), and a container location of the container 308b (the edge site 306b-<NUM>) as a record 320b.

The service 310b may detect whether the prefix-connection location associated with the container 308b has changed. The service 310b may compare the prefix-connection location in the record 320b with the prefix-connection location in the record 320a. The service 310b may determine that the prefix-connection location shown in the record 320b is different from the prefix-connection location shown in the record 320a.

The service 310b may determine whether to modify a location of the container 308b based on whether the service 310b detected that the prefix-connection location associated with the container 308b has changed. The service 310b may determine to modify the location if the prefix-connection location has changed. In response to detecting a change, the service 310b may determine to move the container 308b from the edge site 306b-<NUM> to the edge site 306b-<NUM>.

In the alternative, the service 310b may determine whether to modify a location of the container 308b based on whether the container location of the container 308b in the record 320b is different from the prefix-connection location shown in the record 320b. The service 310b may compare the container location of the container 308b in the record 320b with the prefix-connection location shown in the record 320b. The service 310b may determine to modify the location of the container 308b if the prefix-connection location shown in the record 320b is different from the container location shown in the record 320b. In response to that observation, the service 310b may determine to move the container 308b from the edge site 306b-<NUM> to the edge site 306b-<NUM>.

At time t<NUM>, the cloud-computing system 300c includes edge site 306c-<NUM> and edge site 306c-<NUM>. The cloud-computing system 300c includes service 310c. The edge site 306c-<NUM> no longer hosts container 308c. Instead, the edge site 306c-<NUM> hosts the container 308c. Prefix 318c enters the cloud-computing system 300c at the edge site 306c-<NUM>. The container 308c still provides services to a device behind the prefix 318c.

At time t<NUM>, the service 310c may again query the edge sites 306c-<NUM>, 306c-<NUM> for information regarding containers hosted on the edge sites 306c-<NUM>, 306c-<NUM>. The service 310c may query the edge site 306c-<NUM> to provide information regarding any containers hosted on the edge site 306c-<NUM>. The edge site 306c-<NUM> may respond that it is not hosting any containers. In contrast, the edge site 306c-<NUM> may indicate that it hosts the container 308c and provide information identifying the container 308c, such as a GUI for the container 308c. The edge site 306c-<NUM> may also indicate that the container 308c provides services to the prefix 318c. The edge site 306c-<NUM> may indicate that traffic from the prefix 318c enters the cloud-computing system 300c through the edge site 306c-<NUM>. The service 310c may store the information identifying the container 308c, the prefix 318c, a prefix-connection location for the prefix 318c (the edge site 306c-<NUM>), and a container location of the container 308c (the edge site 306c-<NUM>) as a record 320c.

The service 310c may determine whether to move the container 308c. The service 310c may compare the prefix-connection location associated with the container 308c with the prefix-connection location associated with the container 308b. The service 310c may compare the prefix-connection location shown in the record 320c with the prefix-connection location shown in the record 320b. The service 310c may determine that the prefix-connection location shown in the record 320c is identical to the prefix-connection location shown in the record 320b. In response to that observation, the service 310c may determine to not move the container 308c.

In the alternative, the service 310c may compare the container location of the container 308c in the record 320c with the prefix-connection location shown in the record 320c. The service 310c may determine that the prefix-connection location shown in the record 320c is identical to the container location shown in the record 320c. In response to that observation, the service may determine to not move the container 308c.

<FIG> illustrates an example method <NUM> for migrating containers in a cloud-computing system.

The method <NUM> may include deploying <NUM> a container at a location within a cloud-computing system. The container may be deployed at a data center within the cloud-computing system. The container may be deployed at an edge site within the cloud-computing system. The container may be deployed at a server near the edge site and outside the data center. The container may be deployed to provide services or content to a particular user.

The location may be deployed at a location that minimizes latency experienced by the user. The location may be based on where the user is located. The location may be based on where traffic from the user enters the cloud-computing system. The location may be where the traffic from the user enters the cloud-computing system. For example, if the traffic from the user enters the cloud-computing system at an edge site, the location may be the edge site. In the alternative, the location may be near where the traffic from the user enters the cloud-computing system. For example, the traffic from the user may enter the cloud-computing system at an edge site. But the edge site may not have capacity for the container. In that case, the container may be placed at a location near the edge site that has capacity.

The method <NUM> may include detecting <NUM> a change in a connection location where traffic serviced by the container enters the cloud-computing system. Detecting <NUM> the change in the connection location where the traffic serviced by the container enters the cloud-computing system may include detecting, at a first time, that the traffic enters the cloud-computing system at a first location and detecting, at a second time, that the traffic enters the cloud-computing system at a second location different from the first location. The first location and the second location may be edge sites within the cloud-computing system. Detecting, at the first time, that the traffic enters the cloud-computing system at the first location may include querying the first location and receiving, from the first location, information indicating that the first location receives the traffic. Detecting, at the second time, that the traffic enters the cloud-computing system at the second location may include querying the first location, querying the second location, and receiving, from the second location, information indicating that the first location receives the traffic.

The method <NUM> may include migrating <NUM> the container to a new location based on the change in the connection location. The new location may be within the cloud-computing system. The new location may be where the traffic serviced by the container enters the cloud-computing system after the change in the connection location. The new location may be a location near where the traffic serviced by the container enters the cloud-computing system. The new location may be a location closer to where the traffic serviced by the container enters the cloud-computing system than a previous location of the container. The new location may be based on minimizing latency experienced by the user.

<FIG> illustrates an example method <NUM> for determining whether to modify a location of a container in a cloud-computing system.

The method <NUM> may include determining <NUM> a prefix for which a container hosted on an edge site of a cloud-computing system provides services. Determining <NUM> the prefix may include querying the edge site and receiving, from the edge site, information indicating the prefix for which the container provides services. A service hosted in the cloud-computing system may query the edge site. The service may query the edge site at predetermined intervals. The service may query the edge site at non-fixed, variable intervals. The service may query the edge site in response to user feedback, such as complaints about latency and performance.

The method <NUM> may include determining <NUM>, at a first time, a first prefix-connection location of the prefix. The first prefix-connection location of the prefix may be a location within the cloud-computing system where traffic from the prefix enters the cloud-computing system at the first time. Determining <NUM> the first prefix-connection location may include querying the edge site and receiving, from the edge site, information that traffic from the prefix enters the cloud-computing system at the edge site. The first prefix-connection location may be the edge site that hosts the container.

The method <NUM> may include associating <NUM> the container, the prefix, and the first prefix-connection location in a record. Associating <NUM> the container may include associating a GUI of the container. Associating <NUM> may include storing the record within the cloud-computing system.

The method <NUM> may include determining <NUM>, at a second time, a second prefix-connection location of the prefix. The second prefix-connection location of the prefix may be a location within the cloud-computing system where traffic from the prefix enters the cloud-computing system at the second time. Determining <NUM> the second prefix-connection location may include querying the edge site and receiving, from the edge site, information that traffic from the prefix enters the cloud-computing system at the edge site. In the alternative, determining <NUM> the second prefix-connection location may include querying a second edge site and receiving, from the edge site, information that traffic from the prefix enters the cloud-computing system at the second edge site. The cloud-computing system may include a data center and the first prefix-connection location and the second prefix-connection location may not be included in the data center.

The method <NUM> may include comparing <NUM>, the second prefix-connection location with the first prefix-connection location. Comparing <NUM> the second prefix-connection location with the first prefix-connection location may include determining that the second prefix-connection location is different from the first prefix-connection location. In the alternative, comparing <NUM> the second prefix-connection location with the first prefix-connection location may include determining that the second prefix-connection location is identical to the first prefix-connection location.

The method <NUM> may include determining <NUM> whether to move the container based on the comparison of the second prefix-connection location with the first prefix-connection location.

Determining <NUM> whether to move the container may include determining to move the container when the second prefix-connection location is different from the first prefix-connection location. In that case, the method <NUM> may further include migrating the container to the second prefix-connection location or a location within the cloud-computing system closer to the second prefix-connection location than the edge site.

Determining <NUM> whether to move the container may include determining to not move the container when the second prefix-connection location is identical to the first prefix-connection location. In that case, the method <NUM> may further include maintaining the container at the edge site.

<FIG> illustrates an example method <NUM> for migrating a container in a cloud-computing system.

The method <NUM> may include receiving <NUM> a request to deploy a compute container to provide services to a prefix. A user behind the prefix may request services from a cloud-computing system. The user's request for services may be the request to deploy the compute container. The compute container may provide services to the user.

The method <NUM> may include determining <NUM> a prefix-connection location of the prefix. The prefix-connection location of the prefix may be a location within the cloud-computing system where traffic from the prefix enters the cloud-computing system. The prefix-connection location may be an edge site of the cloud-computing system. The prefix-connection location may be an edge site near the user. The prefix-connection location may be an edge site far from the user. The prefix-connection location may be a data center within the cloud-computing system. Determining <NUM> the prefix-connection location of the prefix may occur at a first time.

The method <NUM> may include deploying <NUM> the compute container based on the prefix-connection location. Deploying <NUM> the compute container based on the prefix-connection location may include deploying the compute container at the prefix-connection location. The cloud-computing system may deploy the compute container to minimize latency experienced by the user.

The method <NUM> may include determining <NUM> a second prefix-connection location of the prefix. The second prefix-connection location of the prefix may be a location within the cloud-computing system where traffic from the prefix enters the cloud-computing system. The second prefix-connection location may be an edge site of the cloud-computing system. Determining <NUM> the second prefix-connection location of the prefix may occur at a second time after the first time.

The method <NUM> may include determining <NUM> that the second prefix-connection location is different from the prefix-connection location.

The method <NUM> may include migrating <NUM> the compute container based on the second prefix-connection location. Migrating <NUM> the compute container based on the second prefix-connection location may include migrating the compute container to the second prefix-connection location. The cloud-computing system may migrate the compute container to minimize latency experienced by the user.

<FIG> illustrates an example method <NUM> for sending messages to a cloud-computing system.

The method <NUM> may include sending <NUM> a first message to a cloud-computing system, wherein the first message enters the cloud-computing system at a first location that hosts a container servicing a user device. The user device may send <NUM> the first message to the cloud-computing system.

The method <NUM> may include sending <NUM> a second message to the cloud-computing system, wherein the second message enters the cloud-computing system at a second location that is different from the first location and the second location does not host the container. The user device may send <NUM> the second message to the cloud-computing system.

The method <NUM> may include sending <NUM> a third message to the cloud-computing system, wherein the third message enters the cloud-computing system at the second location and the second location hosts the container. The user device may send <NUM> the third message to the cloud-computing system. The second message may take longer to reach the first location than the third message takes to reach the second location.

The computer system <NUM> includes a processor <NUM>. The processor <NUM> may be a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. The processor <NUM> may be referred to as a central processing unit (CPU). Although just a single processor <NUM> is shown in the computer system <NUM> of <FIG>, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.

The computer system <NUM> also includes memory <NUM> in electronic communication with the processor <NUM>. The memory <NUM> may be any electronic component capable of storing electronic information. For example, the memory <NUM> may be embodied as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) memory, registers, and so forth, including combinations thereof.

Any of the various examples of modules, components, packages, applications, and operating systems described herein may be implemented, partially or wholly, as instructions <NUM> stored in memory <NUM> and executed by the processor <NUM>.

A computer system <NUM> may also include one or more input devices <NUM> and one or more output devices <NUM>. Some examples of input devices <NUM> include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, and lightpen. Some examples of output devices <NUM> include a speaker and a printer. One specific type of output device that is typically included in a computer system <NUM> is a display device <NUM>. Display devices <NUM> used with embodiments disclosed herein may utilize any suitable image projection technology, such as liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like. A display controller <NUM> may also be provided, for converting data <NUM> stored in the memory <NUM> into text, graphics, and/or moving images (as appropriate) shown on the display device <NUM>.

The techniques disclosed herein can be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules, components, or the like can also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques can be realized at least in part by a non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by at least one processor, perform some or all of the steps, operations, actions, or other functionality disclosed herein. The instructions can be organized into routines, programs, objects, components, data structures, etc., which can perform particular tasks and/or implement particular data types, and which can be combined or distributed as desired in various embodiments.

As used in the present disclosure, a "cloud-computing system" may refer to a network of connected computing devices that provide various services to client devices. For example, a distributed computing system may include a collection of physical server devices (such as server nodes) organized in a hierarchical structure. Such a hierarchical structure may include computing zones, clusters, virtual local area networks (VLANs), racks, fault domains, etc. One or more specific examples and implementations described herein may relate specifically to "data centers" that include multiple server nodes. But the features and functionality described in connection with one or more node data centers may similarly relate to racks, fault domains, or other hierarchical structures of physical server devices. The cloud computing system may refer to a private or public cloud computing system.

As used in the present disclosure, a "computing container," "virtual container," "compute container," or "container" may refer to a virtual service or layer on a server node of a cloud computing system that provides access to computing resources (such as a storage space) and/or a software application hosted by the cloud-computing system. Computing containers may provide services to any number of containerized applications on a cloud-computing system. As used in the present disclosure, a "virtual service" or a "service" may refer to a service provided by a cloud-computing system.

A "virtual machine" may refer to an emulation of a computer system on a server node that provides functionality of one or more applications on the cloud computing system. Virtual machines may provide functionality needed to execute one or more operating systems. In addition, virtual machines may make use of hypervisors on processors of server devices that support virtual replication of hardware. While one or more specific examples and implementations described herein may relate specifically to virtual machines, features and functionality described in connection with utilizing resources on a server node may similarly apply to other types of computing containers.

The term "processor" can refer to a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, or the like. A processor can be a central processing unit (CPU). In some embodiments, a combination of processors (e.g., an ARM and DSP) could be used to implement some or all of the techniques disclosed herein.

The term "memory" can refer to any electronic component capable of storing electronic information. For example, memory may be embodied as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with a processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) memory, registers, and so forth, including combinations thereof.

The steps, operations, and/or actions of the methods described herein may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps, operations, and/or actions is required for proper functioning of the method that is being described, the order and/or use of specific steps, operations, and/or actions may be modified without departing from the scope of the claims.

The term "determining" (and grammatical variants thereof) can encompass a wide variety of actions. For example, "determining" can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like.

The terms "comprising," "including," and "having" are intended to be inclusive and mean that there can be additional elements other than the listed elements. For example, any element or feature described in relation to an embodiment herein may be combinable with any element or feature of any other embodiment described herein, where compatible.

Claim 1:
A method for reducing latency in providing services from a cloud-computing system (<NUM>), characterized in that the method comprises:
detecting, by a service (<NUM>) included in the cloud-computing system, at a first time, that traffic serviced by a container (<NUM>) enters the cloud-computing system at a first location, wherein the container is located at the first location, wherein detecting, at the first time, that the traffic enters the cloud-computing system at the first location comprises:
querying the first location; and
receiving, from the first location, information indicating that the first location receives the traffic;
detecting, by the service, at a second time, that the traffic enters the cloud-computing system at a second location different from the first location, wherein detecting, at the second time, that the traffic enters the cloud-computing system at the second location comprises:
querying the first location;
querying the second location; and
receiving, from the second location, information indicating that the second location receives the traffic; and
migrating, by the service, in response to detecting that the traffic enters the cloud-computing system at the second location, the container to the second location.