既存のコードベース (多くの場合、コードベースのポートフォリオ) を刷新していくのは、技術的に複雑な取り組みです。エンタープライズ環境には、技術面以外にも、モダナイゼーションを阻害または阻止する可能性のある課題が存在します。

企業は、数十年にわたり、大きな規模で技術を運用してきた結果、技術的な成果すべてに影響を与える、文化、政治、情報セキュリティ対策のプラクティスといったユニークな基盤を形成してきました。持続的な変化をもたらすには、このようなユニークな基盤を意識すると同時に、技術的な問題に対処することが不可欠です。

これは、連載を予定している記事の第 1 回目です。今回は、企業の既存ソフトウェアを刷新するという独特な課題について概説し、既存のアプリケーションを変更するアプローチについてもまとめながら、今後のイノベーションへの扉を開く、企業文化の主要な部分を組み込む戦略についても詳説していきます。

モダナイゼーション:重要な理由

進化を遂げるにはソフトウェアの変更が必須

Marc Andreessen 氏が「Software is eating the world (ソフトウェアが世界を飲み込んでいる)」と発言した 2011 年以前から、ビジネスは古くなったシステムやコードの刷新を迫られていました。モダナイゼーションの理由はさまざまですが (例: 特定のワークロードを移行して安価なプラットフォームで実行する)、Andreesssen 氏の記事は、ソフトウェアを運用している企業にとって、より差し迫った別の懸念内容、つまり、新興のソフトウェアに利益を奪われてしまうという脅威を浮き彫りにしました。

この記事以来、多くの企業が一斉に顧客向けのソフトウェア・ソリューションを提供することに力を入れるようになりました。ほとんどの場合、この点においては多数の成功を収めています。ですが、このような成功により、「ソフトウェアが生き残るには変更可能でなければならない」という不変の真理が明らかになりました。

特に既存のソフトウェアを変更する場合は、ソフトウェアが提供する結果に影響を与えずに変更を加えることが課題です。

この連載記事では、コードや設定を変更しやすい状態に移行することを目的とし、アプリケーションのモダナイゼーションについて考察していきます。

モダナイゼーションとは

すべてのアプリケーションには現在の状態があります。これにはコードや、その設定、ランタイム、および統合するサービスも含まれます。

ここでいうモダナイゼーションとは、既存のコードベースを取り出し、現在の状態から企業に価値をもたらす未来の状態へと変化させることを意味します。モダナイゼーションは、現状に何らかの問題があることがきっかけとなり、モダナイゼーションの真価は、未来の状態への道程を通じて実現されていきます。

時に見落とされがちな重要な問題は、利益は別として、この未来の状態を長期にわたって運用できるかどうかということです。時間をかけてこの評価方法について説明し、未来の状態でのアプリケーションの運用に疑問がある場合に向けた戦略候補をいくつか提案していきます。

現在の状態に関する情報

モダナイゼーションを行うか決定する前に、モダナイゼーションの利点と範囲を正しく意義できるように、現在の状態に関する情報をできるだけ入手することが重要です。

大企業では、現状に関する情報はすぐに入手できない場合があります。場合によってはアプリケーションを構築したスタッフがこの企業ともうやり取りしていないなどの理由が挙げられます。(縦割りの) サイロを超えたコミュニケーションに欠けている可能性も挙げられます。あるいは、モダナイゼーションのタスクを割り当てられたチームがこの企業では新しく、適切な担当者を知らないだけかもしれません。

ただし、モダナイゼーションプロジェクトを正常に実行するには、この現状において重要な部分を見極める必要があります。たとえば、現状をテストする重要なステップ (手作業になる可能性あり) などが含まれます。

これは、企業が移行を検討している旧式のテクノロジーを、モダナイゼーションの担当チームが使いこなすべきだという意味ではなく、移行を適切に計画できるように、企業がこの旧式のテクノロジーをどのように使用しているのかを完全に理解しておく必要があるという意味です。

今後の状態に関する情報

モダナイゼーションが適切かどうかを判断する場合に、未来の状態とその利点を理解することが重要です。

たとえば、未来の状態の例として、以下が挙げられます。

  • コードベースの新しいコーディングフレームワークまたは依存関係。

  • コードまたはランタイムの設定方法への変更。

  • 古いランタイムとは大きく異なる新しいランタイム。

  • コードの変更による斬新なエンドユーザー機能の追加。

組織のニーズによって、モダナイゼーションにはこれらすべての要素が含まれる場合があります。現在、多くの企業が採用するモダナイゼーションアプローチでは、アプリケーションをコンテナランタイムに移行する時に、この 2 つ (設定とランタイム) を組み合わせています。このアプローチと、コンテナ管理プラットフォーム (Azure Kubernetes Service、Red Hat OpenShift、Google Cloud Run/Anthos、Amazon Elastic Container Service などの Kubernetes プラットフォームやサービスなど) の登場により、モダナイゼーションの作業に多くのメリットが追加される可能性があります。

未来の状態は企業にとって新しい内容である場合に、外部のサポートを導入することができます。ただし、外部のリソースがこのスペースに関してチームメンバーをトレーニングする意思があり、他の企業 (プロジェクトが実行される企業と同じ場合はボーナス点が高い) で実稼働環境にこのような技術を移行した経験があることが前提です。

モダナイゼーションに対する意思決定

これまでに、現在の状態を確認し、未来の状態にモダナイゼーションした場合の利点を比較検討しました。モダナイゼーションが、適切な考えであると感じられたと思います。では、そのまま着手していくのでしょうか?

企業の環境で作業している人ならご存知のように、それではうまくいかないのです。次回は、モダナイゼーションの作業が困難になる、既存/レガシーソフトウェアにまつわる課題について説明します。このような課題の中には、実は今の状態から脱却する理由と合致するものがある可能性があります。モダナイゼーションを大きく進めて行く前に、これらの要素を理解することが重要です。