Когда приложения перестают быть монолитными и разделяются на подсистемы, возникает много нюансов. Как спроектировать распределенную систему так, чтобы она оставалась управляемой? Как добиться того, чтобы процессы, в которых задействованы несколько подсистем, остаавалить прозрачными, а данные - согласованными? Какие принципы, технологии и инструменты могут нам помочь? Я расскажу о том, какие задачи мы решаем в одном из внутренних проектов 2ГИС, и почему мы остановились на Azure Service Bus как на инструменте обеспечения взаимодействия подсистем приложения.