ドコモのパブリッククラウド活用と CCoEの果たす役割

# この記事について
NTTドコモテクニカルジャーナルVol.29No.1["ドコモのパブリッククラウド活用とCCoEの果たす役割"](https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol29_1/003.html) の筆者による解説記事です。

# 概要
ドコモでは、10年以上前からパブリッククラウドを用いた数多くのサービスを提供してます。パブリッククラウドの活用においては、CCoEが中心となってより効率的かつ適切に行われるように活動を続けてきています。今回は、それらの活動やドコモにおけるパブリッククラウド利用体制を昨今のクラウドにおける開発トレンドと合わせて解説します。

# ドコモにおけるパブリッククラウド利用
### パブリッククラウドの利用規模
ドコモでは、2009年ごろに研究開発・検証目的で パブリッククラウドの利用を開始しました。その後、利用範囲を拡大し、2012年から大規模商用サービスで、パブリッククラウドを採用しています。
利用開始時から毎 年利用量は増加しており、現時点では、900以上のAWS(Amazon Web Services)のアカウント、400以上のGCP(Google Cloud Platform)のプロジェクト、50以上のMicrosoft Azure(以下、Azure)のサブスクリプションをそれぞれ運用しています。

### パブリッククラウドの活用範囲
ドコモにおけるパブリッククラウドの活用範囲は、多岐にわたっています。例えば、Webサービス、モバイルアプリケーションのバックエンドシステム、データ分析基盤、機械学習、社内向けシステムなどの多くの分野でパブリッククラウドを活用しています。

### パブリッククラウドの利用体制
ドコモではパブリッククラウドを効率的に活用できるように考慮した利用体制を整えています。ドコモにおけるパブリッククラウド利用で最も特徴的な点は、明確なCCoE(Cloud Center of Excel- lence)が存在することです。CCoEとは、パブリッククラウドに関する多用な専門知識をもったチームであり、ドコモではこのCCoEを中心にパブリッククラウドの活用を進めてきています。
![CCoE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1838810/2af9b21f-0a56-c7a1-a42f-f2ed16de70c8.png)
　　　　　　　　　　　　　　 ドコモのパブリッククラウド利用体制

# ドコモCCoEの活動
### コンサルティングの提供
パブリッククラウド利用時の支援はCCoEの重要な役割です。社内のプロジェクトにおいて、CCoE はパブリッククラウド上でシステムを構築する際のシステム設計支援やレビュー、セキュリティ要件を満たすための効率的な対策方法の提示などを行います。特にパブリッククラウドにおいては、最初の設計が重要で、後のコストやシステム運用業務に大きな影響を与えるため、システム設計時に支援を行うことが多いです。
また、システムの運用を開始して、システムの利用者が増えてくると必然的にコストも増大していきます。その際にコスト最適化を行うために、コスト要因の把握や設計見直しなどの支援も実施しています。

### クラウドコストの取りまとめと最適化
一般的に、パブリッククラウドは柔軟な利用ができる一方で、サービス数や購入オプションの拡大に伴い、費用支払いや会計処理などが煩雑になりやすく、プロジェクトが増えた際に、稼働が増大してしまう場合があります。そこでドコモでは、CCoEが一元的にクラウド事業者との契約を行い、一括で各プロジェクトの支払いを取りまとめて処理をすることで、各プロジェクトの負担を軽減させています。
また、一括支払いには、事務処理負担の軽減のほかにもメリットがあります。パブリッククラウド事業者によっては、利用量が多くなるほど、価格が安くなるボリュームディスカウントオプションがあり、支払いをまとめることで、ボリュームが確保され、社内全体で利用料を抑えることが可能になります。

### 最新情報の収集と展開
パブリッククラウドの進化は早く、最新の情報を常に追いかける活動は、プロジェクト業務を抱える各プロジェクトのメンバでは難しい場合があります。そこで、最新情報の取得もCCoEにて率先して実施しています。例えば、パブリッククラウドに関する技術的なイベントには積極的に参加して、情報収集や発表を行っています。また取得した情報は、ノウハウと してガイドラインへ反映したり、自ら検証を行い、社内プロジェクトメンバへ展開したりするようにしています。

### クラウド業務支援ツールの作成と展開
各プロジェクトがパブリッククラウドを効率的に活用できるように、さまざまな支援ツールを作成して、社内に展開しています。
クラウドでは事業展開の速度を向上させる多様な機能が提供されていますが、一方で使い方を誤るとクラウドの障害に伴うサービス停止や、設定誤りによるセキュリティ事故を引き起こす可能性があります。そのため、利用者には正しくクラウドを利用するための技術知識が必要となりますが、利用者の知識レベルはまちまちであり、会社としては、社員全体の技術知識の底上げが課題となります。
このためCCoEは、ドコモ視点でのクラウド利用方法の記載を特徴とするガイドラインを作成しています。本ガイドラインにより、仮に知識の乏しい利用者であっても、押さえておくべき最低限の知識が短時間で習得可能となります。ガイドラインはAWS、GCP、Azureに対応しています。ここではAWSを対象として作成したガイドライン一覧を表に示します。

| No | 種類 | 内容 |
|:-----------|------------:|:------------:|
| 1 | クラウド開発ガイドライン | クラウドを使う場合の考え方や作法、開発フローにおける各フェーズで考慮・実施すべき指針を記載、特に設計・セキュリティなどは重点的に網羅し、間違った使い方を抑止 |
| 2 | セキュリティデザインパターン| クラウドを利用したシステムを構築するにあたり、セキュリティの考慮漏れを抑制、ISO/IEC27017に沿った要件をあらかじめ用意することで、ISO管理策に対する準拠性を高めている。AWSを利用したシステムを構築するにあたり、必要となるセキュリティ要件を列記|
| 3 | セキュリティテンプレート| セキュリティデザインパターンを考慮したネットワーク構成やネットワークフィルタリング機能、基本機能を提供するインスタンス群などを生成するAWS CloudFormationテンプレートを記載、セキュリティ対策を容易に実施|
| 4 | IAMデザインパターン | AWSアカウント利用パターンに合わせて、ドコモ社内のIAMポリシー設計のベストプラクティスを記載|
| 5 | インシデント対応ガイドライン | AWSを利用する、インターネットに公開されているサービス提供システムや、社内システムなどでサイバー攻撃などのインシデントが発生した場合の対応について、実際に発生した事例を含めて記載 |
| 6 | コスト最適化ガイドライン| AWSコストを管理する者向けに、コストの把握・分析方法、コスト削減・最適化の手法を記載 |
| 7 | システム移行ガイドライン| オンプレミスからAWSへの移行案件をスムーズに行うために、これまでの移行事例で得た知見などを基に移行時にポイントとなる点や注意すべき点を記載 |
| 8 | 共通基盤化ガイドライン     | 複数アカウント/複数システムを運用し始めると、運用を統一化したり、運用システムを共通化することで効率化を図ると有効な場合があり、クラウドの特性を利用することで、運用の効率化をスムーズに進める方法を記載 |
| 9 | コンテナガイドライン | コンテナをサービス開発/運用に取り入れようとしている人向けに、各プロジェクトで効果的、安全にコンテナ活用を実践してもらうことを目的に、どういったツールをどのように利用するのがよいか記載 |
| 10 | サーバレスガイドライン | AWS上でサーバレスなシステムを開発・運用する際に、どのように導入を進めていけばよいのか、どういったサービスをどのように利用するのがよいのか、各プロジェクトで効率的かつ効果的にサーバレスを活用する方法を記載 |
| 11 | DevOpsガイドライン| DevOpsの考え方をサービス開発/運用に取り入れようとしている者向けに、どういったツールをどのように利用するのがよいのか、各プロジェクトで効率的かつ効果的にDevOpsを実践してもらうことを目的としたガイドライン|

また、ガイドラインの1つであるセキュリティデザインパターンでは、クラウドを利用してシステム構築する際のセキュリティ考慮漏れを抑制できるよう、情報セキュリティ部のセキュリティチェック項目に沿った要件(ISO/IEC27017やJISQ27002など)と、クラウド環境における要件、AWSを用いてシステム構築を行う場合の要求仕様とAWSの提供機能・サービスを並記することで、セキュリティチェック項目への準拠性を高めています。システム構築担当者はセキュリティチェック項目を満たすために一点ずつ検証を行う必要はなくなり、利用に応じてセキュリティデザインパターンを参照しながらシステム構築を実施すれば、おのずとセキュリティチェック項目を満たせるようになります。
パブリッククラウドの機能追加やアップデートのスピードは早いため、これらの支援ツールも頻繁にアップデートをする必要があります。そのため、CCoE では、これらのツール開発においてもアジャイル開発を取り入れ、頻繁な機能追加やアップデートに追従していく活動も行っています。

# ドコモにおける最新の開発トレンド
### サーバレス技術の登場
クラウドの世界ではこれまで別々だった開発とオペレーションを分離せず、それらを統合して生産性を高めるいわゆるDevOpsの流れとともに、従来の仮想マシンからコンテナの利用を前提とした方式設計が普及しています。コンテナ化においては開発やリリースサイクルを加速させることに成功したものの、依然として従来の仮想マシンと同様に運用監視やセキュリティのための保守運用が必要です。コンテナ化の流れの一方で、AWSをはじめとしたパブリッククラウド事業者は、ミドルウェアからサーバの運用管理までを含む一連のマネージドサービスを「サーバレス」技術としてすでに提供し始めています。これはコンテナ化とは別の軸で発展し ているクラウドインフラ利用技術であり、開発者や運用管理者はサーバの存在を意識することなくインフラの運用管理をすべてクラウド事業者に任せ、より多くのリソースをそのビジネスロジックの開発に集中することが可能です。

### ドコモでのサーバレス適用開発事例
ドコモが2020年6月にリリースしたドコモオープンイノベーションクラウドのポータルサイトは、Reactベースの一般的なウェブアプリケーションシステムです。ドコモオープンイノベーションクラウドの開発にあたって最初のリリースまでの期間は4カ月、そして運用・保守要員は最小限に抑えるという制約がありました。そこで可能な限りサーバ管理をAWSにオフロードするため、AWS Lambdaなどを利用したサーバレスアーキテクチャを全面的に採用して 開発を行いました。その結果、開発期間を大幅に短縮し、短期間でのリリースに成功しました。
運用開始から2年間、ネットワークやサーバなどインフラを起因とした障害はゼロです。可用性においてサーバレスでは、冗長性やフォールトトレランスがあらかじめビルトインされている恩恵を受けています。運用・保守要員は2~ 3名と当初の目標を達成しています。今後、ユーザアクセス増加によるスケーラビリティの確保が必要な局面でもサーバレスであれば自動で対応可能です。料金も使用した分だけ支払う従量課金であるため、本プロジェクトでは大幅なコスト削減を実現しています。
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1838810/c423c0c0-6d1a-2c44-a463-a0b6427cfc8f.png)
# 最後に
今回は、ドコモにおけるパブリッククラウドの活用とCCoEの果たす役割について解説しました。パブリッククラウドの利用は今後も増えることが予想される中で、それらをうまく利用し、ビジネスを成功に導くことが重要です。そのためにCCoEは今後もそれぞれのプロジェクトがパブリッククラウドを最大限に活用できるように支援の範囲を広げていきたいと考えています。
また、サーバレスといった最新技術を商用サービ スにいち早く導入・実践することは次世代のイノベーションへの挑戦でもあります。そのマインドを育てながら、今後もドコモ社内で開発の効率化を促進、成功事例を増やしていきたいと考えています。