CodeZine(コードジン)

特集ページ一覧

Elastic Cloudで快適なアプリ開発を! Elasticコアプロダクトの全貌【デブサミ2021】

【19-B-2】Learn, Build, and Scale with Elastic - Elastic Cloud で快適なアプリ開発を実現しよう!

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/04/08 12:00

 分散型リアルタイム検索および分析エンジンであるElasticsearchは、多くの企業が利用する優秀なソリューションだ。本プロダクトを開発するElastic社は、Elasticsearchのテクノロジーを核としたプロダクト群Elastic Stack(Elasticsearch、Kibana、Beats、Logstash)を展開。また、これらの機能をパブリッククラウドサービス化したElastic Cloudも提供している。こうした各種サービスは企業のどのような課題を解決するのか。Elastic日本法人であるElasticsearch株式会社の鈴木章太郎氏がその全貌を解説した。

Elasticsearch株式会社 マーケティング部 テクニカル プロダクトマーケティング マネジャー 鈴木章太郎氏
Elasticsearch株式会社 マーケティング部 テクニカル プロダクトマーケティング マネジャー 鈴木章太郎氏

Elasticsearchが解決する課題とは何か?

 システムのデータを格納する目的で、リレーショナルデータベース(以下、RDB)が使⽤されることは多い。しかし、RDBには欠点がある。システム運用の長期化によりテーブルが肥⼤化して数百万のデータセットを含む状態になると、検索のパフォーマンスが著しく劣化してしまうのだ。この課題を解決するためにスキーマ分割やテーブル分割などの施策が行われるケースはあるものの、RDBの根本的な問題が解消されるわけではない。

 Elasticsearchはこうした課題を解決できる、柔軟で強力かつオープンでフリーな分散型リアルタイム検索および分析エンジンである。Elasticsearchはドキュメントベースのデータベースであり、データをJSON形式(⾮正規化された状態)で保存する。Elasticsearchを用いれば、たとえ数百万、数千万という量のデータであっても数秒ほどで簡単に検索できる。

 また、検索処理の高速性だけではなく日本語サジェスト機能の優秀性もElasticsearchの利点だ。

<日本語サジェストの機能概要>

・ユーザーが検索キーワードを入力すると、関連する候補が表示される。

 例:「日本」と入力すると「日本」「日本 地図」「日本 人口」などが提案される。

・不完全な検索キーワードを入力した場合でも、関連する候補が表示される。

 例:「にほn」と入力すると「日本」「日本 地図」「日本の人口」などが提案される。

・タイプミスした場合でも、意味の通る候補が提案される。

 例:「に hん」「にっほん」「日本ん」と入力すると「日本」「日本 地図」「日本の人口」などが表示される。

・候補となる単語が、キーワードが検索された回数が多い順に一覧表示される。

3 Solutions, 1 Stack, Deploy Anywhere

 鈴木氏は次に、Elastic社が提供する3つのソリューションやElastic Stack、多様なデプロイ選択肢について解説していった。

Elasticが提供する3つのソリューションやElastic Stack、多様なデプロイ選択肢の概要図
Elasticが提供する3つのソリューションやElastic Stack、多様なデプロイ選択肢の概要図

 Elastic StackはElasticsearchやKibana、Beats、Logstashから構成されるElasticのコアプロダクト群だ。Elasticsearchは前述の通り分散型リアルタイム検索および分析エンジンである。KibanaはElasticsearchのデータを可視化・分析するためのツールだ。棒グラフや円グラフなどさまざまな形式でデータを描画できる。

 Beatsは軽量なデータシッパーであり、各種システムからログデータなどを取得してElasticsearchに投入する役割を果たす。Logstashは強力なETLツールで、他のデータベースに格納されている大量のデータをすべてElasticsearchに投入するなどのユースケースで威力を発揮する。

 こうしたElastic Stackの技術をベースとして、Elastic社は「Elasticエンタープライズサーチ」「Elasticオブザーバビリティ」「Elasticセキュリティ」といった3つのソリューションを提供している。

 さらに、これらのソリューションのデプロイ選択肢も豊富だ。AWSやAzure、GCPといったパブリッククラウド環境にElasticをデプロイするためのElastic Cloud。物理ハードウェアや仮想環境、パブリッククラウド、プライベートクラウド、それらのハイブリッドなど多種多様な環境にデプロイできるElastic Cloud Enterprise。Kubernetes環境上にElasticをデプロイできるElastic Cloud on Kubernetesなどが用意されている。

Elasticを活用して、より良いアプリ開発を実現するために

 セッション後半で、鈴木氏はデモアプリを活用しながらElastic Cloudの概要を紹介していった。デモアプリとして例示されたのはECサイトだ。フリーワード検索や件数集計、タグなどによる絞り込み、ソート、ページング、サジェスト、ハイライトといった機能をElastic Cloudによって実現できることを鈴木氏は説明した。デモアプリのアーキテクチャ全体像は下図の通りである。

デモアプリのアーキテクチャ全体像
デモアプリのアーキテクチャ全体像

 さらにセッション内では、Elasticsearchに関連した機能開発に役立つ、生産性を向上させるツールについても解説された。

 まずは「Elasticsearch for VSCode」だ。これはElasticsearch APIをVSCodeから呼び出すための拡張機能でここからインストールできる。この拡張機能を使うことで、Elasticsearch APIを利用する際にcurlコマンドなどをたたく必要がなくなりVSCode上だけで操作が完結するため、開発効率化に大きく寄与してくれる。

 また、.NET用クライアントライブラリとして「Elasticsearch.NET」や「NEST」も紹介された。「Elasticsearch.Net」はlow levelなクライアントライブラリであり、かつ他ライブラリとの依存関係がない。「NEST」はhigh levelなクライアントライブラリで、すべてのリクエスト・レスポンスを特定の型としてマッピングする。また、「NEST」にはElasticsearchのクエリDSLと1対1でひもづけられるクエリDSLが付属している。

 両ライブラリはNuGetパッケージマネージャーより以下のコマンドでインストール可能だ。

Install-Package Elasticsearch.Net
Install-Package NEST

 さらに、Elasticsearchに保管したデータを手軽に取り扱えるフロントエンドUIコンポーネントとして「Reactivesearch」も紹介された。

 アプリケーション開発において「利便性の高い検索機能をユーザーに提供すること」「データを集計・可視化してサービスの改善に役立てること」は重要だ。その目的を実現するための手段として、Elasticの各種プロダクトが有益であることが伝わるセッションとなった。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5