【正解】D
【0からの解説】
①前提知識:Cloud Composer(現 Managed Service for Apache Airflow)は、オープンソースのワークフロー オーケストレーション ツール Apache Airflow をフルマネージドで提供するサービスです。Airflow では処理の流れを DAG(有向非巡回グラフ)として Python で定義し、スケジュール実行・依存関係の管理・失敗時の再試行・通知を一元的に行えます。BashOperator を使えば既存のシェル スクリプトをそのままタスクとして実行でき、Airflow の Web インターフェース(UI)でタスクごとの実行状況・所要時間・ログを確認できます。さらに Cloud Composer の環境は指標やログを Cloud Monitoring / Cloud Logging に送信するため、アラート設定も可能です。
②要件と制約語の整理:(a) 日次の手動実行(シェル スクリプト)を自動化、(b) 可観測性とトラブルシューティングのためのモニタリング、(c)「1 つの一元化されたソリューション」、(d)「オープンソースのツールを使用」、(e)「ETL コードを書き直さない」。
③正解の理由:Cloud Composer の DAG で既存スクリプトを(BashOperator などで)毎日実行すれば、コードを書き直さずに自動化できます。スケジューリング・再試行・依存関係・実行履歴・ログが Airflow に一元化され、Airflow UI と Cloud Monitoring で可観測性とトラブルシューティングの情報も得られます。Airflow はオープンソースなので、すべての条件を満たすのは D です。
【誤りの選択肢】
A:Cloud Run 関数(旧 Cloud Functions)は短時間のイベント駆動処理向けで、実行時間の上限があり、長時間かかる ETL やシェル スクリプトの実行には向きません。また毎日の起動には別途 Cloud Scheduler が必要で、タスク単位の依存関係・再試行・実行履歴を一元管理するオーケストレーション機能もありません。オープンソースのツールを使うという条件も満たしません。
B:Dataflow でパイプラインを「実装する」ということは、既存の ETL を Apache Beam のコードとして書き直すことを意味し、「ETL コードを書き直さない」という条件に反します。さらにスケジュールは Cloud Scheduler、監視は Dataflow の UI と複数のサービスに分かれ、一元化されていません。
C:Dataproc(現 Managed Service for Apache Spark)は Spark / Hadoop の処理基盤で、シェル スクリプトの ETL をそのまま実行する用途ではなく、Spark ジョブとして作り直す必要が生じます。スケジューラ(Cloud Scheduler)と実行基盤(Dataproc)が分かれ、パイプライン全体の再試行や依存関係を一元管理する仕組みもありません。
【参考】
Managed Airflow の概要 | Managed Service for Apache AirflowAirflow DAG のスケジュール設定とトリガー | Managed Service for Apache Airflow