Thought Leadership

技術的負債を減らすのに良いタイミングとは?

新型コロナウイルスによるパンデミックへの世界的な対応の中で、デジタルトランスフォーメーションの取り組みが加速しているという話が多くありました。マイクロソフト CEO のサティア・ナデラは先日、「2ヶ月で2年分のデジタルトランスフォーメーションが実現した」とコメントしています。また、VMwareの委託によりVanson Bourneが行ったグローバル調査によると、ほぼすべての組織(99.54%)がデジタルトランスフォーメーションを行っている一方で、ほぼ同数の組織(98.77%)がその取り組みに改善の余地があると答えています。

 

トランスフォーメーションのスピードには目を見張るものがあります。しかし、これが現在の危機に対する短期的な反応に過ぎないのか、それともトランスフォーメーションに対する姿勢に長期的な変化が見られるのかを問うことが重要です。

 

私は広く報道されたある話題をきっかけに、このトピックについて考えるようになりました。その話題とは、ニュージャージー州の失業保険請求を処理する重要なシステムのパフォーマンスを改善するためのCOBOLプログラマーの必要性に関するものです。COBOLはニュースにはほとんど出てきませんし、デジタルトランスフォーメーションとの関連性もあまりありません。私がソフトウェアの書き方を学んでいた1970年代には、COBOLはすでに時代遅れになっていました。しかし、2020年になっても私たちはCOBOLに頼っているのです。

VMware, Inc. アジア パシフィックおよび日本地域担当最高技術責任者(CTO)
ブルース・デイビー(Bruce Davie)

WIRED誌の分析によると問題はCOBOLそれ自体ではなく、また次のものでもありません。

  1. システムに変更を加えるのが難しいこと
  2. (前例のない需要に対処するための)システム全体のスケーラビリティの欠如

ただ一つ確実なのは、そのシステムがアプリケーション開発の最新のアプローチを用いて構築されていなかったことです。

 

パンデミック発生に際してVMwareが行った調査の回答者によると、変化する状況に応じて更新をプッシュする機能(42%)と迅速にスケーリングする機能(35%)は、最新のクラウドネイティブアプリケーションの持つ主なメリットとして挙げられます。しかし、スケーリングの課題は新型コロナウイルスに対処する上での共通のテーマとなっているのです。

オーストラリアでは、オンラインショッピングサイトにアクセスするためのバーチャルな行列をつくったことが話題になりました。消費者はイライラさせられましたが、Webサイトがクラッシュしたり、応答しなくなったりすることに比べれば、Webサイトのユーザー数を制限する方が良い手段であることは確かでしょう。もちろん、負荷が増大したときにパフォーマンスをスケールアップ(向上)させるようなサイトを作れれば、はるかに優れたオプションとなったはずです。しかし、ロックダウンによってオンラインショッピングの需要が急上昇したとき、そのオプションは小売業者がすぐに利用できるものはありませんでした。

これらの話題に共通するのは、技術的負債の影響を明らかにしている点です。著名なソフトウェア技術者であるマーティン・ファウラーが書いた技術的負債に関する短い記事は、これをうまく説明しています。ソフトウェアが適切に設計されていない場合、そのソフトウェアに変更を加えるたびに、適切に設計されたコードに比べて多くの労力が必要となります。その余分な労力は技術的負債の支払いにかかる利子とも言えます。

住宅ローンの返済と同じで、負債の返済は通常、一度で完了することはできません。少しずつ、最終的に完済できるよう十分なスピードで行うのが理想です。そうすることで将来的に利子の支払いが少なくて済みます。小さな改善を積み重ねるというプロセスは、新型コロナウイルスのような予期せぬ危機が訪れたときに必ずしも無駄にはならないのです。

 

技術的負債を減らす

技術的負債を減らす方法は数多くあります。いくつか例を挙げましょう。

  • 組織はレガシーアプリケーションをより新しいもの(場合によってはSaaSの代替品)に置き換えるか、買い換えることができます。
  • レガシーアプリケーションの中には、もはや維持する価値がないほどニッチなビジネスニーズに対応しているものがあるかもしれません。それらは引退させてしまってよいでしょう。
  • 一部のアプリケーションではリファクタリングまたはリアーキテクティングがベストな選択肢となります。これらは広範囲をカバーする用語ですが、今日のリファクタリングではモノリシックなアプリケーションをマイクロサービスに分割することがよくあります。

AWSが提案しているように、これらの戦略(リプレース、リタイア、リファクタリング)は、クラウド移行における6つの戦略に含まれるものです。アプリケーションをクラウドへ移行することは技術的負債が減少することを保証するものではありませんが、多くの場合、正しい方向へ進む一歩となります。

クラウドインフラストラクチャを活用するためにアプリケーションをモダナイズするプロセスには、技術的負債を減らすことができるアプリケーションの構造の変更が高い確率で含まれています。また、様々なクラウドネイティブサービスを使うことによってアプリケーションオーナーが開発・保守しなければならないコードの量を減らすことができます。

前述したCOBOLシステムとオンラインショッピングサイトの話は、両方ともリファクタリングの候補になりそうです。数十年前には存在しなかったアプリケーションを構築、実行、管理するための多様なツールを今は利用することができます。そして多くの場合、ベストな行動はアプリケーションのモダナイゼーションを受け入れることなのです。

 

マイクロサービスの役割

私はメディアの記事を通してしか知らないアプリケーションにおける問題の解決策を示そうとしている訳ではありません。ですが、マイクロサービスベースの最新のアーキテクチャ手法がこれらのケースで役立つ理由を理解することは簡単です。マイクロサービスを適切に用いると、パフォーマンスを制限しているアプリケーションの部分のみに迅速なリソースプロビジョニングを行い、アプリケーションをスケールアウトできます。また、マイクロサービスではアプリケーションのコンポーネント間に明確な境界を設定することが設計者に求められるため、将来的にアプリケーションの一部に変更を加える際、作業が楽になる可能性があるのです。

VMwareのJames Wattersは先日、過去10年間にマイクロサービスがもたらした影響について述べ、マイクロサービスが解き放った「スーパーパワー」として開発者の生産性とスケーラビリティの2つを強調しました。とはいえ、マイクロサービスは万能薬ではありません。マイクロサービスへの反発があることからもわかるように、マイクロサービスが謳うメリットを享受できなかった例についても簡単に見つけることができるのです。

 

レジリエントな未来をつくる

ここまで色々と述べてきましたが、私が伝えたいのは新型コロナウイルスへの長期的な対応が差し迫った問題に対する単なる応急処置ではないということです。この長期的な対応は時間をかけて技術的負債を減らしていくことの必要性について、重要な示唆を与えてくれるはずです。

住宅ローンが(ほとんどの場合)すぐに完済できないのと同じように、通常、アプリケーションのモダナイゼーションもすぐに完了することはできません。しかし、モダナイゼーションは特に最重要なアプリケーションにフォーカスした場合に大きな効果を発揮し、莫大なROIをもたらし得ます。スケーリングに優れたアプリケーションは予期せぬ事態にも対処できます。また、最新のクラウドインフラストラクチャを活用して構築されたアプリケーションは、絶え間なく成長するオープンソースプロジェクトやクラウドネイティブサービスの素晴らしいエコシステムを利用することができるのです。

技術的負債を減らすことでエンドユーザーにインパクトの大きな新しい機能を提供しやすくなり、それによって事業価値を生み出すことができます。また、企業が危機に際して予期せぬニーズに対応するのにも役立つのです。

 

*US参考資料原文、および参考資料内コメントは下記URLよりご覧ください。(英語サイト)

https://www.vmware.com/radius/when-to-reduce-technical-debt/