Мой нынешний работодатель использует стороннего поставщика CRM, и у нас есть довольно сложный уровень интеграции между двумя системами. Среди возможностей поставщика CRM - разработчики для создания бизнес-логики на языке, подобном Java, и для таких событий, как пользователь, нажимающий кнопку или отправляющий новую учетную запись в систему, отключение проверки и / или бизнес-логики.
Одна из возможностей, которую мы используем, заключается в том, чтобы этот бизнес-код, выполняемый на хост-провайдере, вызывал веб-сервисы, которые мы размещаем. Канонический пример - торговый представитель, который вводит нового лидера по продажам и нажимает кнопку, чтобы проверить связь с нашими системами, чтобы узнать, можем ли мы идентифицировать это новое лидерство на основе адреса электронной почты, компании / имени / фамилии и т. Д., И если да, вернуть назад внутренний GUID, который представляет этого человека. У нас все хорошо, но мы снова и снова наталкиваемся на стену, пытаясь настроить среду разумного разработчика для работы.
Так что, хотя наш сценарий использования немного нюансирован, это, как правило, может применяться к любому дому разработки, который создает API для стороннего потребления: Каковы некоторые рекомендации при проектировании конвейера разработки и среды при создании API быть поглощенным внешним миром?
В нашем офисе все наши разработчики находятся за брандмауэром, поэтому внешний код не может быть затронут внешним миром, в нашем случае провайдером CRM. Мы могли бы проделать дыры в брандмауэре, но это далеко не идеально с точки зрения области безопасности. Особенно, если число разработчиков, которые должны быть в зоне, подобной DMZ, велико. В настоящее время мы пробуем одну машину разработчика в демилитаризованной зоне, а затем подключаемся к ней по мере необходимости, чтобы выполнить работу разработчика, но это создает проблему нехватки ресурсов, если несколько разработчиков нуждаются в коробке, не говоря уже о том, что они вносят потенциально конфликтующие изменения (например, разные ветви ).
Мы рассматривали просто макетирование / фальсификацию входящих запросов при создании поддельных клиентов для этих сервисов, но это довольно серьезная нагрузка при создании наборов функций (хотя это по своей природе усиливает тестируемость наших API). Это также не устраняет тот факт, что иногда нам действительно нужно диагностировать / отлаживать проблемы, возникающие от самого реального клиента, а не от некоторой полезной нагрузки поддельного запроса.
Что другие сделали в этих типах сценариев? В наше время коллажей должно быть много людей с опытом разработки API - что сработало (и не сработало) хорошо для ребят?