Вот как раз это меня больше и интересует, в каких случаях, что выносят. Меня больше интересуют "best-practice", для сервисных объектов. С этим гугл мне не помог, поэтому я и обратился за помощью сюда)
Я тоже когда-то искал именно это, но не нашел.
На тот момент для себя оптимальным стало решение выносить логику в интеракторы. Это очень удобный инструмент для выноса логики из контроллеров. Ну и отличный плацдарм для набора опыта.
А потом, уже очень скоро (если считать чистое время), появилось понимание - что пихать в сервисный, и нужен ли он нам, или оставить интерактор. Для большинства проектов, на которых я был, интеракторов было более чем достаточно.
А если поделиться опытом: то интеграции с 3-ей стороной (апи, и прочее), нетипичная логика (формирование xml, csv, что-то еще) - это в серисные. Но сервисный можно написать через инстанс (ServiceObject.new.do_action) или как класс (ServiceObject.do_action) - поэтому я и написал, что он друг другу рознь.
Конвейерная работа (когда есть риск получить 1 жирный интерактор или сервис-объект) - это про organizer у интеракторов. Там есть типа "rollback".
А куда вытаскивать из контроллера - это по ситуации.