When we developing a loosely coupled and reusable application, often arises the question: how to arrange to communicate between services or applications? To a large extent, it depends on the nature of the request and the granularity of your applications or services. We will discuss the two classic microservice integration patterns: service choreography and orchestration. What is the difference between these two modes of communication? Which one we should use? How to ensure data consistency? How to implement disturbed transactions? We will discuss these issues, consider an example of implementing orchestration on nodejs, and of course we will not forget about logging, monitoring and alerting.