Consider "thin" auto-generated clients with bi-directional communication and minimize code reuse across service boundaries
Synchronous & Asynchronous
If most of your APIs fit the Request/Response pattern, consider a synchronous request handler with nonblocking I/O
Data Architecture
Isolate Data from the Service. At the very least, ensure that data sources are accessed via a layer of abstraction, so that it leaves room for extension later.
Link