Service discovery is how applications and (micro)services locate each other on a network. Service discovery implementations include both a central server (or servers) that maintain a global view of addresses and clients that connect to the central server to update and retrieve addresses.
The concept of service discovery is an old concept that has evolved as computer architectures has evolved. At the dawn of the networking age, different computers had to locate each other, and this was done through a single global text file, HOSTS.TXT. Addresses were added manually, as new hosts were infrequently added. As the Internet grew, hosts were added at an increasing rate, and an automated and more scalable system was needed. This led to the invention and widespread adoption of DNS.
Today, microservice architectures are driving the continued evolution of service discovery. In a microservice architecture, service lifespan is measured in seconds and minutes. With microservices, addresses are added and changed constantly as new hosts are added, ports are changed, or services are terminated. The highly transient nature of microservices makes service discovery a critical part of today's cloud-native infrastructure.