nendのSREエンジニア入門ブログ

nendのSREエンジニア入門ブログ

SREなら知っとくべき[ジョブキューシステム]の名前一覧と特徴を説明


UNIX系のジョブスケジューラ

cron

cronはUNIXオペレーティングシステムのジョブスケジューラで、定期的に実行したいタスクを自動的に実行するためのものです。 crontabファイルに記述されたジョブを指定した時間・日にちに実行します。 例: 毎日午前3時にバックアップスクリプトを実行する場合、crontabに「0 3 * * * /path/to/backup.sh」を追加します。

at

atは一度だけ特定の時間にコマンドやスクリプトを実行するためのUNIXのユーティリティです。 例: 今から1時間後にシャットダウンする場合、「echo "shutdown -h now" | at now + 1 hour」と入力します。


HPC(High Performance Computing)関連

Torque

Torque (Terascale Open-source Resource and QUEue manager) はHPC環境のためのジョブスケジューリングツール。 ノード間のリソースの共有やジョブの実行順を管理します。大学や研究機関でのシミュレーションなどによく使われる。

Slurm

Slurmはフリーでオープンソースのジョブスケジューラで、特に大規模なスーパーコンピュータでの利用が一般的。 リソースの割り当て、ジョブのキューイング、ジョブの監視、ジョブの管理を行います。

SGE (Sun Grid Engine)

SGEは分散コンピューティング環境でのジョブのスケジューリングを行うツール。 ユーザーはSGEを通してジョブを提出し、SGEはリソースの可用性に応じてジョブを実行する。

LSF (Load Sharing Facility)

LSFはHPCとクラウド環境のためのジョブスケジューリングシステム。 分散リソースの中から最も適切なものを選択し、ジョブを実行します。


一般的なジョブキューシステム

Celery

CeleryPythonアプリケーション向けの非同期タスクキュー。 例: Webアプリケーションでユーザーが大量のデータをアップロードしたとき、Celeryを使ってバックグラウンドでデータ処理を行う。

Resque

ResqueはRubyで書かれたRedisをバックエンドとするジョブキューシステム。 Webアプリケーションのバックグラウンドジョブや非同期処理に利用される。

Sidekiq

SidekiqもRubyでのバックグラウンドジョブの処理に使われる。 Resqueよりも高速で、多くの機能を持っている。

RabbitMQ

RabbitMQはメッセージキューイングシステムで、システム間のメッセージの非同期送信を行います。 Webアプリケーションやマイクロサービスの間でのデータ伝達に使われる。

Apache Kafka

Kafkaは高スループットの分散メッセージングシステム。 大量のデータをリアルタイムに処理するアプリケーションや、ログの収集・解析に使われる。


クラウド関連

AWS Batch

AWS BatchはAmazon Web Servicesのジョブキューサービス。 大量のジョブを自動的にスケジューリングして、最適なEC2インスタンスで実行する。

Azure Batch

Azure BatchはMicrosoft Azureのバッチ処理サービス。 大規模なコンピューティングワークロードを自動的に並列実行するためのもの。

Google Cloud Tasks

Google Cloud TasksはGoogle Cloud Platformの非同期タスクキューサービス。 タスクをスケジューリングして、指定した時間にCloud FunctionsやApp Engineなどで実行する。


ワークフローオーケストレーション

Apache Airflow

Apache Airflowはワークフローオーケストレーションツールで、特にデータワークフローの自動化に強みがあります。 DAG (Directed Acyclic Graph) の概念を基盤とし、タスク間の依存関係を視覚的に管理・スケジューリングすることが可能です。 特徴:主にデータワークフローの自動化と管理に特化したツール。 ジョブの依存関係を視覚的に表示し、複雑なワークフローの管理を容易にする。 Pythonでワークフローをプログラムとして定義し、柔軟性が高い。 例: ETL処理の流れや機械学習のパイプラインをAirflowで自動化・監視する。

Luigi

Spotifyが開発したLuigiもワークフローオーケストレーションツール。 Airflowと同様にDAGの概念を使用しますが、設定や運用の方法に違いがあります。 データのパイプライン処理を中心に使用される。

Prefect

Prefectは現代のデータワークフローと自動化を目的としたツール。 AirflowやLuigiに似ていますが、より柔軟で使いやすいAPIとエラーハンドリング機能を持つ。

Apache Nifi

Apache Nifiはデータの移動と変換を行うワークフローオーケストレーションツール。 リアルタイムのデータフローとその監視・管理が可能。 データの取り込み、変換、ルーティングに特化している。


分散システム関連

Apache Mesos

Apache Mesosは大規模なクラスタ管理を目的としたプラットフォーム。 リソースの抽象化と隔離を行い、分散アプリケーションのスケジューリングを効率的に実行します。 大規模なデータセンターやクラウド環境でのアプリケーションのデプロイメントを最適化するために使用される。

Apache ZooKeeper

Apache ZooKeeperは分散システムの調整サービス。クラスタ内のノード間の情報共有やリーダー選出、設定管理などを行うためのツール。 大規模な分散アプリケーションの信頼性と整合性を維持するために使用される。


RDBMS内のジョブ管理

Oracle DBMS_SCHEDULER

OracleDBMS_SCHEDULERはOracleデータベース内でのジョブのスケジューリングと実行を管理するツール。バックアップ、バッチ処理、データのクリーニングなどの定期的なタスクを自動化するために使用される。

SQL Server Agent

SQL Server AgentはMicrosoft SQL Serverに組み込まれたジョブスケジューリングツール。バックアップ、レポート生成、ETLタスクなどを指定した時間やトリガーに基づいて自動実行する。


その他のジョブ・キューシステム

Jenkins

JenkinsはオープンソースのCI/CDツール。 ソフトウェアのビルド、テスト、デプロイを自動化するために使用されるが、一般的なジョブのスケジューリングや実行も可能。

Gearman

Gearmanは分散コンピューティングのためのシステム。 アプリケーション間でのタスクのキューイングと実行をサポートし、異なるマシンやアプリケーション間でのタスクの分散処理を実現する。

Rundeck

ジョブの実行やスケジュール管理を中心としたオーケストレーションツール。 様々な環境でのタスク実行やワークフローの自動化に利用される。 特徴:ジョブのスケジュールやキュー、実行、管理を中心にしたツール。 アクセスコントロール、ログの取得、アラート、監視などの機能を提供。 GUIAPIの両方でのジョブの管理・実行が可能。

GoCD

Continuous Integration (CI) および Continuous Delivery (CD) のためのツール。 Pipelineの視覚化や構築が強み。


企業パッケージのジョブ・キューシステム

Hinemos

日本製の統合監視・ジョブ管理ツール。OSSとしても提供されており、多岐にわたるシステム管理機能を持つ。 特徴: Hinemosは、ジョブ管理機能を有する総合的な監視ソリューションとして知られるオープンソースソフトウェアです。 ジョブのスケジューリングや自動実行 多様な監視タイプ(ログ、プロセス、パフォーマンスなど) ルールベースのアラート通知

JP1

日本のIT企業、日立製作所が提供する統合システム管理ソフト。 ジョブ管理やスケジューリング、システム監視など多岐にわたる機能を持つ。

Control-M

BMC Softwareが提供するエンタープライズ向け のジョブスケジューリングソフトウェア。

Tidal Workload Automation

Cisco Systemsが所有するエンタープライズ向けの ジョブスケジューリング・オーケストレーションソフトウェア。

Automic Automation

エンタープライズ向けのITプロセス自動化ソフトウェア。 ジョブスケジューリングやワークロードオーケストレーション機能を持つ。

IBM Workload Scheduler

IBMが提供するジョブスケジューリングおよびワークロードオーケストレーションソフトウェア。