レガシー・アプリケーションの欠点
レガシー・アプリケーションは、モノリシック・アーキテクチャ・モデルに基づくレガシー・アプリケーション開発手法を使用して作成されます。つまり、アプリケーションのコード、サービス、その他のコンポーネントは高度に統合されているため、アプリケーションの拡張や環境の変化への対応が困難になります。
また、モノリシック設計は、アプリケーションの一部に障害が発生した場合、アプリケーション全体が障害を負うことを意味します。レガシー・アプリケーションのトラブルシューティングにも時間がかかります。開発者は、アプリケーション全体をデバッグする必要があり、その結果、ダウンタイムが増大します。
このような相互接続された設計により、レガシー・アプリケーションは非効率的、不安定、デジタル変革の課題や目的を満たすのに適さないことがよくあります。俊敏性と革新性を維持するためには、モダン・アプリケーションが必要です。
モダン・アプリケーション
モダン・アプリケーションは、アジャイルな開発手法と DevOps プラクティス、モジュラー・アーキテクチャ、サーバーレスの運用モデルを使用して構築されています。レガシー・アプリケーションよりも優れた俊敏性、スケーラビリティ、移植性、耐障害性を提供します。これにより、市場投入までの時間と総所有コストを削減しながら、イノベーションを加速できます。
モダン・アプリケーションは、オンデマンドで拡張し、数百万人のユーザーに対応し、オンプレミスやクラウドベースの環境を含む複数のプラットフォームで実行できます。モダン・アプリケーション開発プロセスは、レガシー・アプリケーション開発に関連する運用オーバーヘッドの多くを自動化します。その結果、ビジネス・ロジックに集中し、高品質のアプリケーションをリリースできます。
レガシー・アプリケーションとモダン・アプリケーションの 4 つの主な違い
開発ライフサイクルの短縮
従来の方法で構築されたレガシー・アプリケーションは、開発や更新に時間がかかります。開発サイクルや新機能のリリースには、数か月から数年かかる場合があります。
ウォーターフォール方式のような従来の開発プロセスは、連続したプロセスに従います。プロジェクト全体の要件を定義し、コードが書き込まれるプロジェクト・ドキュメントとアーキテクチャ・モデルを作成することから始めます。要件が変更された場合は、開発者が新しい要件をコーディングできるように、このプロセス全体を見直す必要があります。そのため、迅速なソフトウェアのリリースが困難になります。
レガシー・アプリケーション開発とモダン・アプリケーション開発の最大の違いは、アジャイル開発プラクティス、DevOps、継続的インテグレーション/デリバリ(CI/CD)プロセスを使用することです。開発者は短期間で継続的なサイクルでアプリケーションをリリースできます。
アジャイルと DevOps の実践は、開発チームと運用チーム間の緊密な連携を促進します。これにより、品質、安定性、セキュリティを犠牲にすることなく、アプリケーションを本番環境に迅速かつスムーズに転送できます。継続的インテグレーション(CI)は、手作業および反復的な構築、テスト、展開プロセスを自動化します。継続的デリバリ(CD)は、アプリケーションがリリースされるまでパイプラインの段階をシームレスに移動します。
これらのアジャイルなプラクティスとテクノロジーは、アプリケーション開発のライフサイクルを短縮します。
クラウド・インフラ上に構築
レガシー・アプリケーションは、オンプレミスの開発と展開のために設計されたサーバー中心のインフラを使用して構築されています。通常は OS に依存しており、サーバーやネットワークのハードウェア、データベース、ストレージ・リソースなどの特定の環境が必要です。
アプリケーションとその基盤となるオペレーティング・システム、ハードウェア、ストレージ、サポート・サービス間の依存関係が密接であるため、アプリケーションを新しいインフラに移行したり、拡張したりすることが困難です。レガシー・アプリケーションの基盤となるインフラが老朽化するにつれ、保守が難しくなり、コストも高くなります。
モダン・アプリケーションは、クラウド環境向けに構築されており、柔軟性と拡張性を高めます。クラウドネイティブ・アーキテクチャでは、開発者はクラウド・プロバイダのコンピュート、メモリー、ストレージなどのマネージド・サービスを使用して、アプリケーションを依存関係から抽象化することができます。開発者は、STaaS(サービスとしてのストレージ)、CaaS(サービスとしてのコンテナ)、FaaS(サービスとしての機能)などのクラウド・サービスを使用して、アプリケーションのスケーラビリティを高めることができます。
クラウド・ソリューションは、さまざまな環境にリソースを分散させることで、アプリケーション開発のスピードを向上させます。リソースは、Amazon や Google がサポートするパブリック・クラウド、セキュリティ強化のためのプライベート・オンプレミス・クラウド・ソリューション、ハイブリッド・クラウド・アーキテクチャを使用して、両世界の長所を活かすことができます。
サーバーレス・クラウド・コンピューティング・モデルでは、開発者はアプリケーション開発のためにサーバーをプロビジョニングしたり、リソースを拡張する必要はありません。クラウド・ベンダーがこれに対応します。その結果、開発者はコードを本番環境に迅速にプッシュできます。サーバーレスのクラウド・アーキテクチャにより、アプリケーションは需要に対応し、必要に応じてスケールアップ/スケールダウンできます。
サービスベースのアーキテクチャ
レガシー・アプリケーションは、通常、アプリケーションのコードベースとサービスが単一の展開パッケージに組み込まれた、単一層のソフトウェア・アプリケーションです。この緊密な結合により、サービス間の依存関係が生じ、レガシー・アプリケーションはコードベースの増大に伴い、拡張や更新がより困難になります。
個別の要素を明確に区別することなく、アプリケーションの一部が更新されたときに、アプリケーション全体の新しいバージョンを展開する必要があります。同様に、アプリケーションの 1 つの要素のバグは、アプリケーション全体の機能に影響を与えます。
モダン・アプリケーションは、レガシー・システムの緊密に統合されたアーキテクチャを、API を介して通信できる、疎結合のサービスベースのアーキテクチャに置き換えます。マイクロサービスと呼ばれるモジュール式の独立コンポーネントで構築されており、アプリケーションを小規模なサービスに分割するために使用されます。各サービスは個別に開発されているため、より頻繁で独立した更新をリリースできます。
マイクロサービスは、コンテナ、マイクロサービスの実行に必要な全ての要素を含むランタイム環境で実行されます。コンテナ化により、特別なインフラなしでコンテナ化されたサービスを実行可能なプラットフォーム上でマイクロサービスを実行できます。各マイクロサービスには専用のデータベースが備わっているため、モダン・アプリケーションにはデカップリングされたデータストアのメリットがあります。データとマイクロサービスの分離は、開発中の機能のニーズに最適なデータベースを選択できることを意味します。
自動プロセス
レガシー・アプリケーションでは、IT チームはサーバー、ネットワーク、ストレージ構成のプロビジョニング、管理、保守を手作業で行う必要があります。人間は、コンピュータよりも問題の診断が遅いことがあります。また、複雑な状況では是正措置を適切に実施できないこともあります。その結果、手作業によるプロセスは従来のリリース・パイプラインを遅らせます。手作業で行う各ステップは、エラーや遅延の機会をもたらします。
モダン・アプリケーション開発には、ソフトウェア・リリースを高速化する自動リリース・パイプラインがあります。モダン・アプリケーションは、開発ライフサイクル全体を通じて自動化されたプロセスを使用します。この自動化は、ヒューマンエラーを削減し、アプリケーションの問題を自動的に特定して解決することで、運用効率を向上させます。
モダン・アプリケーションでは、処理能力、メモリ、ストレージ容量のためのクラウド・インフラの自動スケーリングなど、さまざまな方法で自動化が使用されています。IaC(コードとしてのインフラ)などの技術により、開発者は、技術スタックやアプリケーション開発環境全体をプロビジョニングするために自動的にデプロイできるテンプレートを作成できます。
アプリケーション・プロセス自体では、DevOps パイプライン内で自動化が使用され、コードの構築、テスト、展開の自動化が促進されます。モダン・アプリケーションは、従来の開発の手作業ステップを自動化し、アプリケーション開発を高速化する反復可能な CI/CD プロセスを作成します。
ピュア・ストレージと DevOps でレガシーを脱却
レガシー・アプリケーションでは、速度と柔軟性に関する今日の要件を満たせないことがよくあります。イノベーションを迅速に実現し、顧客に価値を提供するためには、モダン・アプリケーションを活用する必要があります。
DevOps とピュア・ストレージの FlashBlade//S オールフラッシュ・ストレージは、モダン・アプリケーションのメリットを活用し、ソフトウェア・デリバリを加速します。
- ピュア・ストレージのオールフラッシュ速度により、コンテナ向けにエンタープライズ・グレードの永続的なストレージ・アズ・ア・サービスを提供します。
- Purity スナップショットと実世界の本番運用データで環境をトラブルシューティングします。
- Docker、Kubernetes などとシームレスに統合し、CI/CD パイプラインを推進します。
さっそく試してみませんか? FlashBlade を今すぐテストドライブして、実用化しましょう。