Лучшие практики для среды разработки и API dev? - PullRequest
0 голосов
/ 27 августа 2008

Мой нынешний работодатель использует стороннего поставщика CRM, и у нас есть довольно сложный уровень интеграции между двумя системами. Среди возможностей поставщика CRM - разработчики для создания бизнес-логики на языке, подобном Java, и для таких событий, как пользователь, нажимающий кнопку или отправляющий новую учетную запись в систему, отключение проверки и / или бизнес-логики.

Одна из возможностей, которую мы используем, заключается в том, чтобы этот бизнес-код, выполняемый на хост-провайдере, вызывал веб-сервисы, которые мы размещаем. Канонический пример - торговый представитель, который вводит нового лидера по продажам и нажимает кнопку, чтобы проверить связь с нашими системами, чтобы узнать, можем ли мы идентифицировать это новое лидерство на основе адреса электронной почты, компании / имени / фамилии и т. Д., И если да, вернуть назад внутренний GUID, который представляет этого человека. У нас все хорошо, но мы снова и снова наталкиваемся на стену, пытаясь настроить среду разумного разработчика для работы.

Так что, хотя наш сценарий использования немного нюансирован, это, как правило, может применяться к любому дому разработки, который создает API для стороннего потребления: Каковы некоторые рекомендации при проектировании конвейера разработки и среды при создании API быть поглощенным внешним миром?

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

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

Что другие сделали в этих типах сценариев? В наше время коллажей должно быть много людей с опытом разработки API - что сработало (и не сработало) хорошо для ребят?

Ответы [ 2 ]

1 голос
/ 30 сентября 2008

Для dev было бы разумно использовать фиктивные объекты и писать хорошие модульные тесты, которые определяют задачу под рукой. Это поможет убедиться, что разработчики понимают бизнес-требования. Макеты библиотеки очень сложны и помогают решить эту проблему.

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

Кроме того, для общей отладки вам снова необходим доступ к машине в демилитаризованной зоне, в которой вы находитесь.

Вероятно, это "идеальная" ситуация, но вы спрашивали лучшие практики:).

1 голос
/ 27 августа 2008

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

Лично я считаю, что чем больше вы сможете разместить на отдельных блоках разработчиков, тем лучше - если компьютеры вашего разработчика достаточно мощные, чтобы все это работало плюс все, что им нужно для разработки, то они должны это делать. Это позволяет им развивать гибкость, не беспокоясь о других людях.

...