@Leonの提案は、アプリケーションフレームワークの観点からは優れていると思いますが、クラウドの方法論の観点からここに書きたかったので、さらに追加します。
SaaSを選択したので、アプリケーションとデータをすべてクラウドにまとめながら、クラウドで完全に移動していることは間違いありません。これはすばらしいことです。
クラウドアプリケーションにはいくつかのレイヤーがあり、理解するためにクラウドサービススタックがどのように見えるかを見てみましょう。Windows Azureを例にとると、次のようになります。
- アプリケーションがWebサーバーで実行される(または実行されない)Computeがあります。
- キーと値のペアを連続して格納し、それらに非常に高速にアクセスするために使用できるAzureテーブルストアがあります。
- Azure Queueを使用すると、クラウドアプリケーションのさまざまな部分を分離できるため、クラウドアプリケーションをさまざまなテクノロジーで簡単に構築し、トラフィックのニーズに合わせて簡単に拡張できます。
- OpenIDまたはADを介してユーザーを認証するためのアクセス制御サービスがあります
- クラウドまたはサードパーティのオンプレミスで他のサービスを接続するためのサービスバスがあります。
- Webベースのフラットファイルサーバーとして使用するAzureBlobストレージがあります
- Azure Cache(クラウドでスケーリングするためのインメモリキャッシュビルド)があります
- クラウドデータベースとしてSQLAzureがあります
- 探索して使用できるサービスは他にもたくさんあります
したがって、アプリケーションを従来のWebホスティングからクラウドに移行する場合は、これらのさまざまなクラウドサービスを利用して、必要に応じてアプリケーションを拡張し、多くの費用を節約する方法を検討する必要があります。
クラウドのアプリケーションで、次のように試してみます。
- アプリケーションロジックを可能な限り小さくしてください
- 静的コンテンツをコンピューティングの外部に保持する
- アプリケーションのスケールアウト時に高速アクセスのためにクラウドベースのキャッシュを使用する
- 可能で適切な場合は、データを従来のRDBMSデータベースからNoSQLフレームワーク(キーと値のペア、ドキュメントなど)に移動してコストと柔軟性を節約します
- 他の利用可能なサービスを利用して、アプリケーションの複雑さを軽減します
上記の側面を念頭に置いて考えると、高速でコストを節約できる真のクラウドベースのアプリケーションを作成できます。