Imagine a very simple user creation flow in an online marketplace:<p>- Service A (user service) receives the request and creates a user object and sends an async request to service B and C (e.g. via Kafka)<p>- Service B (notification service) receives the request and sends an email to the newly created user<p>- Service C (referral service) receives the request and credits some funds to the referrer<p>While this design might be laid out correctly in a design doc, it is only implicitly defined in code because the services talk to each other. How would you:<p>- Ensure that the services are talking to each other in the correct order when implementing the user creation flow (integration tests might not suffice here since they generally test a very narrow set of path)?<p>- Define and enforce SLO guarantees between services in production?<p>- Debug which service is to blame when the flow breaks down?