エッジサーバーやエッジコンピューティングって?
はじめに
はじめまして、けいしです!
僕は株式会社バニッシュ・スタンダードという会社で、開発エンジニアやらせてもらってます!
大学生やりながら、golang使ってバックエンド開発したりしてます😊
僕は身長が180cmあるのですが、リモードでしか顔合わせをしたことがない人と、対面で会うともっと小さいかと思ったとほぼ毎回言われます。なので初対面で会話に困らなくて助かってます!
私は現在、「データAIチーム」という部署に所属しています。
どんなことをやっているかというと、生成AIを使った新機能の開発や、サービス運用していく中で得られる様々なデータを使って、データ分析やデータの可視化などをやってます!
そんな中、AI系のサービスにおいて、データ処理や分析などで活用されているエッジコンピューティングというものがあると知り、興味本位で色々調べてみました!
エッジコンピューティングについて話す前に、エッジコンピューティングに深く関連する、エッジサーバーというものがあるらしく、それについても調べてみました。
エッジサーバーって?
エッジサーバーはネットワークの末端である「エッジ」に存在するコンピュータのことを指します。
主な役割としては、クライアントからのリクエストを受け取り、リクエストに応じてコンテンツやデータを提供することです。
その他のサーバーと大きく違うところは、エッジサーバー自体がエンドユーザーの近くに配置されているということです。
エンドユーザーから近いため、応答速度が速かったり、オリジンサーバーへの負荷を分散、減らしたりすることもできたりします。
エッジサーバーを使用したネットワークで有名なのは、CDN(Content Delivery Network) などがあげられます。
CDNは各地に配置した多くのキャッシュサーバーにWebサイトのコンテンツを保存し、リクエストユーザーから近いキャッシュサーバーからコンテンツを配信するといった仕組みで、エッジサーバーに該当します。
エッジサーバーのメリット・デメリット
エッジサーバーのメリット
-
高速な配信が可能
エッジサーバーはユーザーに近い場所に配置されており、コンテンツを迅速に提供することができます。これにより、応答時間の短縮、応答遅延などを最低限に抑えることができ、ユーザーエクスペリエンスが向上します。
-
地理的な制約の克服
エッジサーバーが世界中に配置されているため、ユーザーに遠隔地からでも高速かつ安定したサービスを提供することができます。
-
オリジンサーバーへの負荷分散
エッジサーバーがリクエストを処理することで、オリジンサーバーの負荷を分散し、サーバーの負荷を軽減します。特にトラフィックが急増した場合などに有効です。
-
冗長性と可用性の向上
複数のエッジサーバーが利用可能なため、1つのサーバーがダウンしても他のサーバーが引き継ぐことができ、サービスの可用性が向上します。
-
セキュリティリスクの軽減
大部分の処理をエッジサーバーで実行するエッジコンピューティングを採用している場合、外部のネットワークからオリジンサーバーへのやり取りを最低限に抑えることができ、情報漏洩などのリスクが軽減されます。
エッジサーバーのデメリット
-
コストの増加
オリジンサーバーやクラウドサーバーに対して、エッジサーバーが複数配置され、この間をネットワークでつないで構成されます。つまり、システムの中に複数のサーバーが存在するため、システム全体の構成が複雑になり、その結果、システム全体のコストも高くなる傾向があります。
-
データ消失リスクがある
エッジコンピューティングでは、エッジサーバーで処理したデータの中で、必要なデータのみをオリジンサーバーやクラウドサーバーへ転送し、不要なデータは削除されてしまう場合が多くあります。これはエッジサーバーの記憶容量に限界があるためです。そのため、本当は必要であったデータが消失してしまうというリスクがあります。
エッジコンピューティングとは
エッジサーバーは、エンドユーザーから近いサーバーがコンテンツの配信をしたり、リクエストをキャッシュして迅速に応答したりを行うものでした。
それに対して、エッジコンピューティングは、キャッシュやコンテンツ配信以外にも、リクエストに対してのデータ処理や、分析などデータセンターで行われていた内容を実行することができます。
簡単にいうと、各エッジサーバーがDBやデータストレージにアクセスができ、エッジサーバー内でプログラムコードなどを実行することができるということです。
エッジコンピューティングの利用事例
-
ウォークスルー顔認証は、カメラの前で立ち止まることなく歩きながらの顔認証を可能とするシステムです。
具体的なアーキテクチャ
認証機器の近くに認証データが格納されているデータベースや、データ処理用のエッジサーバーがあり、そのサーバーで、ビデオから得られる映像データをストリーミング分析し、データ処理用のサーバーで顔の特徴量を算出します。
算出した特徴量をフィルタリングし、データベースと照合し、照合結果から、顔の特徴量に合致したデータがあれば認証を通過します。
エッジコンピューティングの活用により解決された課題
歩きながらほぼリアルタイムで認証を行うことで、認証の待ち時間を最小限にすることができ、ユーザーエクスペリエンスの改善が実現されました。
-
具体的なアーキテクチャ
店舗内に複数のAIカメラを設置し、AIカメラの画像を店舗内のコンピューターで処理、画像から顧客の位置情報や人数、性別、推定年齢などを抽出して、抽出した情報だけをクラウドに送信します。
来店客の情報や、行動状況などを分析することで、マーケティングに活用することができます。
エッジコンピューティングの活用により解決された課題
映像データは多様な用途に使えて非常に便利な反面、無駄な情報が多いのも事実。位置情報や人数、性別、推定年齢など一部の情報だけを抽出することで、必要最小限のデータだけを送信するになり、個人情報が漏洩するリスクを削減したり、ネットワーク負荷の軽減に貢献しています。
そのほか、自動運転などで採用されていたり、有名どころのサービスだと、Amazon Goという小売り分野の無人店舗サービスなどで、エッジコンピューティングが活用されていたりします。
エッジコンピューティングを提供しているサービス
- Cloudflare Workers
- Vercel Edge Functions
- Fastly Compute@Edge
- Akamai EdgeWorkers
- Google Distributed Cloud Edge
- Amazon
- CloudFront Functions
- AWS Local Zones
- AWS Wavelength
- Lambda@Edge
まとめ
今回、エッジコンピューティングについて調べてみました。エッジコンピューティングは、AIやデータ分析、IoTの分野でよく活用されているイメージですが、スマホアプリや、Webアプリなどのバックエンドなどでも、今後使うところが増えていくんだろうなと思いました。(実際に使っている現場を見たことがある)
API開発で使えると言えど、使用用途は限られてくるのかなとか思ったりします。
更新、作成などの、オリジンサーバーと同期が必要な処理などは、あまりエッジコンピューティングを有用に使えなかったりするので、自社でやってるサービスの構成をエッジコンピューティング化していくのは、難しそうと思っていたりします。
個人開発などでも、エッジコンピューティングを利用したクラウド使ったり、APIの開発とかもやってるので、また何か発見などがあったら、記事にしてみようかなと考えてます!
やっぱこうやって何かしらのアウトプットするの大切だなと思います!
じゃないと頭に入らないし、記憶に残らないので笑
Discussion