Cloud Native会議のキーノート「老舗IoTクラウドサービス組織の変革 -クラウドネイティブをはじめよう-」では、2012年から稼働するパナソニックのIoTクラウドサービス「HEMS」の変革が紹介された。長年にわたり巨大なモノリスシステムとして運営されてきた同サービスは、いかにGit導入からKubernetes本番稼働、クラウドネイティブ文化の醸成へと進んだのか。さらに、eBPFと分散トレースを活用し、IoTデバイスからクラウドまでをEnd-to-Endで可視化する取り組みも語られた。
止められない老舗IoTサービスが抱えていた限界
冒頭に登壇したパナソニックエレクトリックワークスの丸岡正典氏は、同社が手がけるIoTサービス「HEMS」の概要を紹介した。HEMSは、太陽光発電や家庭内の家電をIoTでつなぎ、エネルギーを「つくる」「ためる」「コントロールする」ことを支えるサービスである。自社製品だけでなく、通信規格を通じて他社メーカーの機器とも接続し、デバイスとクラウドが一体となって価値を発揮する。
同サービスは、2012年の初代AiSEG発売以来、継続的に進化を続けてきた。現在では数十万台の機器がクラウドに接続されているという。つまり今回のCloud Native化は、新規サービスの立ち上げではなく、すでに多くの利用者が存在し、常に稼働しているサービスを止めずに変えていく取り組みだった。
「私たちのCloud Native化は、新規に立ち上げたシステムに対して取り組んできたものではありません。常に稼働しており、利用者が多くいるサービスを止めることなく変えていく必要があった点が、大きな特徴です」と丸岡氏は言った。
一方で、2019年頃にはシステムが限界に近づいていた。変更コストは増大し、開発体制は外注依存となり、改修費用も高騰していた。変更時の影響範囲を把握しにくく、品質問題も増加する。その結果、新規開発が停滞するという悪循環に陥っていたのである。
丸岡氏が強調したのは、これが単なる技術課題ではなかったという点である。デリバリー、開発体制、運用体制にまで影響が広がり、組織全体の問題として表面化していた。そこで同社はCloud Nativeを「魔法の技術」としてではなく、この悪循環を断ち切るための手段として位置づけた。
「Kubernetesでマイクロサービスだ」から始まった変革の軌跡
続いて登壇したパナソニックエレクトリックワークスの河野翔平氏は、2019年に立てた変革方針を紹介した。当時同社が掲げたのはKubernetesを導入し、巨大なモノリスシステムをマイクロサービス化するという方針である。狙いは、デリバリーの高速化、信頼性向上、コスト最適化、内製化にあった。
「Kubernetesでマイクロサービスだ、という形で方針を立てました。正直かなりの見切り発車で、この状況下では身の程知らずだったかもしれません」と河野氏は振り返った。計画では、2020年までに基盤を構築して部分導入を進め、2021年に本番稼働させることを目指した。柱に据えたのは、CI/CD、オブザーバビリティ、マイクロサービス化、そして技術力向上である。最終的な目標は、自分たちで自分たちのシステムに責任を持てる組織になることだった。
しかし、出発点は厳しかった。開発は外注依存が強く、Gitも導入されていなかった。初期検討メンバーは3名のみで、そのうち2名は入社1ヶ月目の中途採用者だった。河野氏自身もその1人であり、メンバーはKubernetesもコンテナも未経験だったという。
さらに技術的負債も山積していた。中心には巨大なモノリスアーキテクチャがあり、AWS環境には大規模なEC2インスタンスが並んでいた。オンプレミスのシステムをそのままクラウドリフトした経緯から、大量のネットワークルールも存在していた。さらに、設定値のハードコード、ローカルファイルやデータベースでの状態保持、ファイル出力のログなど、Twelve-Factor Appの原則から外れた構成も多かった。
こうした状況に対し、河野氏らは3段階の推進方針を立てた。第一にGitLab導入を含む開発・運用プロセスのアップデート。第二に既存環境を解体するのではなく、新しい環境を作って移行するインフラ基盤の手の内化。そして第三が、新しいアーキテクチャに沿ってコア機能から進めるアプリケーションのモダナイズである。
その際に重視した大原則が、10年後を見据えたアーキテクチャ設計と、動いている状態への敬意だった。HEMSのようなIoTサービスは長期間使われるため、将来の技術変更に耐えられる疎結合な設計が必要になる。一方で技術的負債を抱えていても、そのシステムが多くの利用者に価値を提供してきたことも事実である。河野氏は、過去の経緯を知らずに既存システムを軽々に否定しないことを重視した。
本番稼働の裏側にあった失敗と、組織文化の醸成
河野氏らは、設計レイヤーごとに技術選定を進めた。インフラ基盤にはAWSとEKSを採用し、サービス間通信にはgRPCとEnvoyを導入した。大量接続と高頻度のメッセージ交換が発生するIoTサービスでは、接続を使い回しやすく、ペイロードも小さくできるgRPCが適していたという。
ただし、すべてが順調に進んだわけではない。河野氏は、マイクロサービス化できなかったものもあったと明かした。数万行規模で読解が難しく、設定値も数百行に及び、あらゆる処理から依存されているプログラムについては、解体を断念せざるを得なかったという。
「結果として、巨大なコンテナが誕生しました。専用のノードグループを作り、PVを割り当てて何とか動かしましたが、巨大すぎてスケーリングできませんでした」と河野氏は語った。
このステートフルな巨大コンテナは、後のアップデートやデプロイにも大きな影を落とした。水平スケールが難しく、単一障害点にもなりやすく、Kubernetesの設計思想とも相性が悪かったのである。
それでも、2021年には予定通り本番稼働にこぎ着けた。河野氏は成功要因として、事前に最大トラフィックを予測できていたことや、社内メンバーから全面的な協力を得られたことを挙げた。一方で、稼働直後にはマイクロサービス数が100を超え、認知負荷が増えるという新たな課題も生まれた。
そこで同社は、技術だけでなく開発組織そのものを育てる取り組みにも力を入れた。若年層向けには、クラウドや開発の基礎を学ぶ「Dojo」を開催した。設計思想や判断の背景を共有するため、ホワイトボードを囲んで議論するチョークトークも実施した。さらに、読書会やTechTalk、社外カンファレンスへの参加を通じて、自学自習の文化を醸成していった。
その成果として、同社は責任感とスピード感のあるシステム運営が可能になったという。新規事業への着手も進み、複数のシステムを運用する能力も高まった。かつては一事業部の開発部門だった組織は、全社直轄の開発センターへと発展し、横断的にサービス開発をリードする役割を担うようになった。「責任感とスピード感のあるシステム運営ができるようになりました。自分たちの手で技術的な責任を取れるようになり、複数システムの運用能力も劇的に向上したと考えています」と河野氏は語った。
IoTデバイスからクラウドまでを可視化するEnd-to-Endオブザーバビリティ
続いて登壇したパナソニックの田代穂高氏は、クラウドからエッジデバイスまでを対象にしたEnd-to-Endの分散トレーシングについて紹介した。IoTサービスの障害調査では、デバイス、家庭内ネットワーク、共通基盤、複数のクラウドサービスをまたいで調査する必要があり、ログの突き合わせやタイムスタンプの不一致、再現性の低さが課題になる。
そこで、OpenTelemetryの考え方を組み込みデバイスにも拡張した。デバイスからのリクエストにトレースIDを付与し、クラウド側でスパンを受け付ける仕組みを実装したのである。ただし、組み込みデバイスにはCPUやメモリの制約があるため、SDKをそのまま使うのではなく、OpenTelemetryプロトコルでスパンを送信するライブラリを独自に実装した。
さらに、eBPFによるカーネルレベルのイベント可視化にも取り組んだ。アプリケーション処理の時間帯に発生したeBPFイベントを同一トレースIDにひも付け、クラウド側の処理とあわせて一つのトレース上で確認できるようにした。また、組み込みデバイスの時刻ずれに対しては、親スパンの時間範囲や送受信の順序関係を使って、スパンの時刻を補正した。
この取り組みにより、デバイス側のアプリケーション、システムイベント、クラウドサービスの処理の流れを一つのトレース上で確認できるようになった。再現性が低く、従来は現場ごとの調査に時間がかかっていた問題も、クラウドに集約して観測できるようになった点が大きい。
「再現性の低い問題をクラウドに集約して観測できることは、個人的にも目からうろこでした。クラウドシステムのObservabilityとは少し違った使い方ではありますが、同じ考え方や技術をIoTに適用することで、障害調査の効率化にもつながりました。Cloud Nativeの考え方や技術には、非常に可能性を感じる取り組みになったと思います」と田代氏は語った。
最後に丸岡氏は、Cloud Native推進の本質について、単にクラウドの利点を取り込むことではないと述べた。重要なのは、自ら考え、変化し、行動し続ける姿勢である。製造業におけるIoTサービスは、作って終わりではない。10年先を見据え、利用者の生活に寄り添いながら、価値を届け続ける責任がある。HEMSのCloud Native化は、Kubernetes導入やマイクロサービス化だけを目的にした取り組みではなく、技術と組織を同時に育て、Cloud Nativeの考え方を現場に根付かせる実践だったのである。
- この記事のキーワード
