Service discovery is a crucial aspect of modern application development, enabling apps and servers to identify available network services and their associated IP addresses and ports, which is vital for efficient inter-app communication via APIs. The traditional methods of service discovery, akin to using a static phonebook, are inadequate in the dynamic and rapidly changing environments typical of DevOps, where real-time service discovery is necessary. Two primary models exist for service discovery: client-side, which involves decentralized clients collecting service information, and server-side, which uses centralized servers to distribute service data. The choice between these models depends on factors such as network reliability and infrastructure scale. Tools like Consul, etcd, and Apache Zookeeper are popular for handling service discovery, each with unique features suited to different infrastructure needs, while Docker's Swarm integrates with these tools to facilitate service discovery in containerized environments.