最近、クラウドコンピューティングやエッジ コンピューティングなどに交じって「フォグコンピューティング」という言葉が使われるようになってきました。「フォグコンピューティング」はシスコシステムズによって提唱された比較的新しい言葉で、エッジコンピューティングと同じ文脈でよく使われています。それでは、なぜ新しい言葉を作る必要があったのでしょうか?ここでは、「フォグ」の意味、フォグコンピューティングとエッジコンピューティングとの違い、フォグコンピューティングとエッジコンピューティングに共通な「分散処理」について解説します。さらに、一般的なクラウド・フォグ/エッジ・物理デバイスの三層モデルの場合の各サーバーの役割についても言及していきます。
「フォグ」とは
フォグとはどのような意味でしょうか?Fogとは英語で霧のこと。今日では一般的な言葉となったクラウドコンピューティングの「クラウド」は「雲」という意味です。つまり、クラウドより地上に近いところに存在するという意味にとれます。たとえばセンサーのような物理的なデバイスを「地上」とすると、クラウド=雲よりも近いところに存在し、クラウドと物理デバイスの間を取り持つシステムの総称を指しているのです。他にも、「霧」という言葉には、クラウド(雲)を分散させて霧のようにする意味も含まれると考えられます。
クラウドと物理デバイスの間を取り持つシステムで、一般的に使われていて似たような言葉には「エッジコンピューティング」があります。実際、エッジコンピューティングとフォグコンピューティングはあまり厳密な言葉の使い分けがなされておらず、現状はほとんど同じ意味合いで使われているといってよいでしょう。「エッジ/フォグコンピューティング」と、併記する例も多く見られます。
「フォグ」と「エッジ」の違い
では、なぜあえて新しい言葉をつくったのでしょうか?この点を考えると、 エッジ コンピューティング とフォグコンピューティングの違いが明らかになってきます。
エッジコンピューティングは、ユーザーに近い場所でデータ処理を行い、クラウド一辺倒にならないことでサーバーの負荷を減らす技術です。つまり、これもクラウドと物理デバイスの間で仕事を行うわけですが、エッジコンピューティングが物理デバイス寄りなのに対して、フォグコンピューティングは、もう少しクラウドに近い場所に位置するところが異なっています。フォグコンピューティングはクラウド側での技術をエッジサーバーに落とし込みつつリソースの最適化を図り、ほぼリアルタイムに近い時間で分散処理を行うことを目指しています。言ってみれば、エッジコンピューティングの機能やメリットを維持しつつクラウドコンピューティングに近づくことが目的です。
逆に言えば、クラウドサーバーの機能をエッジサーバーに移すことによって、クラウドサーバーでの処理を分散処理していくことともいえるでしょう。先にも挙げたように、クラウドサーバーの分散化を、雲が分散して霧になることに例えて、フォグコンピューティングという言葉が生まれたと考えることもできます。
分散処理の必要性
エッジコンピューティングやフォグコンピューティングに共通しているのは「分散処理」です。これに対してクラウドコンピューティングは原則として「集中処理」です。エッジコンピューティングやフォグコンピューティングが脚光を浴びているのは、この「分散処理」に理由があるといえるでしょう。では、なぜ分散処理が必要になっているのでしょうか?
背景のひとつとしては、クラウドコンピューティングの限界が考えられます。クラウドコンピューティング、つまり集中処理のデメリットとしては、ネットワークへ送るデータ量が多くなるため、スピードが低下したり、データがクラウドサーバーに集中するため、セキュリティに不安が残ったりします。そこで、物理デバイスとクラウドサーバーとの間に中間サーバーを設け、ここで分散処理する必要性が出てきます。この中間サーバーが物理デバイス寄りにある(エッジサーバー)か、クラウド寄りまで対応する(便宜上フォグサーバーと呼びます)かによってエッジコンピューティングと呼ぶか、フォグコンピューティングと呼ぶかが変わってくるのです。
なお、上記の例では、クラウドサーバー・中間サーバー・物理デバイスの3層モデルで考えましたが、実際には、クラウドサーバーが存在せず、複数のサーバー・物理デバイスの2層で構成されているシステムもあります。このようなシステムは、3層モデルにおいてクラウドサーバーが行う処理が、クラウドの手前にあるサーバーによって処理されているのです。このサーバー群はエッジサーバーも含んでいますが、クラウドサーバーとエッジサーバーの両方の機能を有しているという点で、フォグコンピューティングが目指すシステムにもっとも近いといえるでしょう。
3層モデルでの各サーバーの役割の例
最後に、3層モデルにおける各サーバーの役割をおさらいしておきましょう。前述のように2層モデルの場合もありますが、ここでは一般的なクラウドサーバー・中間サーバー・物理デバイスの3層モデルで考えます。
まず、エッジサーバーの役割は、データの収集と緊急対応です。緊急対応というのは、たとえば、ロボットが人にぶつかりそうな場合に、ロボットを一時的に緊急停止させるようなことです。データの生成場所に近いという点では基本的にはエッジサーバーはスピードに優れているので、緊急度の高い処理はエッジコンピューティングが最も適していると考えられます。したがって、予知保全のような用途で使われる人工知能(AI)も、スピードを求められるため基本的にはエッジサーバーに置かれるでしょう。
フォグサーバーの役割は、データの蓄積・分析を行い、クラウドに結果を送ることと言えます。場合によってはフォグサーバーが直接データ収集を行ったり、クラウドサーバーの機能を代行したりすることも含まれるでしょう。先に挙げた人工知能の例では、応答スピードが要求されない用途であればフォグサーバーに置かれることも考えられます。
クラウドサーバーはエッジサーバーやフォグサーバーからのデータを統括し、担当者に表示したり、より上位のシステム(たとえば経営管理のシステム)に分析結果を送信したりする役割を担います。また、エッジコンピューティングにおいては、データの蓄積・分析などをクラウドサーバーが行う場合が多いでしょう。
エッジ/フォグコンピューティングの導入に際して注意すべきこと
今回はフォグコンピューティングの基礎について、簡単に見ていきました。エッジコンピューティングやフォグコンピューティングの構築は、現場の事情をよくくみながら、生産システム全体としての戦略にもとづいて行う必要があるでしょう。また、どの処理をどのサーバーに処理させるか、といった点も一概にこれが良いといえるわけではなく、バランス感覚が必要です。エッジコンピューティングやフォグコンピューティングは、まだまだこれからの分野ともいえるため、外部の専門業者に依頼するときは、こうしたポイントにも注意を払いながら最適なシステムの構築を進めていきたいものです。