本稿では仮想サーバー上で、コンテナ技術を活用してデータ分析・表示のサービスを実現する構成例について解説します。
はじめに
近年、コンテナはさまざまなシステムのシーンで利用されつつあります。
それでは、具体的にどのような構成でコンテナを作成していくかという観点でわかりやすく解説します。
Webのシステムには、アプリケーションのデータや、アクセスログなどのように、さまざまな種類の大量のデータがありまが、それらのデータ分析をテーマとします。
各種のデータを分析するシステムは、近年はシステムとビジネスの両面から重要な位置にあります。
ここでは、OSSを利用したデータ分析・表示のシステムの構成について解説します。
ElasticsearchとKibanaを使う
アプリケーションのデータやシステムへのアクセスのログなどは、データベースやOSのLogフォルダに蓄積されます。
この例では、蓄積されたデータを、全文検索アプリのElasticsearchで解析して、その結果をKibanaでビジュアル化して表示します。
Elasticsearchはいわゆる全文検索アプリです。日本語に対応するには「kuromoji」などが必要となります。
全文検索は文字列をキーにして、複数の文書を含めて検索して、目的のデータを探し出す機能で、検索エンジンのもととなるしくみでもあります。
Web環境で大量のデータを分析・表示するしくみとしては、近年増えている構成です。
全体構成/Elasticsearchのバックヤード
それでは、構成例を見てみます。
仮想サーバー上でのソフトウェア構成として、フロントはKibana、バックエンドでは、Elasticsearch、APサーバー機能、MongoSQL、Apacheが動作しています。
MongoSQLやLinuxのアクセスログが格納されるLogフォルダに、Elasticsearchからのアクセス権(ReadOnly)を付与することで、Elasticsearchから各DBやフォルダにアクセスして、データを読み取り解析します。解析した結果は、Indexファイルとしてまとめられます。
Kibanaは、このIndexの情報を図表として表示します。
このようなシステムはアクセスログの分析でも使われますが、定型化されたデータが大量にアップロードされてくるIoTシステムなどでもよく利用されています。
コンテナを活用した構成例
ここまでは、仮想サーバー上での構成例を解説してきましたが、コンテナ技術を活用したらどのような構成に変わるかを一例として示したのが次の図です。
コンテナを活用する場合には、DockerやKubernetesなどのコンテナ型仮想化プラットフォームが必要となります。
重要なのはコンテナを活用の考え方
この例では、「1サービス(アプリ)/1コンテナ」の考え方で、それぞれのサービスを別々のコンテナに実装して、コンテナ内の部品を入れ替えても、他のコンテナに影響を与えないようにしています。
「1 on 1」の考え方を一つの基準としますが、同じデータ(ログデータ)を扱う1つのサービスと捉えて、同一のコンテナ内にパッキングする考え方もあります。
基本的には、何のためにどのように分けるかで切り方は変ります。
なお、コンテナが最適なサーバーに移動できることを想定すると、Logの取得方法も変更する必要があります。