Amazon Web Services ブログ
マネージドへの移行: Amazon Elasticsearch Service の事例
AWS に合流する前は、Elasticsearch でモバイル広告ソリューションを構築する開発チームを率いていました。Elasticsearch は、ログ分析、リアルタイムアプリケーションモニタリング、クリックストリーム分析、および勿論、検索用によく使用されるオープンソースの検索および分析エンジンです。私が担当したプラットフォームは、会社のビジネスを推進するためには不可欠でした。
私が抱えるチームは、AWS で Elasticsearch のセルフマネージド実装を実行しました。当時は、マネージド Elasticsearch オファリングは利用できませんでした。3 つのリージョンに Elasticsearch クラスターをデプロイするために、スクリプトとツールを構築する必要がありました。これには、次のタスク (およびその他) が含まれます。
- クラスターが通信できるように、ネットワーク、ルーティング、ファイアウォールのルールを構成。
- Elasticsearch 管理 API を不正アクセスから保護。
- データノード間でリクエストを分散するためのロードバランサーの作成。
- 問題が発生した場合にインスタンスを置き換える自動スケーリンググループの作成。
- 設定の自動化。
- セキュリティ上の問題に対するアップグレードの管理。
その体験を一言で言えば、「苦痛」にあたるでしょう。 独自の Elasticsearch クラスターを大規模にデプロイして管理するには、適切な実行を行うために多くの時間と知識が必要です。おそらく最も重要なことは、エンジニアが最善を尽くすこと、つまり顧客向けソリューションの革新と生産から離れたということです。
Amazon Elasticsearch Service (Amazon ES) は、AWS に入社してからほぼ 2 年後の 2015 年 10 月 1 日に開始されました。およそ 5 年後、Amazon ES は検索関連のニーズを実現する魅力的な機能セットを提供することにおいて、これまでで最高の位置を占めています。Amazon ES を使用すれば、AWS クラウドで Elasticsearch クラスターを安全かつ費用対効果の高い方法で簡単にデプロイ、運用、スケーリングできるフルマネージドサービスを利用できます。Amazon ES は Elasticsearch API への直接アクセスを提供し、Elasticsearch を使用する既存のコードとアプリケーションをサービスとシームレスに連携させます。
Amazon ES は Elasticsearch クラスターのすべてのリソースをプロビジョニングし、選択した任意のリージョンで数分以内に起動します。障害の発生した Elasticsearch ノードを自動的に検出し置き換えるため、セルフマネージド型のインフラストラクチャに伴うオーバーヘッドが減少します。1 回の API 呼び出しまたは AWS マネジメントコンソールで数回クリックするだけで、ダウンタイムなしでクラスターを最大 3 PB のデータに水平または垂直でスケーリングできます。この柔軟性により、Amazon ES は単一ノードの開発クラスターから、実稼働規模のマルチノードクラスターまで、あらゆるワークロードをサポートできます。
Amazon ES は、ライセンス手数料なしで、Kibana プラグインの堅牢なセットも提供します。詳細なアクセスコントロール、アラート、インデックス状態の管理、および SQL サポートなどの機能は、多くの例のほんの一部に過ぎません。Amazon ES の一連の機能は、お客様などの顧客のニーズと、Open Distro for Elasticsearch (ODFE) などのオープンソースコミュニティイニシアチブから生まれました。
マネージドサービスへの移行を決定する際には、いくつかの事項を考慮する必要があります。明らかに、お客様はチームが会社の成長を推進する有意義な仕事に専念することをお望みでしょう。マネージドサービスにオフロードするプロセスと、セルフマネージドが最適なプロセスを決定するのは難しい場合があります。以前の職場で Elasticsearch を管理し、AWS に移行した何千もの顧客と協力した経験に基づいて、以下のセクションを検討するための重要なトピックを検討します。
ワークロード
マネージドサービスに移行する前に、金融、電気通信、法務、e コマース、製造、またはその他のさまざまな市場に関係なく、他の人が「垂直」で行っていることに目を向ける場合があります。これらの業種に携わる何千もの顧客が、検索、ログ分析、SIEM、およびその他のワークロードを Amazon ES に正常にデプロイできることを理解できます。
Elasticsearch はデフォルトでの検索エンジンです。Compass は Amazon ES を使用して検索インフラストラクチャを拡張し、完全でスケーラブルな不動産住宅検索ソリューションを構築します。業界をリードする検索ツールと分析ツールを使用することで、会社のカタログにあるすべての物件一覧を消費者が見つけられるようにし、不動産専門家が家をより早く見つけ、売り込み、販売できるように支援します。
集約やアラートなどの強力なツールを備えた Elasticsearch は、ログ分析ワークロードで運用活動の洞察を得るために広く使用されています。Intuit がクラウドホスティングアーキテクチャに移行するにつれ、同社はアプリケーション状態の監視方法を変革する「観測可能性」の軌道に乗っています。同社は Amazon ES を使用して、コンテナからサーバーレスアプリケーションに至るまで、プラットフォーム全体の運用状態を可視化する監視可能ソリューションを構築しました。
セキュリティに関して言えば、Sophos は次世代サイバーセキュリティにおける世界的リーダーであり、現在、最も高度なサイバー脅威から顧客を保護しています。同社は、Amazon ES およびその他の AWS コンポーネントを使用して、大規模なセキュリティ監視および警告システムを開発しました。これは、Amazon ES が大規模なセキュリティのユースケースに適していることを知っていたおかげで実現できました。
家の発見、セキュリティイベントの検出、アプリケーション問題を検出する開発者の支援など、Amazon ES は幅広いユースケースとワークロードをサポートしています。
コスト
運用上のベストプラクティスに関する議論を行うには、コストを考慮する必要があります。Amazon ES では、コンソールを数回クリックするだけで、ワークロードに最適なインスタンスタイプとストレージオプションを選択できます。コンピューティングとストレージの要件がわからない場合、Amazon ES にはオンデマンドの料金が設けられます。初期費用が発生したり、長期契約を結んだりすることはありません。ワークロードの要件がわかっている場合、Amazon ES のリザーブドインスタンス料金で大幅なコスト削減を確保できます。
コンピューティングとインフラストラクチャのコストは、方程式の一部にすぎません。AWS では、ソリューションを比較する際に、総所有コスト (TCO) を評価することをお勧めします。組織の意思決定者は、セルフマネージド環境を置き換えることを選択する際に、関連するすべての費用便益を考慮する必要があります。私が顧客に検討を勧めている要因をいくつかご紹介します。
- 24 時間 365 日、クラスターの運用を管理するためにいくら払っていますか?
- サポートプロセスなどの運用コンポーネントの構築や、環境内のクラスターの自動修正および手動修正手順の構築にどれくらい費やしていますか?
- 高度な機能のライセンス費用はいくらですか?
- オファリングを公開するために、クラスター間または DNS サービス間のネットワーキングにどのような費用を支払いますか?
- バックアッププロセスにどれだけの時間を費やしており、障害からどれだけ早く復旧できますか?
Amazon ES の優れた点は、これらの問題に集中する必要がないことです。Amazon ES は、クラスターを管理する運用チーム、14 日間のクラスターデータの毎時自動バックアップ、クラスターでのイベント自動修復、およびサービスの基本的なテナントの 1 つとしてライセンスなしの増分機能を提供します。
また、Elasticsearch にデータを保存するコストの管理にも細心の注意を払う必要があります。以前までセルフマネージドの Elasticsearch ユーザーは、データ層全体にわたる管理が複雑であったため、ストレージコストが制御不能にならないようにするには、場合によってデータにすばやくアクセスできないソリューションに依存する必要がありました。AWS は、低コストの新しいストレージ層である UltraWarm でこの問題を解決しました。UltraWarm を使用すれば、Elasticsearch と Kibana を使用して Amazon Simple Storage Service (Amazon S3) にバックされたデータを保存してインタラクティブに分析し、GB あたりのコストを既存のホットストレージオプションよりも約 90% 削減できます。
セキュリティ
顧客と会話してみた結果、彼らの主な関心事はセキュリティでした。データ侵害 1 回で数百万 USD の費用が発生し、企業の評判を永久に損なう場合があります。データを保護するツールを提供することは、当社のサービスにおける重要なコンポーネントです。Amazon ES のデータについて、以下を実行できます。
- Amazon Virtual Private Cloud (Amazon VPC) でネットワーク分離を実現する
- AWS Key Management Service (AWS KMS) で作成およびコントロールを行うキーを使用して保存データを暗号化する
- 送信中の暗号化に TLS 1.2 を使用する
- Amazon Cognito および AWS Identity and Access Management (IAM) ポリシーで認証とアクセスコントロールを管理する
多くのお客様は、Kibana と統合するときにシングルサインオン環境を望んでいます。Amazon ES は、Kibana 向け Amazon Cognito 認証を提供します。AWS Single Sign-On、PingFederate、Okta などの ID プロバイダーの統合を選択できます。詳細については、サードパーティの SAML ID プロバイダーと Amazon Cognito ユーザープールの統合を参照してください。
最近、Amazon ES は詳細アクセスコントロール (FGAC) を導入しました。FGAC は、Amazon ES 上のデータをきめ細かく制御します。たとえば、誰がリクエストを行うかに応じて、1 つのインデックスのみから結果を返す検索が必要になる場合があります。お客様は、ドキュメントの特定フィールドを非表示にするか、特定のドキュメントを完全に除外することができます。FGAC を使用すれば、Amazon ES ドメインに存在するデータを表示する対象をコントロールできます。
コンプライアンス
多くの組織は、いくつかのコンプライアンス標準に準拠する必要があります。監査と認証のアクティビティを経験した人は、コンプライアンスを確保するには費用がかかり、複雑で長いプロセスになることをご存知でしょう。ただし、Amazon ES を使用することで、多くの重要な標準への準拠を実現するために AWS が行った作業から利益を得ることができます。Amazon ES は、PCI DSS、SOC、ISO、および FedRamp に準拠しており、業界固有の要件や規制要件への適合を支援します。Amazon ES は HIPAA に適格なサービスであるため、PHI の処理、保存、送信を行うことにより、これらの機密性の高いワークロードの開発を加速できます。
Amazon ES は、最新の評価対象サービスの一部です。サービスがこれらの重要な業界標準の基準を満たしていることを独立監査人が認めているという知識を以って、Amazon ES 上にソリューションを構築できます。
可用性と弾力性
オンプレミスまたはクラウド環境で Elasticsearch デプロイメントを構築する場合、実装がどのように障害に耐えられるかを考える必要があります。また、障害が発生したときに障害から復旧する方法について理解する必要もあります。いくつか例を挙げると、AWS ではハードウェア障害やディスク障害など、障害が発生するという事実について計画を立てています。
他のほぼすべてのテクノロジーインフラストラクチャプロバイダーとは異なり、各 AWS リージョンには複数のアベイラビリティーゾーンがあります。各アベイラビリティーゾーンは、物理的に分離された 1 つ以上のデータセンターで構成され、冗長電源とネットワークを備えています。アプリケーションの高可用性とパフォーマンスのために、耐障害性と低レイテンシーに向けて、同じリージョン内の複数のアベイラビリティーゾーンにアプリケーションをデプロイできます。アベイラビリティーゾーンは高速のプライベート光ファイバーネットワークと相互接続するため、アベイラビリティーゾーン間で自動的にフェイルオーバーするアプリケーションを中断なしで設計できます。アベイラビリティーゾーンは、従来の単一データセンターインフラストラクチャまたは複数データセンターインフラストラクチャよりも可用性が高く、スケーラブルで、耐障害性を備えています。
Amazon ES には、インスタンスを 1、2、または 3 つの AZ にデプロイするオプションがあります。開発ワークロードまたはテストワークロードを実行している場合は、シングル AZ オプションを選択します。本番環境レベルのワークロードを実行するユーザーは、2 つまたは 3 つのアベイラビリティーゾーンを使用する必要があります。
詳細については、3 つのアベイラビリティーゾーンにデプロイすることによって Amazon Elasticsearch Service の可用性を向上させるをご覧ください。さらに、専用マスターノードを使用して複数のアベイラビリティーゾーンにデプロイすると、Amazon ES SLA の利点が得られます。
操作
世界中の何千もの Elasticsearch クラスターの管理を行った経験がある運用チームが、24 時間年中無休で Amazon ES を監視しています。サポートが必要な場合は、AWS サポートからテクノロジー全体にわたる専門的なガイダンスと支援をお受けください。低コストでより早く目的を達成できます。クラウドインフラストラクチャをサポートする単一ソースの重要性を強調したいと思います。Amazon ES は分離して実行することができないため、単一ソースからクラウドインフラストラクチャ全体をサポートすることで、サポートプロセスが大幅に簡素化されます。AWS には、エンタープライズレベルのサポートプランを使用するオプションもあります。このオプションを使用する場合、基本的にチームのメンバーになり、AWS での成功に専念する専任のテクニカルアカウントマネージャーを配置できます。
データ内のイベントにアクションを実行する手段を提供するアラートや、ログのロールオフなどのアクティビティを自動化できるインデックス状態管理などの Amazon ES のツールを使用すると、構築する必要のない追加操作機能を利用できます。
デプロイのモニタリングに関して、Amazon ES は豊富な Amazon CloudWatch メトリクスを提供し、「一括管理」内ですべての Amazon ES デプロイをモニタリングできます。 詳細については、Amazon CloudWatch を使用したメトリックのモニタリングクラスターを参照してください。
最新の状態を保つことも重要なトピックです。Elasticsearch および Kibana の新しいバージョンにアクセス可能にするために、Amazon ES は、バージョン 5.1 以降を実行するドメインにインプレース Elasticsearch アップグレードを提供します。Amazon ES は、ディストリビューションが厳格なセキュリティ評価に合格している限り、オープンソースコミュニティで最も安定した最新バージョンへのアクセスを提供します。当社のサービスは、社内の AWS セキュリティレビューに合格したバージョンを提供することを誇りに思っています。
AWS の統合とその他の利点
AWS には、Amazon ES とシームレスに統合する幅広いサービスがあります。多くの顧客と同様に、お客様も AWS 上のネイティブクラウドサービスの状態とパフォーマンスを監視しなければならない場合があります。ほとんどの AWS サービスは、イベントを Amazon CloudWatch Logs に記録します。CloudWatch Logs サブスクリプションを介して受信したデータを Amazon ES ドメインにストリーミングするようにロググループを設定できます。
ログデータの量は大幅に変動する可能性があるため、大規模で運用する場合はレイヤーのバッファリングを検討する必要があります。バッファリングにより、プロセスの安定性を設計できます。規模を考慮して設計する場合、スパイクの取り込みイベントでクラスターが過負荷になるのを回避するために行える、最も簡単な方法の 1 つです。Amazon Kinesis Data Firehose は Amazon ES と直接統合されており、サービスの一部としてバッファリングと再試行を提供します。いくつかの簡単な設定を行い、Amazon ES を宛先として構成すると、Amazon ES ドメインへのデータストリーミングを開始できます。
スピードと俊敏性の向上
新しい製品を構築し、既存のソリューションを調整する際に、実験を行えるようにする必要があります。その実験の一部として、速めに失敗を経験することは、チームの革新ペースを加速するために新しいアプローチを試す、容認されたプロセスです。そのプロセスの一部には、環境をすばやく作成できるサービスの使用が含まれます。実験が失敗した場合は、新しいアプローチでやり直すか、最終的に望んだ結果を達成できるさまざまな機能を使用します。
Amazon ES を使用すれば、安全なマネージド環境から「分単位」で、Kibana を備えた Elasticsearch クラスター全体をプロビジョニングできるという利点があります。テストで望ましい結果が得られない場合は、サービス内のさまざまなインスタンスオファリングを使用して、1 回の API 呼び出しまたはコンソールでの数回のクリックを行って、クラスターのディメンションを水平または垂直に変更できます。
環境のデプロイに関しては、Amazon CloudFormation などのネイティブツールが、JSON または YAML を介した構成スクリプトを通じて環境全体を作成する機能を備えたデプロイメントツールを提供します。AWS コマンドラインインターフェイス (AWS CLI) は、コマンドラインツールを提供し、少数のコマンドセットでドメインを起動することもできます。環境のスクリプトで最新の流行に乗りたい場合に備えて、AWS CDK には Amazon ES 用のモジュールがあります。
まとめ
お客様の会社を差別化する製品とサービスを作るための重要で革新的な仕事に専念するよう、チームを導くことは大事です。Amazon ES は、検索および分析インフラストラクチャ運用の安定性、セキュリティ、およびパフォーマンスを提供するために不可欠なツールです。Amazon ES が提供する次の利点を考慮すると、移行を決定するのは簡単なことです。
- 検索、ログ分析、SIEM、およびその他のワークロードのサポート
- コスト管理に役立つ UltraWarm を使用した革新的な機能
- PCI および HIPAA ワークロードに対応する高度に安全な環境
- Elasticsearch を大規模に運用する方法を知っている、経験豊富なプロバイダーに運用プロセスをオフロードする機能
- インシデント対応を自動化する機能を備えた、詳細アクセス、ベクトルベースの類似性アルゴリズム、またはアラートとモニタリングを提供する追加費用なしのプラグイン。
AWS 無料利用枠で Amazon ES の使用を開始できます。この層では、t2.small.elasticsearch インスタンスを毎月 750 時間まで無料で利用でき、オプションで EBS ストレージ (磁気または汎用) を毎月 10 GB 利用できます。
今後数か月にわたって、Amazon ES への移行に役立つ移行パターンを紹介する一連の記事を共述する予定です。さらに、AWS には堅牢なパートナーエコシステムとプロフェッショナルサービスチームがあり、有能な人材が移行を支援します。
著者について
Kevin Fallis (@AWSCodeWarrior) は、AWS スペシャリストの検索ソリューションアーキテクトです。AWS では、顧客がビジネス目標を達成できるよう、AWS サービスを正しく組み合わせ、活用するサポートを行っています。仕事が終わった後は、家族、DIY プロジェクト、大工、ドラム演奏、音楽にまつわるその他のすべてで時間を過ごしています。