APIを監視することの重要性、APIパフォーマンスの監視システムを実装する際に検討すべき機能について紹介します。
公開日:2022年10月17日
アプリケーションとITのモダナイゼーションとは、レガシーソフトウェアとその基盤となるITインフラを最新の環境に適応させたりアップグレードしたりするプロセスのことです。Gartner社は、レガシーシステムあるいはレガシーアプリケーションを、「テクノロジー基盤が時代遅れになっている可能性があるが、日常業務に不可欠な情報システム」と定義しています。アプリケーションとITのモダナイゼーションプロセスで行われる具体的なアクションは組織の規模、業種、予算などの要因によって異なりますが、ほとんどの場合、古いソリューションからの脱却、新しいテクノロジーの導入、システムとワークフローの統合、自動化の実装によるビジネスオペレーションの効率化が伴います。
アプリケーションとITのモダナイゼーションは、組織が変化の激しいビジネスニーズに対応するために欠かせません。ウォーターフォール型のアプリケーション開発プロセスによって開発と管理を行い、オンプレミスのITインフラに導入したモノリシックアプリケーションでは、企業が競争の激しい市場で勝ち抜くために必要な柔軟性と拡張性を実現することはできません。アプリケーションとITのモダナイゼーションは、古くなったアプリケーションを一新し、新たなテクノロジーとコンピューティングアプローチを活用できるようにします。これにより、開発者はレガシーアプリケーションのアーキテクチャにおける制約を克服し、クラウドアーキテクチャや継続的デリバリーおよびデプロイパターンに合わせてそれらのアプリケーションを再編成できるようになります。
アプリケーションとITのモダナイゼーションは、組織全体のデジタルトランスフォーメーション戦略にとって欠かすことのできない重要な要素です。以下のセクションでは、アプリケーションモダナイゼーション戦略のさまざまなアプローチ、それがすべての組織にとって重要な戦略である理由、そしてそれぞれのモダナイゼーションに着手するにあたって予測できるメリットと課題について説明します。また、導入のためのベストプラクティスもいくつかご紹介します。
アプリケーションモダナイゼーションとは何か
アプリケーションモダナイゼーションとは、古いアプリケーションをアップデートして新しいコンピューティングアプローチを活用するための手法を意味します。組織がデジタルインフラの導入を進めるにつれ、レガシーアプリケーションを維持するために必要となるリソースとコストは膨大なものになるでしょう。多くの場合は組織で最もミッションクリティカルな要素の1つであるこれらのアプリケーションを廃止したり置き換えたりするのではなく、それらをモダナイズ(および最適化)して寿命を延ばすことができれば、そこから新たなビジネス価値を生み出すことができます。
このように、アプリケーションのモダナイゼーションによって組織は自社の重要なアプリケーションを含むアプリケーションポートフォリオを更新し、新しいプログラミング言語、フレームワーク、インフラプラットフォームなどの進化したテクノロジーを活用できます。効果的なモダナイゼーション戦略を導入することで、新しい機能のデプロイ頻度と信頼性が高まり、アップタイムとレジリエンスが向上し、アプリケーションの実行コストが削減されて運用効率が最大化します。アプリケーションモダナイゼーションは、クラウドモダナイゼーションに含まれるコンポーネントプロセスです。クラウドモダナイゼーションとは、組織のITインフラやプロセスのアップデートを指す総称的な用語であり、これによって、パブリッククラウド(Google Cloudやアマゾン ウェブ サービス(AWS)など)、機械学習、自動化、リモートコラボレーション、コミュニケーションプラットフォーム、そしてモバイルデバイスやIoTデバイスなどのデジタルテクノロジーを活用できるようになります。
アプリケーションモダナイゼーションにはいくつかのアプローチがあります。アプリケーションモダナイゼーションサービスでは以下のようなオプションが提供されます。
- リホスト:一般に、「リフト&シフト」と呼ばれるリホストは、既存のアプリケーションをオンプレミスサーバーやメインフレームなどの従来のインフラから、パブリッククラウドプラットフォームなどの最新のインフラに「そのまま」移行させます。リホストは、アプリケーションのコードやアーキテクチャをほとんど変更しないため、一般的に、時間と手間が最もかからない方法です。これはつまり、アプリケーションの機能を変更することなくターゲット環境にアプリケーションをレプリケートすることを意味します。移行が完了したあとは、基盤となるほとんどのインフラをクラウドプロバイダーが管理します。ただし、一般的にリフト&シフトしたアプリケーションはクラウド用に最適化されていないため、リホストを行うと長期的にはコスト削減効果が損なわれ、その結果、パフォーマンスが低下し、コンピューティングリソースの過剰なプロビジョニングやオブザーバビリティに関する課題が生じる可能性があります。
- リファクタ:リファクタとは、アプリケーションコードのリライト、再構築、リパッケージを指します。この戦略では、レガシーアプリケーションを利用し、新しい環境(通常はクラウドインフラ)で効果的に実行できるよう、その基盤となるコードを一定量修正する必要があります。リファクタでは、開発者がコードや構成を大規模に変更することなく、コンテナ、データベース、アイデンティティ管理システムなどのクラウドネイティブなインフラやツールに既存のアプリケーションを接続できます。
- リアーキテクト:このモダナイゼーションアプローチでは、既存のアプリケーションのコードベースに修正や拡張を加えることで、アプリケーションのアーキテクチャをモジュール化してクラウドにおける拡張性と信頼性を向上させます。大幅なコード変更を伴うため、アプリケーションをクラウドに移行する方法としては最も時間がかかります。リアーキテクトで一般的なのは、モノリシックアプリケーションをマイクロサービスに分解するというものです。
- リビルド:このアプローチは、最新のクラウドサービスを利用してデプロイできるように、既存のアプリケーションをPaaS (Platform as a Service)やIaaS (Infrastructure as a Service)で構築し直すというものです。リビルドはアプリケーションを完全に構築し直す必要があるのに対し、リアーキテクトはアプリケーションの一部を修正すればよいという点でこの2つは異なります。アプリケーションのリビルドにはコストがかかりますが、再構築したクラウドネイティブアプリケーションは安価に使用でき、拡張性にも優れています。
- リプレース:リプレースとは、既存のアプリケーションを破棄してSaaSで置き換えることです。基盤となるインフラ、アプリケーションソフトウェア、アプリケーションデータはサービスプロバイダーが管理するため、IT開発コストを抑えたい組織にとって最適なオプションです。
- リプラットフォーム:モダナイゼーションのリプラットフォームは、リホストとリファクタをバランス良く両立させたアプローチです。アプリケーションのバックエンドデータベースを修正したり置き換えたりするなど、特定のアプリケーションコンポーネントに変更を加えることで、レガシーアプリケーションがクラウド環境でより効果的に機能するようにします。リプラットフォームは、リアーキテクトによる徹底した見直しにかかるコストとダウンタイムを回避しながら、新しい機能の追加、あるいは拡張性、セキュリティ、ユーザーエクスペリエンスの向上を実現できます。
アプリケーションはそれぞれに固有であり、その要件はアプリケーションアーキテクチャとその環境、機能、ユーザーエクスペリエンス、ライフサイクルなどによって異なります。そのためアプリケーションモダナイゼーションのアプローチは、その難しさ、コスト、全体的な価値を踏まえて慎重に検討する必要があります。
パブリッククラウド、機械学習、自動化などのデジタルテクノロジーの活用を目的としたアプリケーションのモダナイゼーションには、主に6つの方法があります。
アプリケーションモダナイゼーションが重要である理由
レガシーアプリケーションは否定的に捉えられることが多くありますが、組織の最もミッションクリティカルなソフトウェアであることが少なくありません。アプリケーションモダナイゼーションが重要であるのはそのためです。ゼロから開発し直すとリソースやダウンタイムのコストがかかりすぎるため、ほとんどの組織はレガシーアプリケーションを廃止したり置き換えたりしようとはせず、またそうすることもできません。アプリケーションモダナイゼーションは、アプリケーションポートフォリオへの投資を保護しながら、レガシーアプリケーションが新しいアーキテクチャ、プラットフォーム、ツールなどのテクノロジーを活用できるようにすることで、そこから新たな価値を生み出します。
また、クラウド以外のインフラでの作業ノウハウを持つ人材を雇用することもますます難しくなっています。最近では、新しい人材に求められるのはクラウドでの作業経験であり、このような人材が使用するアプリケーションはすべてクラウドで動作することが前提となっています。
アプリケーションモダナイゼーションの例
モノリシックアーキテクチャは従来のソフトウェアモデルです。モノリシックアプリケーションは、非常に少ないアプリケーションにすべての機能が含まれているため、開発、導入、デバッグが容易です。ただし、これらのアプリケーションが大規模になるほど、起動と導入の時間も長くなります。また、わずかな変更でもアプリケーション全体を導入し直す必要があります。アプリケーションの機能が分割されていないため、どこかのモジュールに1つでもバグがあると、モノリシックアプリケーション全体に障害が発生する可能性もあります。このような制約があるため、モノリシックアプリケーションをクラウドテクノロジーと一緒に使用するのは極めて困難です。
このようなデメリットから、一般的に先進的な組織は、リアーキテクトアプローチを利用してモノリシックアプリケーションをマイクロサービスに分解します。これによってアプリケーションのコンポーネントを個別にデプロイ可能で拡張性に優れたアプリケーションに分離できます。これが最終的には、デプロイの迅速化、柔軟な拡張性、コスト削減、アプリケーションパフォーマンスの向上につながります。
アプリケーションモダナイゼーションの主なメリット
アプリケーションモダナイゼーションには、以下のようなメリットがあります。
- 新しい機能とサービス:アプリケーションモダナイゼーションにより、企業は現在のニーズや目標に沿った新しい機能とサービスを開発できます。たとえば、モノリシックアプリケーションをマイクロサービスに分割することで、コアビジネスのロジックはそのままに、新しいマイクロサービスそれぞれの開発を迅速化し、デプロイの頻度を高めることができます。
- 生産性の向上:動作の遅いレガシーシステムや本来のパフォーマンスを発揮しないアプリケーションは、ユーザーに不満を与え、生産性を阻害します。新入社員全員に非効率的なレガシーITシステムの使い方を教育することは、さらなる時間の無駄です。アプリケーションモダナイゼーションは、従業員の生産性と仕事の満足度を向上させる信頼性に優れた最新のツールを提供することで、これら2つの問題を解決します。
- 技術的負債の削減:有用性を失ったレガシーアプリケーションを維持し続ければ、その分だけ組織は技術的負債を抱えることになります。どれだけパッチを適用してバグを修正しても、ビジネスや顧客のニーズを満たせなくなったシステムを救うことはできません。モダナイゼーションは、システムを全面的に購入し直すことなく技術的負債を大幅に削減できます。また、古いコードの保守やパフォーマンスの問題の解決にそれほどコストをかける必要がないため、運用コストを削減することもできます。
- カスタマーエクスペリエンスの向上:顧客は、高速な最新のアプリケーションとサービスを期待しています。時代遅れでパフォーマンスの低いレガシーアプリケーションは、顧客がリピーターになるか競合他社に流れるかの分かれ目になることがあります。アプリケーションモダナイゼーションは、ユーザーインターフェイスのアップグレード、新機能の追加、手動プロセスの自動化などの簡単な変更でカスタマーエクスペリエンスを強化できます。
- セキュリティの強化:レガシーアプリケーションはレガシーソフトウェアに依存し、時間とともに脆弱性が増すことから、多くの組織に重大なセキュリティの問題をもたらしています。アプリケーションの登場から時間が経つほど、ハッカーは時間をかけてその弱点を研究して悪用します。レガシーアプリケーションをモダナイゼーションすれば構造的な弱点を補強でき、クラウドにデプロイされたアプリケーションは堅牢な最新のセキュリティ機能を活用できます。
- 収益の増加:モダナイズされたアプリケーションはレガシーアプリケーションよりも柔軟なため、組織は新しい機能やサービスを通じてさらなる顧客価値をより簡単に生み出すことができます。これらがカスタマーエクスペリエンスにもたらす実質的な改善がリピーターや口コミを生み、収益の増加へとつながります。
アプリケーションモダナイゼーションの課題
組織が直面する可能性があるアプリケーションモダナイゼーションの課題には以下のものがあります。
- レガシーアプリケーションの依存関係:レガシーアプリケーションと各コンポーネント(ネットワーク構成、データ、セキュリティなど)は、基盤となるインフラと密接につながっています。そのため、アプリケーションのアップグレードが難しく、膨大な時間と労力が必要になることがあります。
- 知識とスキルのギャップ:ほとんどのレガシーアプリケーションは非常に古く、そのアプリケーションのテクノロジースタックを理解している開発者が組織内にほとんどいない可能性があります。そのため、アプリケーションを分析してアプリケーションモダナイゼーションのニーズを特定するのが困難です。さらに、レガシーアプリケーションのソースコードは、文書化されることなく何年もかけて開発とパッチ適用が行われていることが多く、開発者はコードのレビューとテストを手動で行う必要があります。これは非常に骨の折れる作業であり、時間、リソース、知識、スキルが求められますが、これらは多くの組織で不足しているのが実情です。
- 稼動時間の維持:多くの組織では、重要な業務にレガシーソフトウェアを利用しています。大規模なレガシーアプリケーションのモダナイゼーションには膨大な時間がかかる場合があり、途中で何らかの問題が生じると、予期せぬダウンタイムにつながる恐れがあります。組織のニーズやコンプライアンス要件も途中で変化する場合があり、モダナイゼーションプロセスをこのような変化に適応させるために、時間が余分に必要になる可能性もあります。開発者は組織の業務に支障をきたさないように、モダナイゼーションを管理する必要があります。
- 時間とコスト:アプリケーションモダナイゼーションには時間とコストがかかりますが、古いソフトウェアを廃棄して新しいアプリケーションをゼロから構築するよりは時間もコストも抑えられます。それでも、組織にとって重要なのは、自社のビジネスを理解し、変化にすばやく順応してコストを最小限に抑えられる経験豊富な熟練の開発者を見つけることです。
- 抵抗:アプリケーションモダナイゼーションのプロセスでは、新しいテクノロジーやプロセスを受け入れることに消極的な従業員からの抵抗に直面することがあります。組織は、ビジネスの成長と発展のためにアプリケーションモダナイゼーションが重要であることを伝えなければなりません。従業員がモダナイゼーションの取り組みに早くから理解を示せば、それだけ開発者とのコラボレーションを容易に促進できるようになり、アプリケーションのアップデートを妨げるものがなくなります。
アプリケーションとITのモダナイゼーションに着手する方法
アプリケーションとITのモダナイゼーションを開始するには、まず最も重要なレガシーアプリケーションを評価し、課題を特定します。これには、パフォーマンスの問題やセキュリティの脆弱性など、さまざまな課題があります。課題を特定したら、拡張機能や新機能によって新しい価値を生み出す方法について考え、アプリケーションモダナイゼーションのどのアプローチが自社にとって最適かを検討します。
価値の高いすべてのレガシーアプリケーションに一度に取り組むのではなく、まずは1つの問題を解決してレガシーアプリケーションのモダナイゼーションの価値を実証し、社内の支持を獲得しましょう。これを達成できれば、モダナイゼーションの取り組みを組織の他の部分にも容易に拡大できるようになります。
アプリケーションモダナイゼーションの重要なコンポーネント
アプリケーションモダナイゼーションの重要なコンポーネントには、以下のものがあります。
- クラウド:アプリケーションモダナイゼーションとは、つまり、クラウドコンピューティングを通じてクラウドの効率性を活用することです。このように聞くと、ほとんどの人がパブリッククラウドを思い浮かべるでしょう。しかし、プライベートクラウド、ハイブリッドクラウド、そしてマルチクラウドの戦略も同じように重要です。組織によっては、セキュリティに関する懸念やアーキテクチャに関する制約などのさまざまな理由から、オンプレミスのデータセンターからパブリッククラウドに直ちに移行することに抵抗がある、あるいは準備ができていない場合もあるでしょう。その他のクラウドモデルを選択すれば、組織の特定のニーズや懸念事項に基づいたモダナイゼーション(および関連するクラウド移行)戦略を策定できます。
- サーバーレス:サーバーレスとはサーバーレスコンピューティングの略であり、サードパーティのクラウドプロバイダーが組織のソフトウェアアプリケーションをホストし、それらを実行するためのリソースを動的に割り当てるモデルを指します。これによって組織の開発者は、アプリケーションの実行に必要な独自の物理マシンや仮想マシン(VM)、オペレーティングシステム、ネットワークなどのインフラコンポーネントを管理する必要がなくなり、アプリケーションの改善に専念できるようになります。
- コンテナ:ソフトウェアコンテナを使用すると、開発者はアプリケーションコード、設定ファイル、ライブラリ、システムツールなど、アプリケーションの実行に必要なすべてのものを自己完結型ユニットにパッケージ化し、あらゆる環境に移動させて実行することができます。コンテナは、オープンソースシステムであるKubernetesなどのコンテナオーケストレーションツールを使用して管理したり拡張したりできます。また、コンテナを使用することで、マイクロサービスを作成してアプリケーションを単一機能のモジュール単位に分割し、必要なときだけアクセスするようにできます。これによって開発者は、アプリケーション全体ではなく特定のサービスだけを修正して再デプロイできます。
アプリケーションモダナイゼーションの手順
以下に、アプリケーションモダナイゼーションの包括的なロードマップを作成する一般的な手順を示します。
- モノリシックを分解する:モノリシックアプリケーションでは、緊密に結合された少数のバイナリの中にすべての機能が含まれています。したがって、最初の手順はアプリケーションをさまざまな機能に分解することです。モノリシックを機能単位に分解することで、仮想環境の構築が容易になり、機能の各部分を置き換えるためにどのマイクロサービスが必要なのかを判断することができます。
- アプリケーションとインフラを分離する:モノリシックアプリケーションのデータ、ネットワーク、セキュリティ構成は基盤となるインフラと密接につながっており、そのことが個々のコンポーネントのアップグレードを困難にしています。これらのアプリケーションをモダナイズするには、それぞれの機能を独立したコンポーネントに抽象化し、コードを書き換えることなく、アプリケーションをクラウド環境、サーバー、コンテナツールなどの間で移行できるようにする必要があります。さまざまな理由から、この作業を行う際にはポータビリティを考慮することが重要です。
- アプリケーションコンポーネントのカタログを作成する:アプリケーションを分解すると、機能別コンポーネントのカタログを管理しながら、アプリケーションをマイクロサービスに分割できるようになります。これにより、DevOpsチームは必要に応じてコンポーネントの組み合わせを選択し、テストやデプロイのための複雑な環境のクローンをわずかな時間で作成できます。また、アプリケーションコンポーネントのカタログを作成することにより、パフォーマンスのテストから移行まで、ほとんどすべてのプロセスの時間を短縮できます。
- セキュリティを組み込む:セキュリティは他のアプリケーションコンポーネントと同様に扱われるべきであり、最初から組み込んでおく必要があります。これにより、継続的デリバリープロセスがスムーズになり、アプリケーションのデプロイと同時に保護が開始されます。
- DevOpsと統合する:アプリケーションを継続的デプロイツールやDevOpsなどのビジネスプロセスと統合することで、将来のアップグレードをはるかに容易に実行できるようになります。また、インフラのプロビジョニングに現在使用しているオーケストレーションツールと接続することにより、アプリケーションをオンデマンドでプロビジョニングできるようにしておきます。
アプリケーションをモダナイズするための包括的なロードマップには、モノリシックの分解、アプリケーションの分離、コンポーネントのカタログ作成、セキュリティの組み込み、DevOpsとの統合などが含まれます。
アプリケーションはビジネスを成功させるための柱です。パフォーマンスの低さや時代遅れのインターフェイスが組織の足かせになってはなりません。アプリケーションのモダナイゼーションはレガシーアプリケーションに新たな命を吹き込み、今後何年にもわたってそれらのアプリケーションがビジネスニーズを支えられるようにします。
Splunkによる2023年の予測
Splunkのリーダーが、企業が直面している最も重要なテクノロジートレンドについて考察します。