Ответ
В Azure есть несколько сервисов для выполнения задач по расписанию (аналог CRON):
- Azure Functions (с Timer Trigger): Идеально для выполнения кода (например, на C#, Python, JavaScript) по расписанию. Управляется через выражение CRON.
// Пример функции на C# public static class MyTimerFunction { [FunctionName("TimerTriggerCSharp")] public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log) { // Задача выполняется каждые 5 минут log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); } } - Azure Logic Apps: Низко-код решение. Можно использовать встроенное действие Recurrence для настройки сложных расписаний и оркестрации различных сервисов.
- Azure Container Instances (ACI) + Azure Container Registry (ACR): Для запуска контейнеризированных задач по расписанию можно использовать связку ACR Tasks с триггером по расписанию.
- Azure Kubernetes Service (AKS) + CronJob: Если ваша инфраструктура построена на Kubernetes, используйте стандартный ресурс
CronJob.
Для большинства сценариев Azure Functions с Timer Trigger — это стандартный и наиболее гибкий выбор.
Ответ 18+ 🔞
Слушай, а в Azure-то с этим CRON'ом вообще отдельная история, просто ёперный театр! Сидишь такой, думаешь: "Ну чё, надо мне тут задачу по расписанию запускать, как в старые добрые". А там тебе, блядь, целый овердохуища вариантов на выбор, глаза разбегаются. Ну, как с машиной — можно на велосипеде, а можно на танке, но суть-то одна.
Вот, например, Azure Functions с этим самым Timer Trigger'ом. Это, можно сказать, классика жанра, прям пизда рулю. Представь: пишешь ты свой кусок кода на C#, Python или ещё на чём, настраиваешь крон-выражение, и всё — оно само по себе выполняется, как часы. Удобно, гибко, и доверия к нему — не ноль, а вполне себе нормально.
// Вот смотри, как просто выглядит
public static class MyTimerFunction
{
[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
// И эта штука будет орать в лог каждые пять минут, хоть ты тресни
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
Дальше идёт Azure Logic Apps. Это уже для тех, кому код писать влом, или для хитрожопых сценариев, где нужно десять сервисов между собой подружить. Там всё на мышкой: тыкаешь в интерфейсе, настраиваешь расписание действием "Recurrence" — и готово. Но иногда от их дизайнера просто волнение ебать начинается, такой он... своеобразный.
А вот если ты совсем упоротый и всё у тебя в контейнерах, то есть Azure Container Instances (ACI). Можно настроить ACR Tasks, чтобы он сам, по расписанию, твой контейнер из реестра вытаскивал и запускал. Штука мощная, но для простой задачи — это как из пушки по воробьям, честно говоря.
Ну и вершина инженерной мысли — Azure Kubernetes Service (AKS). Если у тебя там целый зоопарк из микросервисов живёт, то можно использовать стандартный для кубера CronJob. Но это уже уровень "сам себе стреляю в ногу", потому что содержать весь этот K8s — то ещё удовольствие, терпения нужно овердохуища.
Короче, если у тебя задача простая и кодовая — бери Azure Functions, не прогадаешь. Остальные варианты — это когда уже реально нужна конкретная фича, а не просто "раз в час что-то сделать". Выбирай с умом, а то потом сам от себя охуеешь, когда простую таску на AKS разворачивать будешь.