Можно ли развернуть только обновленные Azure Функциональные проекты, когда я сделаю репо всего решения? - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно провести рефакторинг a. Net Веб-API, я рассматриваю возможность перехода на серверную версию и пытаюсь понять, как лучше всего перенести код на Azure Функции.

Насколько я понимаю, правильный подход к сокращению затрат и времени холодного запуска состоит в разделении API: гораздо лучше иметь много небольших веб-API, чем один со всеми методами. Малые API-интерфейсы потребляют меньше памяти и ускоряют холодный запуск.

Наличие большего количества функций в одном и том же проекте не решает проблему, так как все они будут развернуты в одном и том же приложении функций, поэтому один dll, высокая память, медленный холодный запуск. Поэтому я должен создать несколько Azure проектов функций и развернуть каждый из них в отдельном приложении функций.

Если все вышеперечисленное верно, мы наконец-то добрались до проблемы: я бы структурировал код и репозиторий так, чтобы у меня было одно Решение, содержащее несколько Azure Функциональных проектов. Как я могу иметь CI / CD (Azure DevOps), чтобы при установке sh репозитория были развернуты ТОЛЬКО функциональные проекты Azure, обновленные / измененные / новые? Мне нужно развернуть только измененные Azure Проекты функций, чтобы не потерять все приложения функций (в том числе те, чей код не изменился).

Это менее важно, но мне также нужно иметь один URL для всех API, поэтому https://myapi.azurewebsites.net/api/Function1, https://myapi.azurewebsites.net/api/Function2, и т. д. c, а не https://myapi1.azurewebsites.net/api/Function1, https://myapi2.azurewebsites.net/api/Function1, et c. Возможно ли это с помощью вышеуказанной структуры?

1 Ответ

1 голос
/ 28 апреля 2020

Вам необходимо иметь несколько конвейеров CI / CD с триггером, ограниченным только указанной папкой c:

trigger:
  paths:
    include:
    - function-a/*
    exclude:
    - '*'

, для этого вы будете запускать конвейер только в случае внесения изменений в папку function-a. Чтобы ограничить работу, необходимую для разработки конвейеров, вы должны рассмотреть возможность использования шаблонов. Вы можете найти больше информации об этом здесь:

Таким образом вы не будете повторяться.

РЕДАКТИРОВАТЬ

Для объединения вашего API вы можете использовать Azure Функции Proxies

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...