In the modern world, applications are so complex that they are made up of multitudes of services interacting with each other via REST/SOAP APIs, binary protocols, message brokers, integration buses, and so on. An example of this is a backend application in an e-store; managing client orders means that you need to have access to the database with the products' details. Another example includes a payment processing application that must have access to international payment networks, such as SWIFT, in order to verify the card's details and process the payment. These examples are very different in terms of the scope and the technologies that are used, but they have a common trait—all services need some kind of authenticating piece of data to introduce themselves to each other and this data has to be stored somewhere.
An obvious...