SOA — это не просто интернет-масштаб, это масштабирование вашей организации разработчиков. Вы упомянули, что «Basecamp — это небольшая команда» из 12 разработчиков. Вы правы, это, конечно, не в масштабах Amazon или Google, но как насчет организации даже из 30 разработчиков? Как вы думаете, смогут ли они эффективно работать в одной кодовой базе, не наступая друг другу на пятки? Как вы думаете, почувствуют ли разработчики свою собственность на каждую часть монолита, или его части станут жертвой трагедии общин?

Сравните это с горсткой огороженных пастбищ, каждое из которых имеет четкую цель и охраняется специальной командой. Отгороженный может звучать негативно, но это то, что позволяет вашим независимым командам работать быстро. Поскольку пастбища огорожены (ограниченный контекст на языке DDD), команды могут развертываться часто и независимо, не опасаясь нарушить работу других частей системы. Прошли те времена, когда на двухнедельную фазу закалки приходилось сглаживать любые ошибки только для того, чтобы выпустить релиз. При разделении системы целый класс непреднамеренных побочных эффектов исчезает. Просто точек интеграции меньше, а существующие точки интеграции являются явными, задокументированными и версионными.

Есть ли здесь компромиссы? Конечно! Общая архитектура системы неизбежно усложняется, поэтому каждое пастбище можно сделать проще.

На мой взгляд, эта стратегия в первую очередь касается масштабирования вашей организации разработчиков. То, что вы также можете масштабировать инфраструктуру по горизонтали, является приятным дополнительным преимуществом.