スケーラブルなエンタープライズグレードの抽出、変換、ロード (ETL) ソリューションで、効率的なデータワークフローとより迅速なインサイトを引き出しましょう
このガイダンスは、データ消費要件と、一般的な ETL プラクティスによって実行される低レベルのデータ処理アクティビティとの間のギャップを解消するのに役立ちます。SQL ベースのデータ管理システムを運用している組織では、最新のデータエンジニアリング手法に適応すると、データから得られる強力なインサイトの活用が遅くなる可能性があります。このガイダンスでは品質を意識した設計を示し、ユーザー中心の ETL アプローチのためのオープンソースデータフレームワーク Arc を通じて、データプロセスの生産性を向上させます。このガイダンスは、ETL プラクティスとの相互作用を促進し、簡素化を促進し、バッチとストリーミングの両方で ETL アクティビティを統合するための抽象化レベルを高めます。
当社はまた、効率的なコンピューティングインスタンス (AWS Graviton Processors など) を使用して最適な設計を行うオプションも提供しています。これにより、Amazon EKS で大規模な ETL ジョブを実行する場合のパフォーマンスとコストを最適化できます。
ご注意: [免責事項]
アーキテクチャ図
[アーキテクチャ図の説明]
ステップ 1
クライアントと ETL ツールのエンドポイント間の安全な接続を提供する Application Load Balancer を使用して、Amazon CloudFront エンドポイントを介して ETL 開発およびオーケストレーションツールを操作します。
ステップ 2
バッチおよびストリームデータを処理する ETL ジョブを開発、テスト、およびスケジュールします。ETL プロセスとデータストア間のデータトラフィックは、AWS ネットワークを離れることなく、AWS PrivateLink を利用した Amazon Virtual Private Cloud (Amazon VPC) エンドポイントを経由して流れます。
ステップ 3
JupyterHub 統合開発環境 (IDE)、Argo Workflows、Apache Spark Operator は Amazon Elastic Kubernetes Service (Amazon EKS) クラスター上のコンテナとして実行されます。JupyterHub IDE はソースコードリポジトリ (GitHub など) と統合して、ユーザーが行った ETL アセットの変更を追跡できます。アセットには、Jupyter Notebook ファイルと Arc ETL フレームワークで実行される SQL スクリプトが含まれます。
ステップ 4
ソースコードリポジトリ内の ETL アセットを更新し、Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。同期プロセスは、ソースコードリポジトリの更新によって開始される自動継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインによって実装することも、手動で実行することもできます。
ステップ 5
オプションで、コードリポジトリからアップロードされた Docker ビルドソースコードを S3 ETL アセットバケットに変更できます。これにより、AWS CodeBuild と AWS CodePipeline CI/CD パイプラインがアクティブ化され、Arc ETL フレームワークのコンテナイメージが自動的に再構築され、Amazon Elastic Container Registry (Amazon ECR) プライベートレジストリにプッシュされます。
ステップ 6
Argo Workflows を使用して ETL ジョブを Amazon EKS クラスターで実行するようにスケジュールします。これらのジョブは自動的に Amazon ECR から Arc コンテナイメージを取得し、アーティファクト S3 バケットから ETL アセットをダウンロードし、アプリケーションログを Amazon CloudWatch に送信します。VPC エンドポイントはすべての AWS サービスへのアクセスを保護します。
ステップ 7
認証されたユーザーであれば、JupyterHub IDE で ETL ジョブとしてノートブックをインタラクティブに開発およびテストできます。これにより、AWS Secrets Manager からログイン認証情報が自動的に取得され、サインインユーザーのリクエストが検証されます。
ステップ 8
トランザクションのデータレイク形式をサポートする S3 バケットに保存されている ETL 出力データにアクセスします。AWS Glue データカタログと統合された Amazon Athena を介して Delta Lake テーブルをクエリできます。
Well-Architected Pillars
AWS Well-Architected フレームワークは、クラウドでシステムを構築する際に行う決定の長所と短所を理解するのに役立ちます。フレームワークの 6 つの柱により、信頼性が高く、安全かつ効率的で、費用対効果が高く、持続可能なシステムを設計および運用するためのアーキテクチャのベストプラクティスを学ぶことができます。AWS マネジメントコンソールで無料で提供されている AWS Well-Architected Tool を使用し、各柱の一連の質問に回答することで、これらのベストプラクティスに照らしてワークロードを確認できます。
上記のアーキテクチャ図は、Well-Architected のベストプラクティスを念頭に置いて作成されたソリューションの例です。完全に Well-Architected であるためには、可能な限り多くの Well-Architected ベストプラクティスに従う必要があります。
-
運用上の優秀性
Amazon EKS クラスター内で、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス (X86_64 CPU、Graviton ARM64) がコンピューティングノードとして機能し、ガイダンスワークロードを実行します。Spark ジョブは、ワークロードの需要に基づいて弾力的にプロビジョニングされた Amazon EC2 スポットインスタンスで実行されます。
CodeBuild と CodePipeline は GitOps プロセスを自動化し、Git コードの更新からコンテナイメージを構築し、それらを Amazon ECR プライベートレジストリにプッシュします。Argo Workflows は Amazon EKS で ETL ジョブをスケジュールし、自動的に Amazon ECR から Arc Docker イメージを取得し、アーティファクト S3 バケットから ETL アセットをダウンロードし、アプリケーションログを CloudWatch に送信します。
データ ETL ジョブの自動デプロイと実行により、運用上のオーバーヘッドが最小限に抑えられ、生産性が向上します。さらに、CodeBuild と CodePipeline を使用する CI/CD パイプラインは、ガイダンスの Arc Docker イメージを Amazon ECR に安全に保存しながら、継続的な改善と開発を確実に行うのに役立ちます。
-
セキュリティ
Amazon EKS クラスターリソースは Amazon VPC 内にデプロイされ、パブリックインターネットから論理的にネットワークを分離します。Amazon VPC は、VPC エンドポイント (トラフィックを AWS ネットワーク内に保持)、セキュリティグループ、ネットワークアクセスコントロールリスト (ACL)、インバウンドとアウトバウンドのトラフィックと承認を制御するための AWS Identity and Access Management (IAM) ロールとポリシーなどのセキュリティ機能をサポートしています。Amazon ECR イメージレジストリは、脆弱性スキャンなどのコンテナレベルのセキュリティ機能を提供します。Amazon ECR と Amazon EKS はオープンコンテナ規格 (OCI) レジストリと Kubernetes API 標準に従い、厳格なセキュリティプロトコルを組み込んでいます。
IAM は Amazon S3 アプリケーションデータへのアクセスコントロールを提供し、AWS Key Management Service (AWS KMS) は Amazon S3 に保管中のデータを暗号化します。Amazon EKS クラスター上のサービスアカウントの IAM ロール (IRSA) により、ポッドのきめ細かなアクセス制御が可能になり、ロールベースのアクセス制御を実施し、不正な Amazon S3 データアクセスを制限できます。Secrets Manager は、認証情報を安全に保存および管理します。 CloudFront は、Jupyter および Argo Workflows のウェブツール向けに SSL でエンコードされた安全なエントリーポイントを提供します。
-
信頼性
Amazon EKS は、Kubernetes コントロールプレーンとコンピューティングプレーンを複数のアベイラビリティーゾーン (AZ) にデプロイすることで、可用性の高いトポロジを実現します。これにより、AZ が中断した場合でも、データアプリケーションの継続的な可用性が確保され、Amazon EKS に信頼性の高いマルチ AZ EC2 インスタンスをデプロイできます。
データストレージに関しては、Amazon S3 は高い耐久性と可用性を提供し、リージョン内の複数の AZ 間でデータオブジェクトを自動的にレプリケートします。さらに、Amazon ECR は可用性が高くスケーラブルなアーキテクチャで Docker イメージをホストし、コンテナベースのアプリケーションのデプロイと増分を確実にサポートします。
Amazon S3、Amazon EKS、Amazon ECR は、運用コストを削減しながら高いサービスレベル契約 (SLA) を履行できるように設計されたフルマネージド型サービスです。これにより、ビジネスクリティカルなアプリケーションをデプロイして高可用性の要件を満たすことができます。
-
パフォーマンス効率
Amazon EKS クラスターの Amazon EC2 コンピューティングノードは、アプリケーションのワークロードに基づいて動的にスケールアップおよびスケールダウンできます。Graviton ベースの EC2 インスタンスは、カスタム設計の ARM ベースのプロセッサ、最適化されたハードウェア、およびアーキテクチャの強化により、パフォーマンス効率を向上させます。
分離されたコンピューティングストレージパターン (入力データと出力データを Amazon S3 に保存する) により、動的なコンピューティングスケーリング効率が向上します。Data Catalog はメタデータ管理を効率化し、Athena とシームレスに統合してメタデータ管理を簡素化し、クエリパフォーマンスを向上させます。Data Catalog はテクニカルメタデータのクローリングとメンテナンスを自動化し、効率的なデータ処理とクエリを実現します。Athena では、Amazon S3 データを移動せずに高速にクエリを実行できるため、分析ワークフローの効率がさらに向上します。
-
コストの最適化
Amazon ECR は、コンテナアプリケーションを保護およびサポートするためのマネージドサービスです。コンテナイメージの保存と提供に月額固定料金がかかります。 Amazon EKS クラスターコンピューティングノードは、Spark ワークロードに基づいてスケールアップとスケールダウンが可能で、コスト効率の高い Graviton インスタンスタイプとおよびスポットインスタンスタイプを提供します。Data Catalog は、サーバーレスのフルマネージド型メタデータリポジトリを提供するため、長時間稼働するメタデータデータベースをセットアップして維持する必要がなくなり、運用のオーバーヘッドとコストを削減できます。CodeBuild と CodePipeline は、サーバーレス環境での Arc ETL Framework の Docker イメージのビルドとデプロイを自動化し、インフラストラクチャのメンテナンスコストを削減するだけでなく、ビルドサーバーのプロビジョニングと管理の必要性をなくします。
-
持続可能性
このガイダンスでは、Graviton プロセッサをベースにした効率的なコンピューティングタイプで Amazon EKS クラスターを実行します。Amazon ECR では、ハードウェアや物理サーバーをカスタム管理する必要がなくなります。Data Catalog と Athena はサーバーレスサービスであり、エネルギーと環境への影響をさらに軽減します。
Amazon EKS コンピューティングレイヤーを大規模な Apache Spark ワークロード用に最適化することで、分析ワークロードの環境への影響を最小限に抑えることができます。パフォーマンスのニーズと持続可能性の優先事項に基づいて、ARM ベースのプロセッサを柔軟に選択できます。
実装リソース
サンプルコードは出発点です。これは業界で検証済みであり、規範的ではありますが決定的なものではなく、内部を知ることができ、開始に役立ちます。
関連コンテンツ
免責事項
サンプルコード、ソフトウェアライブラリ、コマンドラインツール、概念の実証、テンプレート、またはその他の関連技術 (私たちの担当者から提供される前述のものを含む) は、AWS カスタマーアグリーメント、またはお客様と AWS との間の関連文書契約 (いずれか該当する方) に基づき、AWS コンテンツとしてお客様に提供されるものです。お客様は、この AWS コンテンツを、お客様の本番アカウント、または本番データもしくはその他の重要なデータで使用すべきではありません。お客様は、サンプルコードなどの AWS コンテンツを、お客様固有の品質管理手法および基準に基づいて、本番グレードでの使用に適したテスト、セキュリティ確保、および最適化を行う責任を負います。AWS コンテンツのデプロイには、Amazon EC2 インスタンスの実行や Amazon S3 ストレージの使用など、AWS の課金対象リソースを作成または使用するための AWS 料金が発生する場合があります。
本ガイダンスにおける第三者のサービスまたは組織への言及は、Amazon または AWS と第三者との間の承認、後援、または提携を意味するものではありません。AWS からのガイダンスは技術的な出発点であり、アーキテクチャをデプロイするときにサードパーティのサービスとの統合をカスタマイズできます。