2020年12月16日にオンラインセミナー「認定コンサルタントが解説!DXを加速するAWS活用法」を開催いたしました。
この記事では当日用いた資料を公開し、そのポイントをご紹介します。
目次
DXとは何か?
最近はDX(デジタルトランスフォーメーション)という言葉がさまざまな文脈で使われていますが、このセミナー(記事)ではDXの定義を「先端技術を用いて業務・サービスをデジタル化することより、今までにない新しい価値の提供・業務効率化を行うこと」として説明していきます。
上記のDX定義内の各キーワードは下記の意味を持つと考えてください。
- 先端技術とは「 AI、IoT、クラウド、SPAなどの新しい技術、マイクロサービスやアジャイルなどの方法論」
- 今までにない新しい価値とは「先端技術で実現される、今までできなかった新しい体験・機能」
- 業務効率化とは「引き続きITシステムにおける関心事項」
つまり、DXとは単なる「IT化」の延長ではありません。
クラウドの特徴
次にアマゾン ウェブ サービス(AWS)をはじめとしたクラウドの特徴を紹介します。
ここでは次の3点に注目します。
- 高い拡張性(サーバー等の計算資源を柔軟に拡張可能。かつ、さまざまなサービスとの連携が可能)
- 従量課金型の料金体系(使った分だけ課金される・イニシャルコストがゼロに近い)
- 構築・維持の外部化が可能(ユーザーはインフラ構築の具体的作業を意識する必要がなく、アプリケーション部分に注力できる。また、プログラムによる自動化が容易)
DXにおけるクラウドの役割
「DXとは何か?」と「クラウドの特徴」を把握すると、自ずとDXにおけるクラウドの役割が見えてきます。
DXとは、変化の早い時代に対して、新しい技術を用いて新しい価値を提供するための取り組みです。変化の早さ、新しい技術などの条件から、DXはどうしても結果の予測がつかない中で試行錯誤しながら進めざるを得ないものです。
つまりDXの技術面における最大のポイントは「不確実性」であるといえます。
この不確実性の高い取り組みに対応するために、従来型の(途中の仕様変更に弱い)ウォーターフォール型よりも、要求仕様の変更などに対して柔軟に対応できるアジャイル型の開発手法が重視されるようになってきました。
この「変化への対応力」をインフラ部分で実現するのがクラウドだといえます。クラウドの持つ高い拡張性や、構築・維持の容易さが変化への対応力を高めるのです。
また、業務効率化の観点でもクラウドは大きな威力を発揮します。詳細は後でまた説明しますが、特長としては次の2点が挙げられます。
- 開発効率の向上:DevOps基盤としてのクラウドの活用
- インフラコストの削減:主としてマネージドサービスを利用することによる運用コストの削減
クラウドとDXはよく同時に語られますが、「クラウドを使うことがDX」という捉え方をされているケースも多いようです。
しかし、クラウドを有効に活用するためには、「クラウドを使うことがDX」と考えるのではなく「不確実性の高いDXという取り組みに柔軟に対応できるインフラとしてクラウドを使う」という本当の目的を理解しておくことが大切です。
「EC2クラウド」からクラウドネイティブへ
Amazon EC2やAmazon Relational Database Service (Amazon RDS)をリモートサーバーとして利用する、現在多くの企業が採用しているAWSの利用形態をここでは便宜上「EC2クラウド」と呼ぶことにします。
この場合、SIerを中心とした販売代理ベンダーが運用・維持を担うことが多いようです。
一方で、Amazon EC2やAmazon RDSだけでなく、クラウドプロバイダーが提供する多様なサービスをフルに活用する(まだあまり多くの企業が実践できていない)AWSの利用形態を「クラウドネイティブ」と呼びます。
コンテナ、サーバレス、AI、IoT、CI/CD、ライブストリーミングなど、さまざまな先端技術や手法を活用するために、無数にあるサービスを有機的に組み合わせ、クラウド上で最適なアーキテクチャを構築する必要があります。
クラウド活用の3つのハードル
「不確実性の高いDXという取り組みに柔軟に対応できるようにクラウドを使う」。そしてより高い対応力を求めて「クラウドネイティブ」なかたちでのクラウド活用を目指す。
このような方針をとるためにはいくつかのハードルがあります。
次にこのハードルを解説します。
3つのハードルとは?
- 適切な技術の選定
- クラウド活用の人材確保
- セキュリティを含めた社内制度
ハードル1.適切な技術の選定
「クラウドネイティブ」を実現するためには、膨大なサービスの中から必要なものを適切に選ぶことが必要です(2020年12月現在 AWS東京リージョンには150以上のサービスが存在)。
当然、多くのエンジニアにとっては使ったことのないサービスの方が多い状態になります。Googleで検索してもまだあまり多くの情報がないサービスなどもあるので、手を動かし、理解していく必要があります。
よく使うサービスとそうでないものはある程度分類可能で、たとえば「Webサービスにおける標準」と呼べるサービスはある程度定まってきているといえます。ただし、ある程度標準の型が参考になるとしても、最終的にはさまざまな制約から三者三様なアーキテクチャになっていきます。
さまざまな制約とは?
- 社内ネットワーク・既存システムとの接続
- セキュリティやアプリケーションの制約
- 期間・人材・将来的な戦略との兼ね合い
ハードル2.クラウド活用の人材確保
DXにクラウドの技術は欠かせないので「クラウド人材 ≒ DX人材」と言っても過言ではないのですが、クラウドにだけ詳しければいいというわけではありません。
DXは今までにない新しい価値を提供する取り組みなので、エンジニアも自分の専門分野だけ意識していればいいわけではなく、業務・アプリ・インフラ全ての観点を持つ必要があります。もちろん全てに精通している必要はありませんが、全てに関心を持つ必要はあります。
縦割りの役割分担ではうまくいかないので、DXに関連する人材はそれぞれ少しずつでも領域を広げハイブリッドな役割を担う必要があります。
ハイブリッドな役割とは?
- ユーザー(ビジネスサイド):開発やインフラへの理解が求められる
- アプリ開発者:業務知識 + インフラの基礎知識が求められる
- インフラエンジニア:アプリ構成への理解、ビジネス側との非機能要件部分に関する対話が求められる
ハードル3.セキュリティを含めた社内制度
社内制度の壁はよくあるハードルです。セキュリティの社内基準でそもそもクラウドが利用禁止というケースはまだまだありますし、明確に禁止はされていなくても社内にルールがないため、安全策をとってルールができるまで使わないと判断をされるケースもあります。
先ほどDXの特徴として「不確実性」を挙げましたが、ここが問題視されて「確実な成果が見込めないなら承認できない」と判断をされることもあります。また、「不確実性」があるため事前調査やPoCを行った方がいい場合でも、調査に十分な時間を取れない、納期に余裕を持たせられないという問題が導入のハードルになることもあります。
縦割り組織という問題もよくあるハードルです。「あのシステムは○○部、あそこのネットワークは××部…」と管轄が分かれているため意思決定に時間がかかったり、せっかくクラウドを導入しても部署間連携がうまくいかなかったりして、クラウドのアジリティ・柔軟性を生かしきれないという問題が起こり得ます。
クラウド活用のハードルを越えるために
次に、前述した3つのハードルをどう乗り越えるかのヒントをご紹介します。
3つのハードルを乗り越えるヒント
- 最新技術へのキャッチアップ
- アジャイルを中心としたチームビルディングと人材戦略
- ある程度トップダウンで巻き込む
ヒント1.最新技術へのキャッチアップ
適切な技術を選定するためには最新技術へのキャッチアップが必要です。
社内に技術者がいるならそれに越したことはないのですが、そうでない場合はDXに技術者以外の各メンバーが自主的に情報収集することが大切だといえます。自分でエンジニアと同じことができるレベルの知識は必要ないのですが、アプリ開発者、クラウドエンジニアとある程度意思疎通できるレベルでは理解しておくことが望ましいです。また、自社のシステム構成をある程度他者に説明できるように理解しておくことも大切です。
外部リソースを活用するのもひとつの方法です。ただし、技術を持っている会社はたくさんありますが、そこから適切に力を借りるのは難しく、そのための準備は必要です。自分たちの考えるDXのためにはどんな技術が必要かを考え、その技術を持った会社を探すというのは意外と難しいものです。
また、DXの取り組みでは「自分たちも何をやりたいか明確にわかっていない」ことがよくあります。それ自体は決して悪いことではなくDXの特性として仕方のないことだと思いますが、そのままの状態では外部リソースをうまく活用するのは難しいです。その場合は「なんとなくやりたいと思っていること」を「具体的にどの技術が使えそうか、どう検証すればいいか」というレベルまで整理してくれるパートナーを見つけるという解決策もあります。
(このあたりのテーマでお困りの方はぜひNCDCにご相談ください)
最新技術のキャッチアップのためには「まずやってみる」ことも大切です。いきなり難しいことに挑戦する必要はないので、まず既存システムをそのままクラウドに置き換えるというような、できることから始めてみるのもいいと思います。
ヒント2.アジャイルを中心としたチームビルディングと人材戦略
人材の問題に関しては、一人で全領域をカバーする必要はないので「一人で無理ならチームでカバーできればよい」と考えてください。さまざまな役割を持つメンバーが上下関係なく意見する。お互いがお互いの領域に関心を持つ。というアジャイルにおけるチームづくりが参考になると思います。
アジャイルでは「開発はベンダーさんにお任せ」ではうまくいかないので、自分たちがしっかり関与し続けることが大切ですが、そのためには柔軟に動いてくれる協力会社を見極めることも必要です(なんでもいうことを聞く会社に頼むということではなく、お客様の立場に立って臨機応変な対応ができる会社を探すという意味です)。
もちろん人材戦略に関しては「DXを推進できる人材を社内で育てる」という考え方も重要です。
事業会社の場合、エンジニアが足りていないことが多いと思いますが、「エンジニアがいない場所にはエンジニアは来ない」といえるので、少しずつでもその分野に強いエンジニアを採用して、エンジニア自身が面白いと感じられるような新しい取り組み、新しい技術への挑戦をやり続けていくことが大切です。そうした取り組みがプロジェクトに魅力を感じて入社するエンジニアを増やすことにもつながっていきます。
ヒント3.ある程度トップダウンで巻き込む
セキュリティの問題や縦割の組織構造といった問題は上位層が動いてくれないと解決は難しいと思います。そのためには「自分たちの挑戦に価値があると経営層を納得させる(納得できるよう説明する力をつける)」「小さく始めて成果をつくる」「他社事例や外部の意見を持ち込んで説得する」などの対応が考えられます。
上位層や別部署の協力を得る場合、「巻き込む範囲はなるべく広く、巻き込む人はなるべく少なく」という方針で社内に広く協力してもらうのが望ましいです。意思決定の人数が増えると動きが鈍るので、決済者を巻き込むことが重要です。
セキュリティや不確実性の問題に関しては、説得のために論理武装をしておく必要があります。たとえば「クラウドはセキュリティに問題があるのではないか」という疑問に関してはクラウドでもオンプレミスでもリスクはあるという前提で、どのレベルを問題として話しているのかを詰めていくといいと思います。
極論を言うと「うちのシステムはAmazonやGoogleより高いセキュリティが必要ですか?」という問いはセキュリティや各種リスクについて考えるうえで参考になるかもしれません。
クラウド活用による不確実性への対応とは?
ここからはAWSのサービス名なども紹介して少し技術的な話に踏み込みますが、「クラウドを使うことで不確実性に対応する」とは具体例としてどんな取り組みがあるのかを説明します。
- IaC(Infrastructure as Code):インフラ構成を再利用性の高い「コード」として管理することで、柔軟で再現可能なインフラストラクチャーを実現します。AWSのサービスではAWS CloudFormation, AWS Serverless Application Model, AWS OpsWorksなどが活用できます。
- DevOps:開発者(Development)と運用者(Operations)が密接に連携することで、より柔軟かつスピーディーな開発をする手法です。AWSのサービスではよくAWS コードシリーズと呼ばれているAWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, AWS CodePipeline), AWS Secrets Managerなどが活用できます。
- マイクロサービス:システムを疎結合なモジュールの組み合わせで構築することで、変更が安全・容易になります。AWSのサービスではAWS Lambda, Amazon Elastic Container Service (on Fargate), Amazon Elastic Kubernetes Serviceなどが活用できます。
- PoC:クラウドは「使った分だけ課金=初期投資不要」なので、まず小さくはじめる(PoCを行う)ことに適しています。スモールスタートできるという意味ではAWSのほぼ全てのサービスがPoCに活用できるといえます。
具体例としていくつかのサービス名を挙げましたが、先に書いた通りAWS東京リージョンには150以上のサービスが存在し、随時追加やバージョンアップが行われているので、全然わからないサービスがあっても不思議ではありません。
強いていえば上記のものはよく使うので、興味のある方はまずこれらのサービスがどんなものか調べてみていただくといいと思います。
クラウド活用による業務効率化とは?
先に「クラウドは効率化・コスト削減にも有効」と説明しましたが、ここで、具体的にはどのような業務効率化に繋がるのを説明します。
ひとつめは「開発効率の向上」です。
先述したAWSのサービスなどを活用してDevOps基盤が整うと、アジャイル開発がしやすくなります。アジャイル開発がうまく機能し、変更に柔軟に対応できるようになると最終的な成果物までの道のりが短くなるので、結果的に開発効率の向上につながっていきます。
ただし、「クラウド利用=開発効率の向上」ではないことは覚えておいてください。「クラウドサービスをうまく使ってDevOpsをやる」。ここまで持っていかないと、開発効率はあまり上がらないので注意が必要です。
ふたつめは「インフラコストの削減」です。
クラウドは従量課金型の料金体系なので、使用率の最適化によりインフラ費用を削減できます。たとえば夜間はほとんど使わない場合、それに適した設定にしておくことで無駄なコストを削減できます。
ただし、クラウドをうまく使う(クラウドプロバイダーの提供するサービスを使い倒す)ことで、かえってサービスの利用料が増えていくという問題はあります。オンプレミスよりコストが下がると思ってクラウドに移行したけど、各サービスの利用料などが追加されるので総額はあまり変わらないない(むしろ上がった)という声を聞くことも実は多々あります。
では、なぜクラウド活用がコスト削減に寄与するのかというと、運用・監視の自動化による運用コスト削減の恩恵が大きいのです。AWSに支払っている利用料金だけを見るとオンプレミスのときと大差ないというケースでも、運用にかかるコストも含めたトータルコストで考えれば、確実にコスト削減ができるはずです。
DX・クラウド活用のご相談はNCDCへ
いかがでしたでしょうか。セミナーでは具体的なプロジェクトでのAWS活用事例もご紹介したのですが、長くなってしまったのでその部分はまた別の記事にまとめたいと思います。
NCDCでは、クラウド移行の計画立案からアーキテクチャの設計や実装段階の技術支援まで、クラウド活用に関する幅広いサービスを提供しています。
システムアーキテクチャコンサルティング
クラウドインテグレーション
マイクロサービス導入支援
これからクラウド活用に取り組みはじめる方はぜひご相談ください。
この記事でご紹介したオンラインセミナー「認定コンサルタントが解説!DXを加速するAWS活用法」のアーカイブ動画をご覧になりたい方は下記のリンクからお申し込みください。
また、NCDCでは定期的にセミナーを開催していますので、ご興味のある方はセミナー情報ページもご覧ください。