Мигрируем большой проект из Azure в AWS.
Проект на .NET FW 4.7 (full)+ ASP.NET
В Azure использовали WorkerRole для того что бы код крутился постоянно в памяти и реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи.
Как с этим в AWS? Как сделать так что бы процесс постоянно сидел в памяти и ждал определенного внешнего события и выполнял соотвецтвенно некоторые действия или же просто висел в памяти и по таймеру выполнял какие либо действия (не суть важно что). Да и нужно что бы в случае крэша процесса он автоматом переподнимался
Здравствуйте, Jericho113, Вы писали:
J>В Azure использовали WorkerRole для того что бы код крутился постоянно в памяти и реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи.
Это из Cloud Services что ли? Тут не такой уж простой вопрос. Посмотри на AWS Batch.
Здравствуйте, Ночной Смотрящий, Вы писали:
J>>В Azure использовали WorkerRole ... НС>Это из Cloud Services что ли? Тут не такой уж простой вопрос. Посмотри на AWS Batch.
Посмотрел.. хм это вобщем то для того что бы большие запросы на обработку объединять в некоторые группы и их одновременно выполнять.. не уверен что это подходит..
В Azure, апликуха которая крутилась в WorkerRole скорее была похожа на классический Windows Service — т.е. крутится в памяти апликуха без UI постоянно, реагируюя на врходящие сообщения в message queue и/или проверяет БД на наличие новых записей (это тоже своего рода очередь задач просто кладутся они в базу) и что то с ними делает — вызывает внешние сервисы или пишет в другую БД и т.п.
Здравствуйте, Jericho113, Вы писали:
J>В Azure использовали WorkerRole для того что бы код крутился постоянно в памяти и реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи. J>Как с этим в AWS? Как сделать так что бы процесс постоянно сидел в памяти и ждал определенного внешнего события и выполнял соотвецтвенно некоторые действия или же просто висел в памяти и по таймеру выполнял какие либо действия (не суть важно что). Да и нужно что бы в случае крэша процесса он автоматом переподнимался
WorkerRole это же легаси практически уже. Почему Azure Functions/AWS Lambda не подходят?
Здравствуйте, Jericho113, Вы писали:
J>День добрый,
J>Мигрируем большой проект из Azure в AWS. J>Проект на .NET FW 4.7 (full)+ ASP.NET
J>В Azure использовали WorkerRole для того что бы код крутился постоянно в памяти и реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи. J>Как с этим в AWS? Как сделать так что бы процесс постоянно сидел в памяти и ждал определенного внешнего события и выполнял соотвецтвенно некоторые действия или же просто висел в памяти и по таймеру выполнял какие либо действия (не суть важно что). Да и нужно что бы в случае крэша процесса он автоматом переподнимался
J>Сори за некоторую сумбурность изложенного.
Для того, чтобы "код реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи" можно воспользоваться связкой AWS::Events::Rule + AWS::SQS::Queue + Lambda, или Events::Rule + SQS + ECS.
Events::Rule позволяет отсылать сообщение в SQS по таймеру, см ScheduleExpression, например "cron(15 10 ? * 6L 2019-2022)" или "rate(1 hour)". Далее, в случае Lambda, AWS::Lambda::EventSourceMapping вызовет код Lambda для сообщения. Понятно, что в очередь сообщение можно отправить и другими способами, чтобы "код реагировал на входящие сообщения".
В случае ECS достаточно, чтобы сервис постоянно pull'ил сообщения из очереди.
Надо помнить, что Lambda имеет ограничение на время выполнения в 15 минут, что имеет cold start, а ECS — постоянно крутится и, как следствие, жрет деньги, хотя затраты можно существенно минимизировать использовав AWS::EC2::SpotFleet.
Здравствуйте, ltc, Вы писали:
ltc>WorkerRole это же легаси практически уже. Почему Azure Functions/AWS Lambda не подходят?
Ну проекту уже лет 8 — крутился себе в WorkerRole и всех устраивало.
Вот встала задача в AWS мигрировать и поэтому спрашиваю совета. Про AWS Lambda сейчас читаю возможно это то что нужно..
Я когда пришел на проект то мне говорили что там полный Azure и ничего другого нет (я с этим облаком худо бедно еще справлюсь) а через месяц — "Все до НГ мигрируем в AWS!!!" и тут опаньки про AWS я знал только что он существует
Здравствуйте, Jericho113, Вы писали:
J>День добрый,
J>Мигрируем большой проект из Azure в AWS. J>Проект на .NET FW 4.7 (full)+ ASP.NET
J>В Azure использовали WorkerRole для того что бы код крутился постоянно в памяти и реагировал на входящие сообщения или же по таймеру выполнял некоторые предопределенные задачи. J>Как с этим в AWS? Как сделать так что бы процесс постоянно сидел в памяти и ждал определенного внешнего события и выполнял соотвецтвенно некоторые действия или же просто висел в памяти и по таймеру выполнял какие либо действия (не суть важно что). Да и нужно что бы в случае крэша процесса он автоматом переподнимался
J>Сори за некоторую сумбурность изложенного.
VC>Раньше для этого был https://aws.amazon.com/ru/elasticbeanstalk/ VC>если autoscale не нужен, то просто добавьте csproj с Windows Service службой. Лол. (вы же НЕ поднимаете web-приложение в WorkRole? лол)
Конечно мы веб апликуху в worker role не поднимаем это глупо.
WorkerRole работал как такой себе аналог вин сервиса в котором перемалывались данные полученные из Message Queue.
Т.е. как только в очереди сообщений появлялось новое сообщение сразу же оно направлялось на worker role хэндлер который уже в зависимости от сообщения делал что-либо.. (запускал свою цепочку действий проассоциированную с сообщением).
Хотелось бы отказаться от переписывания WorkerRole на WinService — вот думал может в AWS есть нечто подобное... ну что бы туда загрузить грубо говоря DLL и оно себе сидело и слушало очеердь..
Здравствуйте, Jericho113, Вы писали:
VC>>Раньше для этого был https://aws.amazon.com/ru/elasticbeanstalk/ VC>>если autoscale не нужен, то просто добавьте csproj с Windows Service службой. Лол. (вы же НЕ поднимаете web-приложение в WorkRole? лол)
J>Конечно мы веб апликуху в worker role не поднимаем это глупо. J>WorkerRole работал как такой себе аналог вин сервиса в котором перемалывались данные полученные из Message Queue. J>Т.е. как только в очереди сообщений появлялось новое сообщение сразу же оно направлялось на worker role хэндлер который уже в зависимости от сообщения делал что-либо.. (запускал свою цепочку действий проассоциированную с сообщением). J>Хотелось бы отказаться от переписывания WorkerRole на WinService — вот думал может в AWS есть нечто подобное... ну что бы туда загрузить грубо говоря DLL и оно себе сидело и слушало очеердь..