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