DigitalOcean has an excellent series on The Docker Ecosystem, and part 3 of this series explains the general concepts of Application Service Discovery (ASD). I’d recommend it to anyone who has no clue what ASD is, and wants to understand it, from a fairly abstract point of view.
From what I gather about ASD, it has a number of use cases. A newly created application instance can obtain information about the application environment in the existing setup, so that this instance can automatically configure itself into the setup. ASD helps to link multiple components together by storing the configuration details of these components. The ASD provides an API for such components to set, and retrieve configuration data. ASD can also be used to detect faults in any setup. There are a few aspects that needs to be taken care of in a ASD like steps to be taken in case of reconfiguration of a component, security of the data stored in an ASD tool, dependencies of services in the setup.
Example: Load-balancer and a pool of servers
All the servers in a setup can register their IPs and other services with a central Service Discovery tool, and a load-balancer can retrieve this data and know the details of all servers, and configure itself accordingly.
How does AWS use ASD?
AWS makes use of ASD to primarily help users to migrate their projects to another datacenter. It collects configuration, and usage data from the servers and gives the user a list of all applications, their dependencies etc in a CSV or XML file. The user can make use of this information to migrate easily.
Example: a year ago Netflix was available in a handful number of countries and then they decided to go global. When they took this decision, they would have made use of this service provided by AWS to migrate their applications and data to different regions of the world.