Microservices are often basically equivalent with RPC calls. So they have a lot of potential failure modes like service down, network partitioned, timeout, etc.<p>So each of them has a potential for an unexpected and transient failure that may be returned either via an exception or via a null result.<p>In my own experience with systems built on top of multiple services (not micro in my case but enough services...) unexpected nulls or incorrectly handled exceptions from transient&#x2F;network failures in the services depended on is a common mechanism that surfaces bugs in production code.<p>And these bugs rarely show up in testing unless someone went out of their way to simulate the failure(s). Optionals have been a good way for us to convey that possibility to the calling code and force the consumer to consider the possibility and plan an appropriate response (we&#x27;re big fans of fail-fast).