「失敗を経験して改善することが大切」――3つのハードルを乗り越えたデンソーがクラウドネイティブに感じた「価値」「『予測できないものは受け入れられない』という企業文化はもったいない」

クラウドを活用した新しいサービスを外注ではなく内製で開発する――容易ではない組織風土の変革を実現してきたのがデンソーだ。アジャイルやクラウドネイティブ技術を活用するに当たって超えてきた失敗や、クラウドネイティブに感じる「価値」を同社クラウドサービス開発部SREチームの佐藤義永氏が語った。

» 2022年03月31日 05時00分 公開
[高橋睦美@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 自動車部品の製造を事業として展開するデンソー。自動車業界が「100年に一度」といわれる大変革期を迎える中、新たなチャレンジに取り組み始めた。より安全に車を利用できる社会を実現するため、クラウドサービスを活用して、自動車からデータを収集、分析する事業の他に、各地にある工場の稼働をより効率化する事業、そして意外なところでは自動車関連技術を使った新しい農業やその流通を支援する事業している。

 デンソーはクラウドを活用した新しいサービスを、外注ではなく内製で開発するに当たって、アジャイルやクラウドネイティブといった新たな開発スタイルを採用した。しかしその道のりでは、幾つかのハードルに直面したという。同社クラウドサービス開発部SREチームの佐藤義永氏は、アイティメディアが主催した「Cloud Native Week 2022春」の基調講演「デンソーにおけるクラウドネイティブの実践 〜クラウドネイティブ導入を阻む3つのハードルへの向き合い方〜」の中で、そのハードルをどのように乗り越えてきたかを紹介した。

クラウドサービスを使うだけでは「クラウドネイティブ」にならない

デンソー クラウドサービス開発部SREチーム 佐藤義永氏 デンソー クラウドサービス開発部SREチーム 佐藤義永氏

 佐藤氏はコンテナやKubernetesの活用に関する調査を紹介して「コンテナやKubernetesといったクラウドネイティブ活用の取り組みはIT業界や金融業界で始まったばかりだ。導入したり活用したりした事例は表に出づらいため、本当に導入の効果があるのか、社内で運用できるのかといったところが気に掛かり、一歩を踏み出しづらい実情もあるのではないか」と考察した。

 さらに、クラウドネイティブに関する情報に触れる機会も豊富とはいえないという。「勉強の時間も取れていない状態で、最新の情報に触れられていない。『クラウドネイティブ技術を使おう』という発想に至らないことも考えられます」(佐藤氏)

 デンソーもこうした状況と無縁ではなかったという。アジャイル開発に取り組み、クラウドネイティブを推進するに当たって「クラウドネイティブの目的や価値がよく分からない」「プロジェクトをどのように進めたらよいか分からない」といった問題や「Kubernetesやサービスメッシュといった新たな技術が登場する中、スキルを身に付けるのが大変だ」というハードルに直面し、失敗を乗り越えながら進んできた。

 佐藤氏は前提として「クラウドネイティブ」の定義について、書籍『Cloud Native Transformation』の「Cloud Native is not the cloud」にあった「単にAmazon Web Services(AWS)とかMicrosoft Azure、Google Cloud Platformといったクラウドサービスを使えばクラウドネイティブになるというわけではありません」を紹介した上で、クラウドネイティブを実践するためのポイントを3つに分けて整理した。

 1つ目は、クラウド環境に「最適化」して組み合わせることだ。「ただ単に使うだけではだめで、それぞれのサービスを組み合わせ、上手に使ってあげる必要があります」(佐藤氏)。

 2つ目は、クラウドネイティブとはアプリケーションを動かすサーバではなくサービスのことであり、サービス全体をどう稼働するかを定義する必要があることだ。

 3つ目は、クラウドに適したインフラやプロセスを取り入れ、実現したいサービスに適した技術選定ができる文化を作ること。つまり技術的な観点だけではなく、文化的な側面やプロセスも含めた改善が必要だ。

 これらを踏まえて佐藤氏は、クラウドネイティブを「技術」「プラクティス」「デンソーにもたらした価値」という3つの観点で、これまで手掛けてきたプロジェクトを振り返りつつ紹介した。

「コア技術を容易にクラウドに接続できる」 クラウドネイティブの価値

 デンソーでは、2017年に設置したデジタルイノベーション室を中心に、さまざまなサービスやビジネスを作り上げてきた。

 最初に手掛けたのは、実験車両などから収集するテストデータのシェアリングサービスだ。以前は各部署がばらばらにテスト走行を行ってデータや動画を収集していたが、データを横断的に共有して活用するため、AWSとコンテナを用いてインフラを構築。センサーの種類や走行時の天候、歩行者の有無といったメタ情報も含めて共有し、条件に合わせて検索できるサービスを開発した。

 その後も開発を続け、Kubernetesとサービスメッシュを使って構築したのがモビリティエッジ/クラウドサービスの「Misaki」だ。これは、複数のECU(Electronic Control Unit)を備えた車がエッジとなり、クラウドと連携して動作する世界を想定したサービスだ。Kubernetesを用いることで、負荷に応じて、アプリケーションが動作するコンテナの実行環境をクラウドと車載ECUとで振り分けることができる。仮にトンネルや山間部に入ってクラウドとの接続が切れたとしても、切断、再接続などの処理をサービスメッシュ層が担うことで、個別に複雑な実装をしなくても品質の高いアプリケーションを実現できることが利点だ。

 2つ目の例は、デンソーの工場にある製造設備の稼働状況をはじめ、さまざまなデータを集めたデータ活用基盤を構築し、分析を加えて故障予測や品質管理に役立てる「Factory-IoT」だ。管理工数を下げられるだけでなく、機械学習を活用する際の教師データとして活用すれば、より高い精度での学習も可能になる。またクラウドを活用したことで、工場や設備の増減に応じた容易なスケールアウト、スケールインを実現している。ベンダーロックインを避けるため、国に応じて異なるクラウドサービスを選択し、かつ容易に切り替えられるよう疎結合な設計にしているという。

 3つ目の例は、運転状況を分析し、安全運転の度合いを自動的にスコアリングしてくれるスマホアプリ「yuriCargo」だ。「なるべく導入ハードルが低く、常に携帯できるデバイスがいいと考え、スマートフォンに白羽の矢を立てました。楽しみながら安全運転してもらうため、ゲーミフィケーションの要素も取り入れています」(佐藤氏)。ユーザーのフィードバックを受けて容易に更新できることも、クラウドネイティブならではの利点だという。

 最後は、センサーから収集したデータを変換し、クラウドにアップロードする処理をAPIも含めてプラットフォーム化した「D-tote」だ。従来、プロジェクトごとに個別にプラットフォームを開発したり、社外の別のサービスを活用したりするために、センサー開発というゴールを目指すまでに多くの時間やコストがかかっていた。プラットフォームとして構築することで、数日から数カ月必要だったデータのアップロード処理の実装が、最短1日で実現できるようになったという。

D-toteの特徴(出典元:佐藤氏の講演資料より) D-toteの特徴(出典元:佐藤氏の講演資料より)

 用途、ターゲットも異なるこれらのサービスだが、幾つかの共通点がある。まずいずれも「車や車載機器とクラウドがつながったコネクテッドサービス」であること。そして既存の事業の置き換えではなく新規のITサービスであることだ。

 こうしたプロジェクトでクラウドネイティブ技術を採用した理由を、佐藤氏は「デンソーにとってコア技術になるモノをクラウドに接続することで、より強みを生かしたサービスにしたかったというのが非常に大きい」とした。加えて、ユーザーの反応を見ながら更新し、柔軟に拡張できる上、実装から運用監視まで含めて1つのチームで取り組むことができ、負荷を減らせるといった部分がクラウドネイティブの魅力的なポイントだとした。

 「自社のコア技術を容易にクラウドに接続できることが大きいです。素早く開発して柔軟に拡張し、ソフトウェアで実現して自動化し、結果として更新頻度を高めてサービスの価値を高水準に保てるところが、クラウドネイティブを選択する重要なポイントになるはずです」(佐藤氏)

失敗は回避するものでなく、直面し、プラクティスを学んで乗り越えるもの

 ただ、デンソーの取り組みも、決して順風満帆だったわけではない。

 「クラウドを利用すれば動くものが簡単に作れてしまうので、どうしても機能追加に重点が置かれ、品質がおろそかになるという失敗がありました。また、マウスでクリックするだけでインフラを構築、変更できるため、サービスが増えていく中、どこをどう変更したかという管理が追い付かなくなり、複数チームでの開発や他チームへの移管に苦労したこともあります。数カ月分の修正や変更をまとめてリリースしようとした際に、大量の機能変更の確認で苦労したケースもありました」(佐藤氏)

 こうした問題はどうすれば回避できるのだろうか。佐藤氏が出した答えは意外なものだった。「これらの失敗を回避するのではなく、失敗を経験し、乗り越えて、自分たちの腹落ちする形で改善することが最も大切なことに気が付きました。無理に失敗を防ぐことにこだわらなくてもいいと考えるようになりました」という。

 失敗を過剰に恐れ、避けようとすると、腰が重くなってなかなか作業に着手できなかったり、そもそも挑戦を諦めてしまったりしかねない。また、失敗を防ぐことにばかり時間をかけてしまい、「ユーザーにサービスを届ける」という本来の目的がおろそかになってしまう恐れもあるだろう。「『予測できないことは受け入れられない』という企業文化になってしまうと、非常にもったいない」(佐藤氏)

 逆に、失敗を経験することで、どのような技術やプラクティスを選ぶべきかを真剣に考える大きなチャンスが得られたという。品質の問題なら「継続的インテグレーション」(CI)や「自動テスト」を導入して品質を監視するようにしたり、不具合にすぐ気が付けられる監視体制づくりに注力した。インフラの変更管理を容易にするため、IaC(Infrastructure as Code)でインフラをコードとして監視できるインフラを整えた。複数チームでの開発を進めるために「コンウェイの法則」を学び、古いドキュメントが放置される問題を解決するために「継続的ドキュメンテーション」の取り組みを始めた。

 佐藤氏は「プロジェクトが失敗したりうまく進められなかったりするのは当然のこと。プラクティスを学ぶに従ってうまく進められるようになっていくと考えています」と述べ、失敗を通して、どのようなプラクティスを導入すべきかを積極的に考えていくことが、プロジェクトをうまく進められるようになるコツだとした。

基礎を踏まえてチームで互いに学びクラウドネイティブ技術の知見を蓄積

 「クラウドネイティブは自分で学習することが非常に大切です。きちんと学習し、コントロールできる領域にもっていくことが重要です」と佐藤氏は述べ、基礎学習が非常に重要だと強調した。

 ただ、クラウドネイティブに関する技術や概念は幅広く、学ぶべき量はあまりに多い。それを一人で学習していくのはしんどいのも事実だ。「クラウドネイティブを学ぶ時間がなかなか取れない」といった課題にはどう対処しているのか。

 佐藤氏は「みんなで情報を持ち合うのが大切だと考え、『DocBase』を使ってドキュメントを共有し、オープンなコミュニケーションをするように心掛けています」という。また、社内で技術討論イベントを定期的に開催し、互いの知見を学び合う場を設けたり、社内のSREチームや技術部門から支援を受けたりしてトレーニングを開催しているという。

 「最終的にプロジェクトを動かすのはチームです。チームで頑張るのも大切です。ペアプログラミングやモブプログラミングといった手段を活用して全員でクラウドネイティブを学習するスタイルが有効だと実感しています」とし、オンラインでもツールを活用してコミュニケーションを取り、情報を共有しているとした。

情報をオープンにして共有する取り組み(出典元:佐藤氏の講演資料より) 情報をオープンにして共有する取り組み(出典元:佐藤氏の講演資料より)

 最後に佐藤氏は「クラウドネイティブに取り組むに当たってハードルの高さと乗り越え方は組織それぞれ異なるが、最も大切なのは楽しむこと。デンソーではクラウドネイティブ技術をみんなで楽しみながら、よりよいサービスを作っていきたいと考えています」と述べてセッションを締めくくった。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。