Microservices Patterns Part II: Service Discovery | IoT For All
Modern service-oriented architectures, in which each microservice usually runs in a containerized environment, solve a lot of problems earlier monolithic software systems posed. They scale modularly and on demand. Without the right patterns, however, managing inter-service calls and dynamically shifting service locations within container clusters can prove challenging. Good server-side or client-side service discovery tools, which manage dynamic service registries, address that problem.
With monolithic applications, services invoke one another through language-level methods or procedure calls. This is relatively straightforward and predictable behavior, but as application complexity increased over time, monolithic applications became unsuitable for the scale and demand of modern software systems. This resulted in a shift toward SOA, or service-oriented architecture. The monoliths were broken into smaller chunks that typically served a particular purpose.