クラウド アプリケーション (SaaS) の設計方法 クラウド アプリケーション (SaaS) の設計方法 クラウド向けのアプリケーションの設計は、オンプレミス向けのアプリケーションの設計とどう違うのでしょうか? アプリは常に最新です。これは多くのネイティブ アプリにとって大きな変化です。クラウドでは、顧客は通常、アプリケーションが常に最新の状態であることを期待します。これをアーキテクトとして考えると、アプリケーション ビットを更新できるだけでなく、顧客を関与させずに顧客データをアップグレードできることを意味します。つまり、彼らにとっては完全に透明です。 これらは違いのほんの一部です。しかし、その考えは理解できるでしょう。 SaaS の設計上の重要な考慮事項 同じアプリケーションを複数のクラウドまたはオンプレミスにデプロイしますか?この場合、クラウド ベンダー固有のサービスは一切使用せず (または最小限に抑え)、IaaS サービスに固執することが合理的である可能性があります。 · サービスを選択する際には、コストを重要な考慮事項とする必要があります。たとえば、クラウド ベンダーによって管理されている一部の PaaS サービスは、コストを削減するためにチーム自身で管理できます。これはすべてのサービスに当てはまるわけではないかもしれませんが、検討する価値はあります。 · チームの専門知識を念頭に置いてください。クラウド サービスを利用するには何が必要ですか?また、チームがインフラストラクチャの保守も行う場合は、どのようなスキルが必要ですか? 障害を考慮した設計: フォールト トレランスと高可用性を考慮したアプリケーションの設計は、クラウドの基盤です。アプリケーションに問題が発生することを想定して、ユーザーへのサービス提供を継続できるようにする方法を説明します。これらは、アプリケーション障害またはインフラストラクチャ障害である可能性があります。クラウドベンダーは、ユーザーを支援する便利な機能をいくつか提供しています。 ロード バランサーを使用する: 負荷分散の目的で、アプリケーション ノードをロード バランサーの背後に配置し、1 つ以上のノードがダウンした場合でも、他のノードによってアプリケーションが処理されるようにすることができます。 · 地理的に分散されたアプリケーション: 多くのクラウド プロバイダーは、複数の地理的領域にアプリケーションを分散する機能を提供しているため、1 つの領域が影響を受けた場合でも (たとえば、自然災害により)、他の領域からアプリケーションを提供できます。たとえば、AWS は複数のアベイラビリティーゾーンにわたるアプリケーションのデプロイをサポートしています。 アプリケーションをモジュール化します。前のセクションで説明したように、個別にデプロイおよび管理できるコンポーネントを分離すると、アプリケーションのフットプリントが削減され、インフラストラクチャ コストが削減されます。これらのコンポーネントの一部をマイクロサービスにすることも検討できます。マイクロサービス アプローチは、アプリケーションの外部に他の潜在的な消費者がいる場合に特に役立ちます。ただし、これは、不要なコンポーネントをすべて作成するという意味ではありません。したがって、1 つのアプローチは、個別にデプロイできるコンポーネント (コア アプリケーションとバックグラウンド ジョブなど) を作成することです。 セキュリティ: セキュリティは、インフラストラクチャの保護からアプリケーションまで、さまざまな側面をカバーします。重要な側面としては、必要なポートのみが開いていることを確認すること、リソースに対して可能な限り最小限の権限を使用すること、適切なロールベースのアクセス制御を実施すること、暗号化を使用することなどが挙げられます。セキュリティは、1 回限りの取引として考えるべきではありません。これは継続的なプロセスであり、時間の経過とともに改善および開発される必要があります。 マルチテナント: クラウドで実行する主な利点の 1 つは、同じアプリケーション インスタンスを使用して複数の顧客にサービスを提供できることです。これにより、セキュリティと規制上の目的で各顧客のデータが分離されることを保証するアプリケーション設計にいくつかの明らかな課題が生じます。一部のチームでは、顧客ごとに個別のデータベースを使用するなど、顧客ごとに異なる永続ストレージ インスタンスを使用することを選択します。また、行レベルの識別子を使用してデータを分離することを選択する人もいます。どのようなアプローチを採用する場合でも、アーキテクチャがスケーラビリティとセキュリティの要件を満たしていることを確認することが重要です。たとえば、顧客ごとに 1 つのデータベースを使用することを選択した場合、単一の RDS インスタンスで複数のデータベースをホストできます。また、容量が不足した場合は、別の RDS インスタンスを立ち上げることができます。 ゼロ/最小限のダウンタイムとシームレスなアップグレード: 信じられないかもしれませんが、多くの顧客は SaaS アプリケーションのダウンタイムがゼロまたは最小限であることを期待しており、これらのダウンタイムはアプリケーションを構築した同じ会社によって管理されることが多いため、アップグレードはシームレスである必要があります。問題は、特に SaaS アプリケーションに変換された場合、アプリケーションがアップグレードをスムーズに処理するように設計されていない可能性があることです。考慮すべき重要な側面は 2 つあります: a) アプリケーション ビットとファイルの展開、b) 永続ストレージのアップグレードの処理。アプリケーション ビット戦略を展開する場合、ブルー/グリーン展開などの戦略を使用できます。ブルー/グリーン展開では、展開が成功した場合、新しいバージョンが新しいスタックに展開され、テストされ、有効化されます。古いスタック リソースは廃止して後で再利用できます。シームレスなアップグレードを実現する 1 つの方法は、基盤となるデータ モデルを n_1 互換にすることです。つまり、展開するリリースにデータ モデル バージョン n がある場合、そのデータ モデルは以前のデータ モデル バージョン (n - 1) と下位互換性があり、アップグレードによってデータが壊れることはありません。それをどうやって保証するのですか?これには、開発サイクル全体を通じて規律を守り、列を削除しない、データ移行のニーズに対応するために必要なアップグレード スクリプトを提供するなどの特定のガイドラインに従うことが必要です。また、アップグレードが成功しなかった場合は、アップグレードのロールバックがサポートされます。これで、データの移行とロールバックが伴うため技術的に難しいだけでなく、展開が大幅に遅くなる可能性があることがおわかりいただけたと思います。したがって、アプリケーションのニーズに適したオプションを慎重に評価し、それに応じてソリューションを実装する必要があります。 SaaS における DevOps の考慮事項 継続的デリバリー: DevOps パイプラインは、チェックインされたコードを取得してビルドを生成し、さまざまな段階 (QA、パフォーマンス、最終的な合否チェック、本番環境への展開) を自動的に実行できる必要があります。これには、複数のパイプライン (通常はステージごとに 1 つ) と、各ステージにビルドをプッシュするためのスーパー パイプラインが必要になる場合があります。これらのパイプラインの開発には多少時間がかかるかもしれませんが、ユーザー パイプラインが詳細を気にしなくても済むように、各パイプラインの契約の定義を開始することをお勧めします。最終的な目標は、手を邪魔するものから完全に解放するか、できる限り邪魔するものに近づけることです。 DevOps の変更を含むすべてのリリースにバージョン管理を使用します。アプリケーション コードの場合、通常はソース管理のマスター ブランチを使用するのが最適です。ただし、DevOps の変更についても同様に同じことを行うことが重要です。たとえば、インフラストラクチャの変更を展開する場合、それらの変更もソース管理にチェックインし、テストしてから、本番環境にプッシュする必要があります。 アジャイル インフラストラクチャ: SaaS で成功するには、インフラストラクチャがアジャイルであり、需要の変化に対応できることを確認する必要があります。需要が増加すると適切な層をスケールアップし、需要が減少すると不要なリソースを解放します。適切なバランスをとるには、ある程度の実験とテストが必要です。たとえば、AWS の自動スケーリングを使用して、インフラストラクチャを自動的にスケールアップ/スケールダウンできます。 SaaSに関するその他の考慮事項 · 収益化モデル: SaaS は収益化モデルにも影響します。オンプレミスでは、一定数のライセンスに対してペナルティが課せられる可能性がありますが、SaaS では、ビジネスに最適なモデルを再考する必要があるかもしれません。サブスクリプションベースのモデル、利用ベースのモデル、ハイブリッド モデル、それともまったく別のモデルを使用する予定ですか? クラウドベースまたは SaaS アプリケーションの設計について理解が深まったと思います。さまざまな関係者が関与するアプリケーションが実稼働状態になるのを見るのは、確かに充実した経験です。私がいつも言っているように、「クラウドは目的地ではなく旅なのです」。だから学び続けて、進化し続けてください。 |
<<: Sogou オープンソースフレームワークが自社開発の C++ Kafka クライアントをリリース
>>: H3Cがコアルーター市場に本格進出し、その強さが再び証明される
最近、プレーンテキスト リンクは役に立たないという記事を読みました。その記事で示された証拠は、ユーザ...
11月16日、万達グループは正式に北京市裁判所に訴訟を起こし、微信(ウィーチャット)の公式アカウント...
justhost.asiaは、香港データセンターの帯域幅が200Gbpsにアップグレードされたことを...
最近、米国国防総省は、マイクロソフトと締結していた100億ドル(10年間)のクラウドコンピューティン...
nofollow タグについて話すとき、ウェブマスターの最初の反応は、フレンドリー リンクの nof...
現在、通信事業者は、第18回全国代表大会期間中のネットワークの円滑な運営を確保するため、ネットワーク...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン9月19日、馬慧は「一部のウェブサイトの...
人類の歴史は、言語、文字、印刷、電信、電話、ラジオ、テレビ、コンピューター、ネットワーク技術という ...
2012年8月、王志全氏は北京市石景山区瑞大ビル付近にあったKuba.comを退職し、西に4キロ離れ...
クラウドの利点は、弾力性、使いやすさ、そしてコスト効率の向上です。 SaaS (Software a...
適切なツールがなければ、IT サービスの最適化を実装するのは難しい場合があります。汎用サーバーのサー...
自動化された分析ワークフローは、企業がより多様な方法でデータを操作して予測を行うのに役立ちます。 O...
クラウド コンピューティング サービスの発展と、それが新興テクノロジーを推進する能力を持つことに疑問...
ウェブマスターは長い間、自分のウェブサイトを宣伝する際の PR を向上させる主な手段としてリンク交換...
先日、世界最高峰の人工知能カンファレンス「ICML 2020」において、発表された論文の結果が発表さ...