株式会社NTTドコモ:GCP で IT 基盤を一新。1 億件/日のデータ更新が必要となる『パーソナルデータダッシュボード』の開発に成功
Google Cloud Japan Team
インターネットが社会的インフラとして欠かせないものになり、その中でパーソナルデータの活用が進んでいく中、世界的に個人のプライバシーをどのように守っていくかに注目が集まっています。そんな中、NTTドコモが 2019 年 12 月に提供開始した新機能が『パーソナルデータダッシュボード』です。このプロダクトを GCP 上に構築した理由、それに伴う開発体制・文化の改革、そして、開発を支える Google Cloud のコンサルティングについて、NTTドコモ情報システム部 IT基盤戦略担当の皆さんに聞いてきました。
利用している Google Cloud Platform サービス:Google Kubernetes Engine、Cloud Firestore、Cloud Dataflow など
新たな時代に向けた新たな開発体制のために GCP の導入を決意
NTTドコモが 2019 年 12 月に提供開始した、新機能『パーソナルデータダッシュボード』は、NTTドコモユーザーが、自身のパーソナルデータであるユーザー情報の取扱いについて同意した内容を確認したり、ドコモ内でのデータ利用目的、ドコモ以外のパートナー企業などへの第三者提供を一定の範囲でユーザー自ら設定・変更できるというプロダクト。NTTドコモが推奨する設定を「バリュー」「スタンダード」「ライト」の 3 種類から選んで、手軽に適用できる「かんたんおすすめ設定」のような機能も用意されています。こうした機能が必要になった背景について、NTTドコモ情報システム部 IT基盤戦略担当の岸さんは次のように語ります。
「NTTドコモは将来を見据え、パートナー企業の皆さまとともに、お客さまにこれまで以上の驚きと感動を提供し、新しい価値を生み出すことを目指しています。お客さま一人ひとりにあったものを提供するにはパーソナルデータの活用が不可欠です。そこで、我々はお客さまに安心して NTTドコモのサービスをご利用いただくため、2019 年 8 月にパーソナルデータの活用において大切にする理念を明確化し、行動原則として自らを規律した『NTTドコモパーソナルデータ憲章』を公表。加えて事業分野ごとに分かれていたプライバシー ポリシーを分かりやすく一本化し 2019 年 12 月より適用を開始しました。『パーソナルデータダッシュボード』は、そうした我々の意志を体現するプロダクトの 1 つとなります。」(岸さん)この『パーソナルデータダッシュボード』は GCP 上で提供。Web アプリのデプロイ環境としてGoogle Kubernetes Engine(GKE)を、ユーザー情報を管理するデータベースとして Cloud Firestore を活用しています。その導入背景について、ビジネスパートナー社員の北村さんと大田さんは、以下のように当時をふり返ります。
「NTTドコモでは、開発の迅速化を目的に 2018 年頃から Kubernetes ベースの PaaS を導入して IT 基盤を構築していたのですが、これを運用していく中でいくつかの課題が浮き彫りになってきました。具体的には、ライセンス型の課金モデルを利用していたため node のオートスケールに柔軟に対応できないこと、PaaS と IaaS のレイヤーが分離しているため、基盤のアップグレードの手順が面倒になること、そしてロギング、モニタリングなどに利用している OSS 製品の管理が煩雑になること。また、一貫性のある全体設計をせず必要に応じて走りながら環境構築をしていたため、開発案件や人数が増加するにつれてインフラ環境の設定変更が煩雑になり、それに対する作業時間も日に日に増加していました。」(北村さん)
そこで 2019 年 3 月、NTTドコモ情報システム部 IT基盤戦略担当チームは、一度足を止めて基盤の構成から見直し、こうした課題を一挙に解決できるマネージド サービスへの移行を決意します。
「当時、多くのマネージドな Kubernetes 環境を検討しましたが、GCP を検討するきっかけとなったのが、当時社内で開催された勉強会。Google Cloud のスタッフが、直接使い方を教えてくれるということで SRE チーム全員で参加したのですが、 GUI が洗練されており、ドキュメントが充実しているなど、とても使いやすいと感心しました。また勉強会後、GCP のオンライン学習プラットフォーム Qwiklabs を 1 か月無料で使わせていただけることになったのですが、それで我々が抱えている課題のほとんどが解決できることも分かりました。後でお話しする Google Professional Services Organization(PSO)チームがテクニカルな質問にスピーディーに返答してくださったことも好印象でしたね。それで本格的に GCP に舵を切ることになりました。」(大田さん)
「それらに加え、コストが圧倒的に安くなりそうだったことも GCP 移行を後押ししました。」(北村さん)
アジャイル開発の導入でタイムリーな機能向上を可能に
NTTドコモでは今回の『パーソナルデータダッシュボード』に向けて、これまで一般的だったウォーターフォール開発から、短期開発を実現するアジャイル開発へとシフト。開発パートナーとの協力体制(準委任契約)のもと、スクラムチームを編成しています。さらに、クラウドの積極活用(= GCP 採用)や、コンテナ基盤導入(= GKE 活用)、自動化の促進などによって、市場の変化に柔軟に対応し、タイムリーに機能を提供できる体制へと生まれ変わりました。
「SoE(System of Engagement)領域で競争力をもったプロダクトを開発するためにはアジャイル開発の導入は必須です。しかし当時の我々にはそうしたノウハウがほとんどありませんでした。そこでまずはとにかく『アジャイル』をしてみようというところから始め、次に社内向け Web アプリケーションを、続いてコンシューマー向けの小規模な Web アプリケーションを……というかたちでレベルアップを図り、必要なスキルを身につけてから『パーソナルデータダッシュボード』の開発に着手しています。実はここまで来るには約 2 年ほどかかっているんですよ。」(岸さん)
なお、NTTドコモのように準委任契約でアジャイル開発を行う場合、委託先が成果物に一定以上の責任を負うウォーターフォール開発と異なり、NTTドコモの社員がプロダクトで提供する価値、機能に責任を持ち、開発をリードしていくことが重要だと言います。
「もちろん開発パートナー側も、依頼されていることをやればいいという意識ではチームが破綻してしまいます。むしろ、開発パートナー側からプロダクトや組織全体を良くするための提案をするくらいの関係性を持てると理想的ですよね。そして、我々は開発パートナーにそういったモチベーションを持っていただくための環境作りを行うことが大切なのだと考えています。」(北村さん)「そうした環境作りにおいて、物理的に近い、会話量が多いというのはとても大事ですね。実際、我々のチームは同じフロアで、席を並べて作業をしています。」(岸さん)
SRE にキャッチアップすることでより開発効率を一層向上
開発手法の変更に加え、プラットフォーム開発チームを、2019 年に SRE チームに改称したことも特筆すべき改革の 1 つです。SRE の手法を積極的に採り入れることで管理・運用面の効率化も追求しました。
「元々、情報システム部が基幹システムを開発・運用してきたこともあり、お客さまに安定的にサービスを提供するということ、すなわち信頼性の担保についてはシビアに行ってきています。 そうした信頼性の担保を IT 基盤の開発に持ち込み、アプリケーション開発と両立させていこうと考えたとき、SRE 的な考えは必然でした。そこで、チーム全体で SRE についての認識を揃えるための勉強を開始。プラットフォーム開発チームがその活動範囲を拡大していくことを受けて、チーム名を SRE チームに改称しました。」(岸さん)
「また、開発規模が大きくなっていくと、従来の枠組みでは開発チームと運用チームが完全に分断されてしまい、効率的な開発が難しくなってしまうという問題があります。そのような状況下では、SRE 的な考えを導入し、開発チームも運用に回るという形にした方が上手くいくのではないでしょうか。もちろん開発チームのエンジニアは、GKE などのマネージド サービスを使うのは初めてということが多いので、運用チームからのスキル トランスファーには時間をかけました。具体的には GCP、GKE を使ったアプリ開発の基礎を一通り学べるようなドキュメントを作り、実際に開発を始める前にやってもらうようにしています。だいたい 1 か月もすると自分たちで解決できるようになっていますね。」(大田さん)
その上で、NTTドコモの開発体制ではスクラムチームに SRE メンバーを 1 人配置。早い段階から運用フェーズを意識できるようにすることで、開発効率をより一層高めるようにしています。
「ただし、このやり方は SRE メンバーが少ない現状、多くの案件が同時並行で走る時期は負担が大きくなるという課題もあります。SRE メンバーは稼働中のアプリの運用保守もしなければならないのでなおさらです。現在は、より適切な形を求めて模索中という段階ですね。」(岸さん)
PSO による適切なコンサルティングで開発を高度化・効率化
こうした新しい体制で、『パーソナルデータダッシュボード』の開発がスタート。GKE での環境構築においては、過去の教訓から、運用フェーズも意識した、一貫性のある設計を意識したそうです。
「GKE 全体の構成から、アクセス権、ネットワーク、CI/CD、インフラ構成のコード化など、全てをゼロから再設計しつつ進めています。この際、Google Cloud の有償コンサルティング サービスである PSO を通じて、設計フェーズから Google Cloud のエキスパートの全体設計の支援・助言を受けることができ、今後、開発するプロダクトが増えてもスピーディーに対応できる IT 基盤を構築することができました。」(大田さん)
GKE の導入によって、冒頭で北村さんが課題として挙げていた従来環境で顕在化していた課題はおおむね解消。機能面、運用面、コスト面で大きな成果をあげることができました。
「そして何より、皆のモチベーションが上がりましたね。最先端の、汎用性の高い技術を学ぶことができ、大きなキャリアアップに繋がったという実感があったようです。」(北村さん)
さらに『パーソナルデータダッシュボード』では、クラウド ネイティブな NoSQL ドキュメント データベース Cloud Firestore を活用。1 億近くものアカウント情報を管理すること、別のデータ分析基盤で管理されている原本データから日次でアカウント情報を取得して全件更新すること、その更新作業中でもレスポンス遅延が発生しないようにすることが求められ、そうした用途に最適なプロダクトとして、PSO から Cloud Firestore の導入を勧められました。
「とは言えやはり 1 億件のデータを日次で全件更新するというのは大変でした。しかも、『パーソナルデータダッシュボード』の特性や運用体制を考慮すると、処理時間を何とか 4 時間以内に収めたい。この実現に向けては、PSO とエラー内容を共有し、モニタリングを共同で実施してチューニングを進めました。具体的にはCloud Dataflow を使った並列処理で実現しているのですが、当初は 1 億件の更新処理が Google Cloud 側から急激なトラフィック増加と判断され、我々のリクエストが一時的にブロックされてしまうということがありました。これについては、ホットスポットの発生を避ける工夫や Index の無効化、リクエストレートの調整など、細かな回避策を積み上げて何とか目標時間内での処理を達成しています。なお、今回行った工夫については『Cloud Firestore のベスト プラクティス』というページに記述がありますので、Cloud Firestore を効率的に運用したい方はごらんになってみてください。」(北村さん)
引き続き GCP を活用し、ビジネスニーズを迅速に実現していきたい
「『パーソナルデータダッシュボード』は既に提供開始されていますが、今のところ大きなトラブルは発生していません。そういった意味では GCP への移行は大成功だったと思っています。我々のチームでは今後、ビジネス環境の変化やNTTドコモの新たなビジネスニーズの実現に向けて様々なプロダクトをスピーディーに作っていくことになりますが、引き続き GCP を活用していく予定です。今回は GKE と Cloud Firestore を中心に利用しましたが、方向性や用途によってはそれ以外のプロダクトも使うことになるでしょう。ライトに App Engine や Cloud Run なども利用したいと思っておりますし、自動化や効率化を促進できるものに特に興味があります。より価値のある仕事に割く時間を多くしていきたいと思っています。今、最も注目しているのが Anthos です。我々が持つプライベート クラウドも含め、あらゆるクラウド プラットフォームを統合管理できるようになると嬉しいです。」(土井さん)
(写真左から)
NTTドコモ 情報システム部 IT基盤戦略担当 ビジネスパートナー 北村 慎太郎氏
NTTドコモ 情報システム部 IT基盤戦略担当 岸 祐太 氏
NTTドコモ 情報システム部 IT基盤戦略担当 担当課長 土井 隆史 氏
NTTドコモ 情報システム部 IT基盤戦略担当 ビジネスパートナー 大田 悠祐 氏
国内 7,600 万ユーザーを擁する日本最大の携帯電話事業者。携帯電話サービス、光通信サービスなどからなる通信事業を主軸に、近年は動画配信などのコンテンツ・ライフスタイル サービス、金融・決済サービスなどスマートライフ領域事業も強力に推進している。現在は中期戦略 2020「beyond宣言」のもと、事業構造を革新中だ。従業員数は 2019 年 3 月 31 日現在、7,884 名(グループ全体では 2 万 6,564 名)。
その他の導入事例はこちらをご覧ください。