Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Let’s Amazon OpenSearch Service その次に!

Let’s Amazon OpenSearch Service その次に!

https://nakanoshima-dev.connpass.com/event/233013/
[Online]nakanoshima.dev #24 OpenSearch Service で位置情報を可視化
2021/12/15(水) 18:30 〜 20:15

owaranai_dobby

December 15, 2021
Tweet

More Decks by owaranai_dobby

Other Decks in Technology

Transcript

  1. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. Let’s Amazon OpenSearch Service その次に! nakanoshima.dev #24 Takao Mitsuyoshi Amazon Web Service Japan Solution Architect
  2. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    自己紹介 光吉 隆雄(Mitsuyoshi Takao) アマゾン ウェブ サービス ジャパン合同会社 技術統括本部西日本ソリューション部 ソリューションアーキテクト 経歴: 大手ゲーム会社基盤開発・DevOps推進 Infrastructure as Code, CI/CD, Container 好きなサービス: AWS CodeBuild AWS App Runner
  3. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    アジェンダ • 目的とデータに見合った設計を行う • データの型を考える • データのライフサイクルを考える • インデックスの作成 • ライフサイクルの作成 3
  4. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. 目的とデータに見合った設計を行う
  5. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Amazon OpenSearchにデータを送るケース • 全文検索エンジン機能 • ニアリアルタイムに状況を可視化する機能 • 何をどう可視化するか? • いつからいつまでのデータが必要か? 5 • データの型を考える • データのライフサイクルを考える
  6. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. データの型を考える
  7. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Amazon OpenSearch Serviceの型の重要性 • 何も設定しないとデータは入るが型が自動決定される • 位置情報の型は複数あり単純なgeo_pointでも構造は複数ある • key名の先頭に「_」は使用できない • 全文検索を可能にするか?(Analyzer) • mappingを行うことで入るデータの型をインデクスごとに決定 • mappingとIoT SQLのSELECTを正しく合わせる 7
  8. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    AWS IoT SQLとは • IoT Coreに渡ってきた構造化データをSQLで扱える • ネスト構造にも対応している • 単純なSQL以外にも拡張されたメソッドが用意されている • ETL処理を行うためにAWS LambdaやAWS Glue Streaming Jobに 繋げなくても基本的な変換処理をSQLで済ませることが可能 8
  9. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    AWS IoT SQLとは 9 SELECT color AS rgb FROM 'topic/subtopic' WHERE temperature > 50 データを抽出する対象のトピックを 指定します。固定値でなく「#」 「+」といったワイルドカードを利用 して特定階層全体を取得できる 基本的なOperatorsによるフィルタだ けでなく、FunctionやCaseによる複 雑な条件付も可能 FunctionやCaseによる複雑な条件 付けやカラム名変更の「AS」なども 利用可能。構造化データでなくバイ ナリデータとして扱うことも。
  10. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    AWS IoT SQLでJSON構造を扱う 10 { “_id”: “ABCD” "mydata": { “type”: “hoge” “item2”: “12.3” } } SELECT mydata.type as yourdata.type FROM … => { “yourdata”: { “type”: “hoge” } } SELECT get(*, “_id”) as device_id FROM … => { “device_id”: “ABCD”} ネスト構造の参照 特殊文字や数字が含まれるROOTにあるカラムの参照 SELECT get(mydata,"item2") as item FROM … => { “key”: “12.3”} 特殊文字や数字が含まれるカラムの参照
  11. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    AWS IoT SQLの様々な表現 11 { “_id”: “ABCD” "mydata": { “type”: “hoge” “item2”: “12.3” } } SELECT cast(get(mydata, “item2”) as Int) as item_num FROM … => { “item_num”: 12 } SELECT CASE mydata.type WHEN “HOGE” THEN True ELSE False END AS is_hoge FROM … => { “is_hoge”: True } cast(): 型変換 CASE文: 条件分岐 SELECT regexp_replace(get(*, “_id”), “CD”, “xx”) as formed_id FROM … => { “formed_id”: “ABxx”} regexp_match, regexp_replace, regexp_substr: 正規表現
  12. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. データのライフサイクルを考える -インデックスの作成-
  13. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Amazon OpenSearch Service の構成 Index(Shard1) node1 Cluster Index(Shard2) Replica Index(Shard1) node2 Replica Index(Shard2) node3 master node master 候補 node master 候補 node ノード、シャード、レプリカの設定はベストプラクティスを一読! https://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/sizing-domains.html
  14. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    ライフサイクルにあったインデックスの管理 14 • いつからいつまでのデータが”主に”欲しいですか? • いつからいつまでのデータが”まれに”見られますか? • いつからいつまでのデータを保持しておきたいですか? • いつからのデータが不要ですか? 現在 1日 7日 1ヶ月 3ヶ月 リアルタイムで 見たい 比較のために たまに見る 念の為に 残しておく
  15. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    インデックスの設計 • 1つのインデックスに詰め込みすぎると… • きめ細やかなインデックスごと管理を行えない • インデックス自体のパフォーマンスの劣化 • 時系列のログは必要に応じて日時ごとにインデックスを作る 15 hogehoge-YYYYMMDD fugafuga-YYYYMM or fugafuga-YYYY 大量のセンサーデータが秒単位で送られてくる データの量はそんなに多くない/集約されたデータ 2021/12/01 2021/12/02 ALL
  16. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    インデックスをロールアップする 16 • 直近のデータは秒単位で欲しいが古いデータは不必要 • 古いデータを集約することで粒度の粗いデータ(例えば1時間単 位)として保持するインデックスに変更する
  17. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. データのライフサイクルを考える -ライフサイクルの作成-
  18. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Cluster Ultra Warm ストレージ Ultrawarm node Index B(Shard1) Index B(Shard2) Index(Shard1) node1 Index(Shard2) Replica Index(Shard1) node2 Replica Index(Shard2) node3 master node master 候補 node master候補node read only!
  19. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    コールドストレージ Cluster Ultrawarm node Index B(Shard1) Index B(Shard2) Index(Shard1) node1 Index(Shard2) Replica Index(Shard1) node2 Replica Index(Shard2) node3 master node master 候補 node master候補node
  20. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    ライフサイクルを考える 20 現在 1日 7日 1ヶ月 3ヶ月 リアルタイムで 見たい 比較のために たまに見る 念の為に 残しておく 通常のノード UltraWarm コールド 削除
  21. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Index State Managementによるローテーション 21 • インデックス管理をAmazon OpenSearch Service内で完結 • インデックスを古さに応じてストレージを変更する • 不要になったインデックスは削除する
  22. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Curatorを利用したローテーション 22 • ElasticSearchですでにCuratorを利用されている場合 • Index State Managementで実現できない条件 • Amazon EventBridge、AWS Lambdaを利用するため構成複雑化 • その分、Curatorに留まらない柔軟な設定が可能 rate(1 day) cron(0 0 * * ? *) Curator Python API
  23. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    © 2021, Amazon Web Services, Inc. or its affiliates. まとめ
  24. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    まとめ • やりたいことを明確にしてそれに見合うデータ構造を設計 • AWS IoT SQL • Amazon OpenSearchのmapping • データの性質に合わせたデータのライフサイクル管理を設計 • ストレージタイプをシチュエーションに合わせて変更 • Index State Management / Curator 24
  25. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    資料 • AWS IoT SQLリファレンス • https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-sql- reference.html • Amazon OpenSearch Serviceドメインのサイジング • https://docs.aws.amazon.com/ja_jp/opensearch- service/latest/developerguide/sizing-domains.html • Amazon OpenSearch Service でのインデックスステート管理 • https://docs.aws.amazon.com/ja_jp/opensearch- service/latest/developerguide/ism.html 25
  26. © 2021, Amazon Web Services, Inc. or its affiliates. NAKANOSHIMA.DEV#24

    Thank you! © 2021, Amazon Web Services, Inc. or its affiliates. 26