aws glueを監視して、ETLのコストパフォーマンスを高めよう

パソコン9

aws glueは、awsで提供されている完全マネージド型のETL (抽出、変換・加工、データのロード) サービスです。aws glueはサーバーレスで動作するのが特徴で、追加インフラが一切要りません。

glueはすでに構築されたデータベース上のデータを利用するために便利ですが、監視をしっかり行うことでよりよいコストパフォーマンスを発揮することが可能です。ここでは、glueにおける監視の必要性や方法について紹介します。

aws glueでできること

パソコン18

aws glueではデータの抽出、変換、読み込みを行うことができ、そのために必要なジョブの実行を自動化することができます。また、モニタリングできるクローラとジョブのメトリクスを提供したり、環境の状態のログなどを自動的に作成したり保存したりすることが可能です。

また、各ジョブのトリガーとなるイベントやスケジュールを事前に設定したり、オンデマンドで実行したりすることもできます。こうした機能によって、データをソースから取り出して抽出・変換し、ターゲットにロードする簡単な方法を提供しています。

当然、ETLに関連するジョブを実行するためにはglueがデータストアにアクセスできなければならないため、最初にさまざまな設定が必要ですが、VPC環境内では追加の設定が不要です。aws glueでは、一連のジョブ、クローラ、トリガーをまとめるコンテナであるワークフローが提供されています。

ワークフローを使用することで、複雑なマルチジョブのETLアクティビティを設計し、1つのエンティティとして実行や追跡を行うことが可能です。aws glueの「glue」は「糊」を意味する言葉で、データベース内のソースデータとビジネスなどで利用するデータをつなげるという意味があります。

名前がその目的や機能を表しているといえるでしょう。

aws glueにおける監視の必要性

aws glueでは、各ジョブの実行をモニタリングし、ジョブの成功や失敗、継続時間などについての情報を得ることができます。

こういった監視は、aws glueやその他のawsサービスのパフォーマンスや信頼性、可用性の維持のために必要不可欠な作業です。クラウドサービスの運用では利用状況に応じてパフォーマンスやコストを最適化することが重要であるため、こういった監視機能をもつサービスが多くなっています。

しかし、実際に監視を行うとなると、知識も必要で、労力もかかります。そのため、aws glueでは、問題の発生時に報告を行い、必要なアクションを自動化するためのツールが用意されています。

aws glueの監視方法

aws glueの監視では、自動化されたモニタリングツールを使用します。Amazon CloudWatch Eventsは、AWSリソースに変更があればリアルタイムで教えてくれますが、これを監視してトリガーとし、さまざまな処理を行うルールを作ることができます。

また、Amazon CloudWatch Logsを使用すると、Amazon EC2 インスタンス、AWS CloudTrail、その他のソースのログファイルを監視、保存し、ログファイルにアクセスすることが可能です。

ログファイル内の情報を監視して、特定のしきい値を超えた場合に自動的に通知を行うようにできますし、アーカイブを別のストレージに保存することもできます。AWS CloudTrailを利用すると、アカウントごとのAPI呼び出しや関連イベントを取得して、指定した場所にログファイルを配信できます。

これによって、いつ、誰が、どこから利用するケースが多いのかなどの情報を把握することが可能です。AWS Glueのリソースを管理するために、リソースのタイプに独自のタグを割り当てることも可能です。

AWS Glueのタグを使用すると、自分のリソースを整理して識別することが可能になるため、コスト計算レポートを作成し、リソースへのアクセスの制限を行うといった運用ができるようになります。

関連記事:elasticsearchをawsの監視で活用しよう

aws glueの監視におけるポイント

aws glueは機能が豊富なため、最初は何をどのようにしたらいいのか戸惑う人も多いです。監視では、次のようなポイントを意識しておくとよいでしょう。まず、ETLを行う前にデータストアのクローリングを行う必要がありますが、クロール対象にするログはできるだけ最小限にすることが望ましいです。

クロール対象のログを限定するだけでも、処理時間が短くなり、動作も快適でコストも下がるなど多くのメリットを受けられます。定期的なログソースの削除や、クロールするデータのパターン設定などを行うようにするとよいでしょう。

また、ジョブの成否には注意を払いましょう。ジョブが成功しても失敗しても、使用したリソース分だけ料金が発生するからです。また、失敗が生じている場合、そこで動作が終了すればよいのですが、繰り返し試行されてリソースを消費していることも少なくありません。

再試行回数を調整するなど、無駄なエラーが増えないように調整しましょう。検証用の環境でない限り、できるだけエラーが少なくなるように管理することが大切です。エラーが出ないとしても実行時間が長い場合も注意が必要です。

ジョブの実行に関してはタイムアウトになる時間を設定することができます。実行時間を短くするとエラーは増えますが、結果的に使用されるリソースが減る場合もありますので、結果をよく見てタイムアウトの時間も最適化していくとよいでしょう。

また、同時間帯に複数のジョブが実行されていることが多いなら、最大同時実行数を変更することによってパフォーマンスが改善することがあります。

aws glueの監視とコスト

aws glueでは、ETLジョブの実行に使われたDPU(データ処理ユニット )の数で時間あたりの料金が決まります。DPU1つあたり1秒ごとに0。44米ドルが課金され、10分から分単位で課金されていきます。

その他、ETL処理に使われるストレージ(データベースやテーブルなど)や、リクエスト(データからログへのアクセス)やクローリングのために必要なリソース量に応じて課金されます。それぞれで課金方法や金額が変わるため、詳細はawsのサイトで確認してください。

これらの料金は、awsのリージョンごとに多少異なります。また、awsでは頻繁に料金が変わるため、定期的に確認し最適化するとよいでしょう。aws glueは、使用時に関連する他のawsのサービスとは別で課金されますが、クローリングの範囲や使用するDPUの数、ジョブの内容などを調整することでコストダウンができる場合も多いです。

aws glueを監視してETLジョブを最適化しよう

aws glueはソースデータに対するETLジョブの実行を簡単にしてくれるサービスです。既存のデータを効率的に活用し、新たな発見や利用に結びつけるために役立ちます。また、開発者向けの機能も豊富で、コストやパフォーマンスを最適化するための監視もしやすく便利です。

利用状況をしっかり監視してETLジョブを最適化し、コストパフォーマンスの高い運用を目指しましょう。