2021年振り返りと2022年予想
今年個人的に心に残ったテーマと来年盛り上がりそうなテーマをつらつら書きます。
「2020年予想」の振り返り
残念ながら昨年はコロナ禍で一年飛んでしまいましたが、前回「TechRepot 2019.12」での2020年予想をふりかえってみます。
デジタルツイン
物理空間を様々なセンサーによって計測し、それらデータを元に「デジタル上の双子」を作り上げるのがデジタルツインです。デジタルツインをもとに、今何が起きているかを推測、今後何が起きるかを予測し、様々な課題を解決しようというものです。シミュレーション技術のひとつですが、現実の物理空間をリアルタイムに再現していることに重きが置かれています。
再現する「粒度」はさまざまで、ミリ以下の細かい精度で再現することで故障などを推測するケースもあれば、メートル単位や建物単位といった粗い精度で物や人の動きを再現するようなケースもあります。
この2年間で製造業や建設業を中心に様々な事例が登場していますが、ひとつ特徴的なものとして「東京都デジタルツイン実現プロジェクト」を紹介します。東京都の3Dモデルのうえに、オープンデータとして提供されている都営バスの現在位置情報や河川監視カメラなどを重ね合わせるというものです。ここからさらに人流データや混雑情報を重ね合わせることで、災害時の避難ルートを最適化するなどといった活用を検討しています。
IoTシステムのデザインパターン
IoT領域におけるリファレンスモデルを提供しようという試みはいくつか登場してはいるものの、広く普及するという段階ではなく、個々の取り組みにとどまっているようです。
エッジコンピューティング
数年前まで実態が定まらないバズワードとみなされていたエッジコンピューティングは、この数年で3つの具体的な領域で具体化してきました。
ひとつめは、インターネット回線の手前側でデータの一次処理を行う、主にIoTの文脈での利用形態です。特に機械学習モデルを利用したAIカメラが、容量の大きな画像や動画をクラウドまで送らないというメリットが明確で、クラウド側の管理基盤と組み合わせて広まりを見せています。AWSからは2018年に登場した「Deep Lens」に続いて、既存のカメラに機械学習モデルの推論を付け足すAWS Panoramaがリリースされています。ソラコムからも「S+ Camera」がでましたね。
ふたつめは5G化の波を迎えたモバイルキャリアが推し進めるMECです。当初はMobile Edge Computingと呼ばれていましたが、5G網だけでなく固定回線なども包含したMulti-access Edge Computingと現在では呼ばれています。高性能なGPUを必要とするゲームをクラウド上で実行するクラウドゲーミングサービス「GeForce Now」はauとSoftBankですでに商用利用を開始しています。より汎用なクラウド基盤を提供するものとして、docomoはOpenStackやVMwareを基盤にした「ドコモオープンイノベーションクラウド」を提供し、auはAWS Wavelengthとの接続を提供しています。楽天モバイルは最初からの構築であるという強みを活かし、基地局のより近くにMECサーバーを併設するという挑戦を進めています。
最後がCDNのエッジサーバ上で処理を行うモデルです。この項目については、来年さらに伸びそうなキーワードとして後ほど詳しく書きます。
Stateful FaaS
ステートレスが原則であるFaaSに状態を持ち込むためのアプローチとして、イベントに含まれるキーを利用したシャーディングによる実行インスタンスの半固定化があります。Cookie時代のスティッキーセッションをいまどきの技術で再構成したようなものです。
分散アプリケーションプラットフォームのAkkaをベースにしたOSSであるCloudstateが開発されていましたが、そのPaaS版であるAkka Serverlessが登場しています。
CNCF CloudEventsとEventBridge
イベントメッセージの標準仕様であるCNCF CloudEventsが策定され、新しいサービスでは徐々に採用されるケースが広まっています。AzureではEvent GridでCloudEventsが使われていましたが、GCPのEventarcでも採用されています。またGoogle Cloud Functionsにおいて.NET、Ruby、PHPのランタイムではCloudEvents形式でイベントが渡されます。
イベントバスサービスも、Azure Event Grid、AWS EventBridgeに続いてGCPでもEventarcが登場しました。オブジェクトストアへの変更など様々なクラウド内のイベントをトリガーに関数を実行するには、これまではFaaSの機能として対応してきましたが、処理失敗時の再実行などが個別の対応となるなど課題がありました。FaaS以外のコンテナや個別機能のマネージドサービスでイベントを受信することなども考えると、今後は直接連携するのではなくイベントバスを介した疎結合が基本となっていくと考えられます。
認証基盤のクラウドサービス化
自前で認証機能を持たず、Auth0やAmazon Cognito、Azure AD B2Cなどを認証基盤として利用する事例はかなり増えているようです。多要素認証やWebAuthnなどへの対応が必要となり、自前で実装することの難しさと直面することになります。
そういえばJava版Minecraftも、Mojang時代からの独自認証基盤からMicrosoftアカウントに一本化されました。大規模になればなるほど自前で持つのが厳しくなった時代ならではの象徴的なできごとと言えます。
パスワードの終焉、MFA 2.0
Yahoo! JAPANではSMSによるパスワードレスログインが基本となりました。MicrosoftアカウントやAzure ADの法人テナントでも、スマートフォンアプリ連携でパスワードレスログインが可能になっています。さらにMicrosoftアカウントではそもそもパスワードの登録を削除し、パスワードを使ったログイン自体を停止できるようになりました。
これまで多要素認証というと、古くからは4~6桁の数値を表示するハードウェアトークンや認証アプリ、最近ではYubiKeyやGoogleのTitan Security KeyなどUSBに刺して使う「ドングル」タイプのイメージが強かったですが、スマートフォンそのものを認証器として、プッシュ通知を利用するものや、スマートフォンの生体認証機能を利用するパターンが増え、利便性がぐっと向上しました。はやくパスワードレスがより当たり前の社会になってほしいものです。
情報システムとゼロトラスト
すべてのアクセスを動的なポリシーで検証するゼロトラストと、その考え方をベースに情報インフラを一から構築するゼロトラストネットワークは、一般的な会社における閉域ネットワークの考えからかなり距離があり、なかなか普及が難しいだろうと予想していましたが、コロナ禍によるリモートワークの急激な展開と、それに伴うVPNの性能限界などの理由から、一気に必要性が増しました。
昨今の「横移動」が当たり前になったマルウェアに対して、ネットワーク境界での防御は無力です。どれだけ閉域網を強固に組もうとも、最終的にはきちんとリソースごと、アクセスごとに動的にポリシーを適用していく必要があります。ポリシーエンジンが正しくポリシーを適用していくためには、きちんと情報を収集しリスクを判断する必要があります。そのための道具はかなり揃ってきています。
レガシーシステムと2025年の崖
2018年の「DXレポート」を受けた施策が展開され、その中間報告となる「DXレポート2」が公開されました。さらにその追補版となる「DXレポート2.1」も公開されています。
コロナ禍を受けて、企業のデジタルトランスフォーメーションの動きは一気にアクセルを踏んだ状態にあります。その一方で、東京大会期間中の交通渋滞への対策や、地理的や時間的に多様な人材を取り込むためにリモートワーク体制の整備を進めてきた組織など、環境の変化に対応し力を伸ばした企業もあれば、対応できずコロナ禍において大きな生産性の低下を招いた企業もあります。単なる「レガシーシステムの更新」に留まらず、より攻めの姿勢でいきたいものです。
ARMとRISC-V
ARMアーキテクチャを採用したApple M1チップと、それを採用したMacBook Airが2020年末に登場し、コンシューマ向けCPUとして唐突にメインになりました。高性能コアと高効率(省電力)コアを組み合わせた構成で、PCのユースケースにおいて極めて優秀な性能であることは周知の通りです。
RISC-Vも、Appleが大規模に開発者を募集しているなどニュースなどで見る機会が増えてきました。
というわけで、ここからは来年注目したいキーワードを取り上げていきます。
CDNエッジコンピューティング
クラウドのデータセンターよりもさらに数多く分散して配置されたCDNのエッジサーバ上で処理を行うことで、リクエストに対して低い遅延で応答できるだけでなく、元々のCDNのプロキシサーバとしての動作をカスタマイズすることも可能です。
AWSが提供するCDNであるCloudFrontでも2017年からLambda@Edgeが提供されていましたが、すべてのエッジサーバ(Edge Location)で動作するCloudFront Functionsがリリースされました。CDN専業プロバイダからも、CloudflareからCloudflare Workers、FastlyからCompute@Edgeがそれぞれリリースされています。
AWS LambdaのサブセットであるCloudFront Functionsに対して、Cloudflare WorkersではService WorkerのAPIを利用したJavaScript環境であったり、Fastly Compute@EdgeはWebAssemblyの高速なランタイムから開発し投入するなど、各社の挑戦的な取り組みが見えます。
CDNエッジコンピューティングは、古くからあるリクエストやレスポンスの調整だけでなく、Next.jsなどのSSR(Server-side Rendering)やISR(Incremental Static Regeneration)と組み合わせてコンテンツ生成の最適化を図るユースケースが普及期に入りつつあります。
特にCloudflareはCDNエッジコンピューティングの高度化に熱心で、いわゆるファンクション系の実行基盤だけでなく、結果整合性を持つKVSであるWorkers KV、S3 API互換のオブジェクトストレージR2、強い一貫性を提供するDurable Objectsなどデータストアを提供しています。さらにはまだ具体的なサービスにはなっていないものの、エッジサーバ上での機械学習モデルの活用を目指してNVIDIAとの提携も発表されています。
サーバーレス技術の一分野として今後も注目していきたい領域です。
イベントバス
イベントドリブンなシステムを構築するには、関数や様々なクラウドサービスをイベントで結びつける必要があります。このイベントの仲介を行うのがイベントバスです。
具体的には以下のサービスが対応します。
- Amazon EventBridge
- Azure Event Grid
- Google Eventarc これまで各社のFaaSは、クラウドサービスからのイベントを「トリガー」として直接連携できるように設計されていました。特にAWS Lambdaは様々なクラウドサービスと連携ができることで、「のり付け」としての価値を提供しています。参考までに、右表は拙著「Serverlessを支える技術」からの抜粋で、これは2019年当時の状況ですので現在はさらに多くのサービスと連携しています。
イベントバスはPubSub型のメッセージング基盤で、送信者(Publisher)は、どんな受信者(Subscriber)が居るかを直接意識することなく、イベントを送信します。直接連携ではなくイベントバスが必要とされた背景はいくつかあります。
ひとつはFaaSの実行失敗などが起きた場合のリトライ処理や、連携先の関数などを呼び出す認証情報に関する煩雑さなどの解決です。たとえばイベント処理におけるリトライはただ繰り返すだけでなく、指数関数的バックオフ(Exponential Backoff)のようにリトライ間隔を制御することが重要です。認証情報も、送信者と受信者の掛け算で管理していく必要がありますし、組織をまたいで連携する場合にはさらに複雑になっていきます。
AWSにおけるPubSubとしてはこれまでもAmazon SNSやAmazon Kinesis Data Streamsがありましたが、Amazon EventBridgeではAWSアカウントをまたいだ接続や外部SaaSとの連携など、様々なイベントドリブンアプリケーションを構成するための機能が強化されています。
もう一つは、イベントの送信先の多様化です。AWS LambdaなどFaaSだけであれば単純でしたが、たとえばAWS Step Functionsのステートマシンやローコード基盤のAzure Logic Appsなど「自分で関数を書いたら負け」という世界につなぎこむ場合もあれば、複雑なソフトウェアをコンテナに閉じ込めたGoogle Cloud Runアプリケーションを呼び出したい場合も考えられます。実現したいことを実装するのに適した環境を選択できるよう、イベントバスを挟むことでその多様さを吸収できます。
さらにイベントバスが介在することで、ルーティングやフィルタリングなどイベントの内容に応じて送信先を制御できるようになります。これまではイベントを受信したFaaS関数の方で判断するのが一般的でしたが、イベントバス側であらかじめ必要なイベントだけに限定することができれば関数の実行回数・処理時間を減らすことができますし、上でも述べた送信先の多様化にも絡んできます。また「JSON色付け係」というキーワードが最近ありましたが、Amazon EventBridgeではInput Transfomerとして入力イベントを変形することもできます。
こういった特徴を踏まえると、マイクロサービス間で疎結合を保ったまま管理していくためにサービスメッシュが必要とされたように、イベント駆動アプリケーションで疎結合と管理性を両立するために必要となるのがイベントバスと言えるかもしれません。
WebAssemblyとeBPF
動かすレイヤーは大きく異なりますが、新しいアプリケーションの形として存在感を高めているのがWebAssemblyとeBPFです。
WebAssemblyは、ウェブブラウザ上で高速実行できるように設計されたバイナリフォーマットです。独自の仮想マシンの命令セットであり、一般のCPU上で直接実行することはできず、ウェブブラウザなどのランタイム上で解釈・実行される必要があります。最近Google Meetの背景ぼかし機能がこのWebAssembly上で動いていたり、ffmpegをWebAssemblyに移植したffmpeg.wasmを利用しウェブブラウザ上での動画編集を実現したりと、ウェブブラウザの可能性をさらに引き出す役を担っています。
その一方で、ウェブブラウザ以外におけるWebAssemblyの活用も進んでいます。ここで解説するよりもKernel/VM探検隊におけるnullpo_head氏の発表を見ていただくのがベストですが、WebAssemblyの性質によって様々なユースケースにおける組み込み拡張機能として利用されはじめています。
eBPFは、Linuxカーネルを拡張するための機構で、カーネル空間上でサンドボックスされたプログラムを様々なタイミングで呼び出すことができます。そのため、ネットワーク処理をNICドライバの近くでおこなうXDP(eXpress Data Path)や、カーネル内の関数のトレースなどを高速かつ安全に実装できます。たとえばCiliumはKubernetesのネットワーク制御をeBPFを用いて実装していますし、コンテナ環境向けのシステム可視化ツールSysdigでは、各コンテナの動作を取得するためにホスト側のeBPFモジュールを利用できます。
元はその名前(Berkley Packet Filter)のとおりBSD系OSでパケットフィルタのために考案された機構ですが、Linuxで大幅に拡張(extended)され様々な目的で利用されるようになりました。現在ではWindows上でもeBPFを利用できるようにするOSSプロジェクトが進められています。
Dockerの登場でアプリケーションのコンテナは世界統一されたかに見えましたが、この二つの新しいアプリケーションフォーマットは、ソフトウェアの可能性をさらに拡げています。Dockerの開発者が「2008年にWASM+WASIがあればDockerを作る必要が無かった」とツイートした件が記憶に残っている人も居ると思いますが、これからのソフトウェアの姿を予想するときにどちらも重要な立ち位置にあり続ける事でしょう。
Decentralizedな世界
仮想通貨あらため暗号資産と呼ばれるようになったBitcoinなどのデジタル通貨ですが、その根幹はブロックチェーン技術を用いることでDecentralized(分散型・脱中央集権型)に実現された台帳システムです。投資先としての通貨の側面ばかりが注目されがちですが、それらプラットフォームの上で様々な「Decentralized」を実現しようとしている試みがあります。
数多く存在するそれらの中でも、分散型アプリケーションを構築するためのプラットフォームであることを目指しているのがEthereum(イーサリアム)です。Ethereum Virtual Machine(EVM)と呼ばれる仮想マシンが規格化され、このVM上で動作する分散型アプリケーション(DApps、スマートコントラクト)はその結果をブロックチェーンに記録します。またアプリケーション自身もブロックチェーンに記録されます。アプリケーションの動作に伴うすべての処理には内部通貨ether(ETH)を支払う必要があり、これはGAS(ガス)と呼ばれます。
特定の誰かを中央集権的に依存することができない分散システムでは、合意形成をどうするかが問題になります。EthereumではこれまでBitcoinなどと同様にProof-of-Work(PoW)という手法を採用していました。PoWは「暗号資産の特徴」として広く知られているもので、マイニングと呼ばれる「重い計算処理」に依存しています。計算処理とはつまり消費電力量であり、ほとんどのアルゴリズムにおいてPoW自体が電力の浪費という性質があるため、電力の過剰消費を避けるためにマイニングの禁止などがされた地域もあります。このような状況を背景に、EthereumではPoWからProof-of-Stake(PoS)と呼ばれる手法への移行が進められています。PoSでは、あらかじめ「保証金」を預け入れたノードだけがValidatorとしてネットワークに参加でき、合意形成するノードはランダムで割り当てられるためマイニングのような計算競争が不要となります。PoSを前提とした「Ethereum 2.0」では、他にもシャーディングなどスケーラビリティ上の課題を解決しようとしています。
EVM上のDAppsとしてさまざまな利用方法が提唱されています。Ethereum上の技術的仕様は、Ethereum Request for Comment(ERC)と呼ばれるインターネットRFCのような枠組みでまとめられています。その中でも最も有名なものが、Ethereum上のスマートコントラクトとしてトークン(通貨)を実装するERC-20 Token Standardです。また最近話題のNFTもEthereum上で実現するための標準仕様があり、ERC-721 Non-Fungible Token Standard として定義されています。どちらもOSSとしてライブラリが提供されているため、自分で実装せずに発行することが可能です。
このように暗号資産という視点だけでなくコンピューティングプラットフォームという視点でDecentralizedな世界を見るとかなり面白いです。