コンテンツに移動
サーバーレス

Einride がサーバーレスでスケーリングし、貨物業界を再設計した方法

2022年9月28日
https://storage.googleapis.com/gweb-cloudblog-publish/images/EinRide.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2022 年 9 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。

ソフトウェアによって変貌を遂げる産業が次々と現れています。まず、音楽、映画、金融など、資産のデジタル化が容易な産業が変貌を遂げました。現在では、ヘルスケア、農業、貨物輸送など、より物理的なハードウェアが必要で、より人間との対話を必要とする産業での変換が進められています。これらの業界のデジタル化はより困難ですが、間違いなくより重要ですEinride は、まさにこうしたデジタル化を実践しています。

当社のミッションは、インテリジェントな移動を通じて地球をより良い場所にすることです。化石燃料への依存度をゼロにして、自律的かつ電気的な貨物ネットワークをグローバルに構築することを目標にしています。その大きな柱が、Google Cloud に構築したソフトウェア プラットフォームである Einride Saga です。しかし、貨物輸送業界の変換は、ソフトウェアをはるかに超えて難しい技術的課題です。とはいえ、他業界のソフトウェアの変換を観察することで、当社は力強い前進を遂げることができました。

では、先陣を切った業界を観察して、どのような教訓を得ることができたでしょうか?

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/1_Einride_Pod.gif
Einride が設計し、開発した自律走行型電気貨物車 Einride Pod です。ここでは、ケンタッキー州ルイビルの GEA Appliance Park で試験運用されている様子を紹介します。

ソフトウェア システムを再設計したことからの教訓

今日成功しているソフトウェア プラットフォームのほとんどは、併設されたデータセンターで始まり、最終的にパブリック クラウドに移行しました。これにより、エンジニアはプロダクトにより集中できるようになり、コンピューティング インフラストラクチャにあまり集中しなくなりました。クラウドへの移行は、データセンターのマシンとクラウドの VM を 1 対 1 で入れ替えるリフト&シフト方式で行われました。この方法は、システムを再構築する必要はありませんが、驚くほど非効率で無駄が多いのも事実です。専用 VM 上で動作するアプリケーションの利用率は、せいぜい 20% 程度です。残りの 80% はエネルギーや資源の無駄遣いです。このような中で、私たちはより良い方法があることを学びました。

コンテナの登場が、輸送貨物の簡素化と標準化によって地球全体の貿易を可能にしたように、コンテナは輸送ソフトウェアの簡素化と標準化を実現しました。コンテナを使えば、VM の管理は Kubernetes のようなコンテナ オーケストレーション システムに任せることができます。このシステムはコンテナ化されたあらゆるアプリケーションを管理できる非常に優れたツールです。しかし、そのパワーは複雑さを代償に、しばしばクラスタを管理し、デベロッパーの認識負荷を軽減するために専門のインフラストラクチャ チームを必要とします。それが、新しい産業で起業する技術系企業の参入障壁になっているため、サーバーレスが登場しました。Cloud Run のようなサーバーレス プロダクトは、クラスタ管理を抽象化し、スタートアップや既存のハイテク企業にとってスケーラブルなシステムを簡単に構築できるようにします。

もちろん、サーバーレスはすべてのアプリケーションに適合するわけではありません。ほぼすべてのアプリケーションはコンテナ化できますが、すべてのアプリケーションがサーバーレスを活用できるわけではありません。アーキテクチャのパラダイムとして、最初から考えておかなければなりません。VM に焦点を当てた考え方で設計されたアプリケーションは、完全なステートレスにはならない可能性があります。そのためサーバーレス プラットフォーム上でうまく動作させることができません。既存のシステムにサーバーレス パラダイムを採用することは困難であり、多くの場合、設計のやり直しが必要になります。

それでも、早くからデジタル化を進めてきた産業界からは、リソース管理を抽象化することで、より高い稼働率や効率的なシステムを実現できるなど、多くの教訓を得ることができました。リソース管理が一元化されていれば、ビンパッキングなどのアルゴリズムを適用し、作業負荷を効率的に割り当て、動的に再割り当てすることで、システムの最適な稼働を確保できます。一元管理には複雑さがつきものですが、サーバレス パラダイムは、デベロッパーだけでなく、企業全体から複雑さを取り除くことを可能にします。

貨物輸送システムの再構築の機会

Einride では、ソフトウェア アーキテクチャから得た教訓を、貨物システムの設計に応用しています。たとえば、電気トラックの導入では、今ではおなじみの「リフト&シフト」方式が業界で頻繁に採用されていますが、ディーゼル トラックを 1 対 1 で置き換えると、未稼働が多くなります。

当社のソフトウェア プラットフォームである、Einride Saga では、貨物輸送にサーバーレス パターンを適用しています。そのため、エンドユーザーが抱く複雑さを抽象化し、アルゴリズムを使用して、リソースを集中管理することで稼働不足を解消できます。このアプローチにより、当社が管理する電気トラック、充電器、トレーラーのほぼ最適な利用率を達成することができました。

しかし、これらのメリットを得るためには、交通網を再設計する必要があります。ネットワーク内のフローは、電気ハードウェアとよりダイナミックなプランニングをサポートするために再設計する必要があります。そのため、荷送人は需要や制約を特定することに集中し、各貨物を自分で計画することは少なくなります。

また、貨物輸送業界には、当社のソフトウェアのビルドの方法に影響を与えるパターンがあることもわかっています。電気トラックを管理する中で、当社は世界においてクリーン エネルギーの利用可能性に差があることに気づかされました。Einride Saga は、電気自動車と同じように、クリーン エネルギーに依存して持続可能な方法で運用されています。Google Cloud を使えば、世界中の再生可能エネルギーでプラットフォームを稼働できます。

サーバーレス アーキテクチャの核となる概念である抽象度の向上とリソース管理の一元化は、貨物輸送業界に革命を起こす可能性を秘めています。Einride は、アイデアを実現し、それをすばやく市場に投入する能力によって成功できました。スピードがすべてです。Google Cloud においてレガシーなしで作られた Saga プラットフォームは、ゼロから設計し、サーバーレスの利点を活用することを可能にしました。

サーバーレス アーキテクチャの利点

Einride のアーキテクチャは、デジタル、電気、自律といった複数の画期的な技術を組み合わせて、革新的なエンドツーエンドの貨物輸送サービスを提供する会社を支援しています。企業文化は透明性と包括性に基づいており、デジタル コミュニケーションとコラボレーションは Google Workspace スイートによって実現されています。この技術文化は、戦略的に選ばれたいくつかの技術を共有することを促進します、そのため、デベロッパーは自律走行車からクラウド プラットフォームまで、技術スタックをシームレスに上下に移動できます。

最新の自律走行車が車輪のついたデータセンターであるとすれば、GogRPC は当社の車両サービスとクラウド サービスを動かすための燃料となります。当社は当初、GKE でクラウドサービスの構築を始めました。しかし、Google Cloud が Cloud Run の gRPC サポートを発表(2019 年 9 月)した際に、すぐにデプロイの設定を簡素化し、クラスタ管理にかける時間を減らし、サービスのスケーラビリティを高めることができる可能性に気づきました。当時はまだスタートアップの段階でしたので、Cloud Run の運用コストの低さは歓迎すべきことでした。GKE から Cloud Run に移行して Kubernetes クラスタを停止した際に、再販業者から電話がかかってきて、総費用が劇的に減少したことに気づいたということがあったほどです。そのとき、当社は「これは画期的な技術だ」と確信しました。
https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Einride_serverless_architecture.max-1900x1900.jpg
Cloud Run と Google Cloud サーバーレス プロダクト グループに構築された gRPC ベースのマイクロサービス プラットフォームを示す、Einride サーバーレス アーキテクチャ

Identity Platform では、当社の顧客 ID とアクセス管理システムに必要な構成要素を発見しました。Cloud EndpointsESPv2 とのシームレスな統合により、エンドユーザー認証を行い、HTTP から gRPC へのコード変換を提供するサーバーレス API ゲートウェイをデプロイできました。これにより、バックエンドで gRPC を使用することによるパフォーマンスとセキュリティの利点を得ながら、フロントエンドでは標準的な HTTP スタックで物事をシンプルに保つことができるようになりました。

CI / CD には、Cloud Build を採用し、自社でビルドサーバーを維持することなく、すべてのデベロッパーが優れたビルド インフラストラクチャを利用できるようにしました。バックエンド サービスの言語として Go を使用しているため、サービスをコンテナにパッケージングするための選択肢として、ko は当然のことでした。これは、高いセキュリティとパフォーマンスを両立させるための優れたツールであり、デフォルトで生成される SBOM を持つ distroless のコンテナの高速ビルドを提供するものであることがわかっています。

これまでの当社の課題のひとつは、SRE にシームレスで完全に統合されたオペレーション ツールを提供することでした。Einride では、サービスを開発するエンジニアが運用も行う SRE-without-SRE というアプローチをとっています。夜中に起きてアラートに対応する場合、問題を診断するための最適なツールが必要です。そこで、SRE がロギングやモニタリング、トレース、アプリケーションのプロファイリングまで利用できるように、Cloud Operations のフルスイートを活用することにしました。これを一貫した方法で各バックエンド サービスに組み込むことが課題です。そのために Go 向けに Cloud Runner SDK を開発しました。このライブラリは、インテグレーションを自動的に構成し、デフォルトの Cloud Run モニタリングのギャップを埋めます。これにより、4 つのゴールデン シグナルが gRPC サービスで利用可能であることが保証されます。

ストレージについては、Cloud Spanner を中心とした Go ライブラリのエコシステムが、優れたエンドツーエンド開発体験を提供してくれることがわかりました。Spanner を選んだ理由は、使いやすさと管理オーバーヘッドの少なさです。管理バックアップも、Cloud Scheduler を使って比較的簡単に自動化できます。Spanner の上にアプリケーションを構築することで、アプリケーションの高可用性と、顧客や投資家への高い信頼性を実現できました。

プロトコル バッファを使用してデータのスキーマを作成することで、元データが厳格に型指定されているため、BigQuery にデータレイクを構築することが可能になりました。さらに、BigQuery でのプロトコル バッファの保存と読み込みを簡素化するためのオープンソース ライブラリも開発しました。また、データレイクを構築するために、当社はアプリケーションやトラックから Pub/Sub でデータをストリームしています。多くの場合、Cloud Run のステートレス イベント ハンドラでデータをロードすることで、ELT パイプラインをシンプルに保つことができました。

Einride で活用したサーバーレス技術は多数あります。それらの技術を把握することは、特に、当社がすでに評価した技術の歴史的背景を知らない、チームに加わった新しい開発者にとっては、大変なことです。当社はバックエンド サービスをどのように開発しているかをキュレーションし、文書化するために、技術レーダーを開発しました。このツールを利用すると、定期的にレビューして、新しい技術や更新された機能を常に把握できます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Einrides_backend_tech_radar.max-1400x1400.jpg

Einride のバックエンドの技術レーダーは、Einride がサーバーレス技術スタックをキュレーションし、文書化するために使用しているツールです。

しかし、道のりはこれからも続きます。当社は常に技術スタックを進化させ、技術レーダーで新しい技術を実験しています。今後の目標は、ソフトウェアのサプライ チェーンの安全性を高め、完全なサーバーレス データメッシュを構築することです。現在、ビルド パイプラインでSLSA レベル 2 の保証を実現するために ko と Cloud Build を活用する方法と、サーバーレス データメッシュで Dataplex を取り入れる方法を検討しています。

サーバーレスで再構築される貨物産業

Einride にとって、新しいサーバーレス技術の採用で最先端を走ってきたことが功を奏しました。結果として、自社でインフラストラクチャ チームを構築するための投資をすることなく、スタートアップからグローバルにスケールする企業へと成長できました。

物理的なハードウェアが多く、人とのやりとりが必要な複雑な産業も含め、次々と産業がソフトウェアによって変貌しています。成功をおさめるためには、先行する産業から学び、パターンを認識し、最も成功したソリューションを適用する必要があります。

当社の場合は、サーバーレス アーキテクチャで独自のプラットフォームを構築しただけでなく、サーバーレスの中核となる考え方を貨物輸送業界全体に適用することで実現しました。


- Einride チーフ ソフトウェア アーキテクト Oscar Söderlun 氏
プリンシパル エンジニア Kelsey Hightower
投稿先