Микросервисная архитектура

Собираюсь писать своё большое приложение и многие ребята посоветовали мне использовать микросервисную архитектуру, мол это удобно, легко поддерживается, модули такие все из себя независимые и т.д., но так ли это на самом деле? Ведь если этот подход настолько прямо хорош, в таком случае почему же он не используется повсеместно?
Хотелось бы услышать вашу точку зрения, все "за" и "против" такой организации архитектуры, стоит ли приниматься за это или лучше избрать какой-то другой способ.
И если кто-то уже работал с такого рода приложениями, то с какими трудностями сталкивались в процессе, как эти проблемы решали?