В настоящий момент мы запускаем наше приложение на AWS Beanstalk, но пытаемся определить подходящую Azure.
Наша самая большая проблема - это потраченное впустую процессорное время, за которое мы платим, но не используем. Мы работаем на экземплярах t2.small, так как они имеют минимальное количество оперативной памяти, но мы никогда не используем даже базовое количество выделенного процессорного времени. (20% для t2.small). Нам нужно много мощности процессора во время коротких всплесков дня, и до сих пор все больше экземпляров на линии - это единственный способ справиться с этим. AWS Lambda выглядит неплохо для нас, но у нас есть зависимости от компонентов Windows, таких как SAPI, поэтому мы должны запускаться внутри виртуальных машин Windows.
Посмотрев на облачные сервисы Azure, мы думали, что использование веб-роли будет лучше всего подходит для нашего приложения, но, похоже, веб-роль - это не что иное, как виртуальная машина Win 2012 с поддержкой IIS. Так как приложение масштабируется, это просто приводит к появлению большего количества этих виртуальных машин, что и есть то, что у нас есть на данный момент. Есть ли у Azure сервис, похожий на Lambda, где вы платите только за время обработки процессора, которое вы используете? Причиной нашего неэффективного использования ресурсов ЦП является то, что наше приложение для генерации речи использует потерянные сторонние голоса, но при вызове в SAPI может работать только однопоточно, поскольку речевой движок подвержен сбою при многопоточности. У нас нет контроля над этим голосом. Он должен иметь доступ к системному реестру и Windows SAPI, поэтому идеальным решением является как-то обернуть все зависимости, это пакет и развернуть его на Azure, а затем запустить несколько экземпляров этого. Что "this" у меня нет идеи