Я берусь за проект по замене древней устаревшей системы с нуля. Прежде чем я пришел, компания наняла консультанта, который составил базовый набросок системы и активно продвигал SOA. Это привело к длинному списку «служб сущностей» с намерением составить из них более сложные комбинации услуг. Например, пользователь, которому нужна информация о комитете, обратится к службе «Комитет», которая затем вызовет службу «Лица», чтобы получить своих членов, и службу «Собрания», чтобы получить свои собрания, и так далее.
Я понимаю, что это увеличивает гибкость, но меня беспокоит производительность. Мне кажется, что система, построенная с таким тонким уровнем детализации своих сервисов, тратит слишком много ресурсов на перевод служебных сообщений, и производительность будет неприемлемой. Мне также кажется, что выигрыш в гибкости все еще может быть достигнут с использованием базовых объектов многократного использования, хотя в этом случае преимущество интерфейса, не зависящего от технологии, теряется для повышения производительности.
Для получения дополнительной информации: организация, запрашивающая это программное обеспечение, в настоящее время не имеет стабильной версии сторонних программных пакетов, с которыми необходимо интегрироваться. Это программное обеспечение заменит все наборы. Также в настоящее время нет внешних потребителей, которым требуется доступ к данным за пределами предоставленного интерфейса веб-сайта — все вызовы службы будут осуществляться из других частей нашей системы. Выбор SOA в этом случае кажется полностью основанным на понятии «подготовка».
Итак, мой вопрос: какой уровень детализации приемлем для стабильной службы без ущерба для производительности? Не слишком ли я скептически отношусь к ударам по производительности, которые мы получим при реализации всех наших сущностей в виде сервисов? Должны ли функциональные возможности быть доступны в виде веб-сервисов только тогда, когда они необходимы, с упором на «подготовку» вместо того, чтобы уделять внимание разработке бизнес-уровня с вероятностью того, что сервисы позже будут добавлены поверх него?