サーバーレスの変更とR&D効率の革新

ヘッドpicture.jpg

出典|サーバーレス
公式アカウント作成者| Yang Haoran(怒っていない)

企業にとって、サーバーレスアーキテクチャには大きなアプリケーションの可能性があります。クラウド製品の改善、製品の統合および統合機能の強化、およびソフトウェア配信プロセスの自動化機能の改善により、サーバーレスアーキテクチャでは、企業の俊敏性が10倍に向上する可能性があると考えています。この共有は、主に次の4つの側面に分けられます。

1. DevOpsの課題とDevOps実装のコストを削減する方法は?
2.なぜサーバーレスはクラウド開発の必然的な結果なのですか?
3.サーバーレス+ DevOps =?
第四に、実際のケースシェアリング

DevOpsの課題

1.DevOpsの課題

アプリケーション配信のプロセス全体には、通常、開発、テスト、運用と保守の3つのリンクが含まれます。従来の組織構造では、3つの異なるチームに対応することがよくあります。これら3つのリンクにはそれぞれ独自の焦点がありますが、実際には、アプリケーション配信プロセス全体をスムーズかつ効率的にし、アプリケーションを起動した後も可用性の高い状態に保つために、3つのチームが相互に対話する必要があります。存在の壁が壊れた。

ここの壁は、組織構造の疎外によってもたらされる障害であるだけでなく、3つの領域の異なる焦点でもあります。たとえば、開発ではテスト容易性と運用および保守に注意を払う必要があります。これらはアプリケーションのアーキテクチャ設計と開発に大きな影響を与えます。開発者がコードのテスト容易性を十分に考慮しないと、多くの原因になります。フォールトインジェクションやファインフローコントロールの実装方法などの大きな問題は、開発時に明確に考慮する必要があります。

運用・保守についても同様です。開発時には操作性も考慮する必要があります。たとえば、開発時には、サービスが実際にオフラインのときにデータを失わないようにスムーズにする方法を検討する必要があります。同時に、この設計も非常に確実かつ安全に接続し、運用・保守の効率を向上させるためには、運用・保守システムとの密接な連携が必要です。

アリババの内部障害の多くは、開発と運用と保守の間の設計における情報の不一致によっても引き起こされます。たとえば、開発と設計の間に高信頼性の3つのコピーが保証されますが、運用と保守の側では、コピーが配置されていると考えるかもしれません。マシンはサービスを提供せず、誤ってオフラインになりました。

したがって、DevOpsには実際には2つの意味があります。1つは開発、テスト、運用と保守をチームにすることです。2つ目は、チーム全体の心を統一する必要があります。これはDevOpsの真の課題でもあります。

1.png

2.DevOpsチャレンジ-開発

DevOpsの各側面で何を考慮する必要があるかについての簡単なレビュー。開発段階では、最初にビジネス要件とシナリオを整理し、要件をシステム設計に変換する必要があります。同時に、データベースが単一のポイントおよびボトルネックにならないようにデータモデルを設計する方法を検討する必要があります。アリババのようなインターネット企業では、アプリケーションは多数のユーザー訪問を伴うため、複雑なバランス、フォールトトレラントな設計、フロー制御などを考慮する必要があります。

マイクロサービスアーキテクチャが採用されており、アプリケーションが複数のサービスで構成される場合は、サービス管理も考慮する必要があります。以上のことをすべて考慮した上で、システム設計に変換し、最終的に開発、デバッグ、ユニットテストを行い、完了後、テストリンクにアプリケーションを引き渡すことができます。

2.png

3.DevOpsチャレンジ-テスト

ソフトウェアのすべての側面の品質を保証するために、テスト時に多くの側面と寸法を考慮する必要があります。テストには、統合テスト、エンドツーエンドE2Eテスト、パフォーマンステスト、ストレステスト、耐障害性テスト、互換性テスト、破壊テストなどが含まれます。

3.png

4.DevOpsチャレンジ-運用と保守

アプリケーションがテストに合格すると、成果物が作成されます。この成果物はリリース可能であると見なされ、アプリケーションのグレースケールリリース、アップグレードロールバック、サーバーのオンラインとオフライン、監視などの後続の操作とメンテナンス作業が必要になります。アラーム、セキュリティパッチのアップグレード、ネットワーク構成、運用監査、実稼働環境の排水など。

4.png

5. DevOpsの課題-DevOps実装のコストを削減する方法は?

DevOpsに含まれる作業項目を詳しく見てみると、柔軟で信頼性の高いアプリケーションを構築したい場合、考慮すべき点が多く、DevOpsを実装した後にのみ必要であると実感できます。これは、同じチームがアプリケーションのライフサイクル全体で検討する必要があるものになっています。これには、非常に高いチームの精神と能力が必要です。

DevOpsアプリケーション配信パイプラインには多くのリンクが含まれています。これらのリンクをスムーズに接続して自動化を実現する方法も非常に重要な側面です。

5.png

DevOpsの課題を検討した後、Alibaba内および業界全体の慣行から、プラットフォームとツールを使用してDevOpsの複雑さを軽減する必要があることがわかります。

6.png

サーバーレス入門

1.クラウドトレンド

サーバーレスを導入する前に、まずクラウドの開発動向を確認し、次にサーバーレスがクラウド開発の必然的な結果である理由について説明します。

過去10年間で、クラウドコンピューティングは大きな発展を遂げ、ユーザーはAPIを介してほぼ無制限のコンピューティング能力を簡単に取得でき、これらのコンピューティング能力は仮想マシンを介して提供されます。そのようなモデルは多数あります。このモードの利点は、アプリケーションの元の開発および操作環境と互換性があることです。このモードでは、従来のレガシーアプリケーションを非常にスムーズにクラウドに移行できます。

クラウドの最初の段階はインフラストラクチャのクラウド化です。これがクラウドホスティングモデルです。クラウドストレージとネットワークインフラストラクチャに基づいてアプリケーションを構築する場合、このモデルのコアバリューはリソースの弾力性とコストにあります。次の段階では、クラウドシステムはインフラストラクチャをはるかに超えており、さまざまな分野で多くのクラウドサービスが出現していることがわかります。したがって、今日、クラウドサービスの機能を使用して、ホイールを再発明するのではなく、ビルディングブロックを使用してアプリケーションをより高速に構築する方法を検討する必要があります。これは、クラウドネイティブモデルです。

7.png

2.クラウド製品システムは急速にサーバーレスになりつつあります

現在、主流のクラウドコンピューティングメーカーの製品システムは急速にサーバーレスになりつつあります。これは将来の予測ではなく、実際に起こっている事実です。下の図のデータは、AWS、Microsoft、Alibaba Cloud製品によってリリースされた新機能または新サービスフォームの統計に基づいています。新サービスのほとんどがサーバーレスになっていることがわかります。

8.png

3.クラウドプログラミングモデル

クラウドコンピューティングは多数のサービスを生み出してきました。効率の観点から、これらのクラウドサービスは、より高レベルの抽象的なサーバーレス形式であり、非常に意味のあるものになります。クラウドプログラミングモデルの観点からクラウド製品システムを再検討すると、最下層はIaaSとコンテナの2つの部分で構成されるインフラストラクチャ層であることがわかります。インフラストラクチャの上には、クラウドネイティブアプリケーションオペレーティングシステムがあります。K8sは、このレイヤーの事実上の標準であり、基盤となるIaaSインフラストラクチャを適切に管理できます。非常に豊富なAPIが、フルマネージドクラウドサービスシステムであるオペレーティングシステムに登場しました。アリババクラウドの製品システムを見ると、アリババクラウドはデータベース、ビッグデータ、ミドルウェアなどの豊富な製品システムを提供していることがわかります。これらはすべてサーバーレスのフルマネージドモデルで提供されます。

このように多数のクラウドAPIがあるため、今日の問題は、これらのサーバーレスクラウドサービスおよびクラウドAPIと非常に緊密に接続できる一般的なコンピューティングフレームワークを設計して、顧客が弾力性のある可用性の高いアプリケーションを迅速に構築できるようにする方法です。そのため、サーバーレスコンピューティングがフレームワークレイヤーに登場しました。これの主な理由は、ユーザーがアプリケーションの構築、運用、保守の効率を向上させ、顧客が分散型、デジタル、インテリジェントな新しいものを構築できるように、クラウドAPIと緊密な化学反応を起こす必要があるためです。クラウドネイティブアプリケーションの世代。

9.png

4.クラウドホスティングとサーバーレスアプリケーションの違い

これは、クラウドでホストされるアプリケーションとサーバーレスアプリケーションの最も重要な違いの比較です。アプリケーションの場合、構築モデルは、基盤となるインフラストラクチャ管理、中間の外部サービス統合、および上位のアプリケーションロジックの3つの層に分割できます。クラウドホスティングモデルを採用した場合、アプリケーションは実際にはインフラストラクチャ層で構築されます。アプリケーション構築の抽象化レベルは比較的低いため、多くの作業が必要になります。ユーザーはさまざまなコンポーネントやサービスを統合する必要があり、多くの決定と実装と配信が遅くなり、多くのことを考慮する必要があり、運用と保守で多くの反復作業が発生します。

ユーザーがサーバーレスモデルを使用してアプリケーションを構築する場合、これは上位レベルのAPIでアプリケーションを構築するのと同じですが、クラウドサービスプロバイダーが接着ロジックとインフラストラクチャ管理を担当し、ユーザーが必要とする統合と意思決定のコストは比較的低くなります。考慮する必要があるのは、ビジネスロジックと要件をクラウドサービスに適合させてアプリケーションを構築する方法です。非常に効率的なクラウドAPIに基づいてアプリケーションを構築する利点は、構築コストが非常に低く、毎日および1時間ごとに配信でき、将来の運用と保守の負担を大幅に軽減できることです。

10.png

5.サーバーレスコンピューティングとは何ですか?

サーバーレスコンピューティングには4つの特徴があります。1つは、クラウドコンピューティングインフラストラクチャを維持する必要がないこと、およびアプリケーション構築の抽象化レベルが向上してより効率的になること、2つ目は、将来のデータ駆動型ロードセンシングアルゴリズムを通じて実現できるリアルタイムのエラスティックスケーリングを実現できることです。この実現は、非常に低いレイテンシーを満たすだけでなく、高いリソース使用率も実現します。第3に、メータリングモードは、非常にきめ細かいオンデマンドモデルを提供し、第2レベルのメータリングと完全なオンデマンド支払いモデルを実現できます。ユーザーの場合、リソース使用率は100%です。最後に、高い可用性を実現でき、この機能はプラットフォームレイヤーに組み込まれています。

11.png

6.アリババクラウドサーバーレス製品システム

説明は次のとおりです。サーバーレスコンピューティングは、Alibaba Cloudのサーバーレス製品の一部にすぎません。さらに、ストレージ、API、分析、ミドルウェアも含まれています。したがって、この観点からすると、サーバーレスはそれほど新しい概念ではありません。初期のOSSオブジェクトストレージはサーバーレス製品です。クラウド製品システムがサーバーレスになりつつあることがわかりますが、近年、ファンクションコンピューティングなどの一般的なサーバーレスがあります。コンピューティングプラットフォームは、サーバーレスシステム製品を接続してサーバーレスアプリケーションを構築できます。

12.png

サーバーレスDevOps

これらのサーバーレス機能が利用可能な場合、これらの機能をDevOpsと組み合わせる方法は?

1.インフラストラクチャの管理と運用および保守を簡素化します

次の図は、可用性の高いアプリケーションを構築する方法の観点から詳細を示しています。ここで、アプリケーションモジュールは、インフラストラクチャ、ランタイム、データ、およびアプリケーションを含む4つの領域に分けられます。インフラストラクチャ層は、障害処理などのマシン関連の操作を処理する必要があります。実行時には、アプリケーションリソースの分離とフロー制御が必要です。データレイヤーは主に、データベーステーブル構造の設計方法、キャッシュ戦略の設計方法、負荷分散の実現方法、水平方向の拡張のボトルネックがないことを確認する方法など、データベースとキャッシュに関連する必要があります。

アプリケーション層では、コードパッケージエラー、構成エラー、異常なハートビートなどのアプリケーション関連の操作を処理する必要があります。下の図の青い破線のボックス内の部分は、プラットフォームによって完全に処理され、ユーザーは気付かない可能性があります。青い実線のボックスは、プラットフォームがユーザーの多くの作業を支援したことを意味しますが、ユーザーは依然として特定の決定を認識して行う必要があります。赤いボックスは、ユーザーが管理する必要のある部分。障害耐性の観点から、プラットフォームは、マルチAZ災害耐性、迅速な復元力、組み込みのフロー制御機能、マルチレベルおよび多次元の監視およびアラーム機能など、非常に強力な機能を提供していることがわかります。これらの機能により、ユーザー管理インフラストラクチャの複雑さが大幅に軽減されます。

13.png

2.アジャイルアプリケーションパースペクティブプロセス

次の図は、アプリケーション配信のプロセスを示しています。コードは、統合管理コードライブラリを介して保存および管理され、継続的な統合によって成果物に変換されてから、成果物ウェアハウスに保存されます。成果物は、コンテナイメージまたはコードパッケージパターンにすることができます。成果物が作成された後、バージョン展開のためにテスト環境と実稼働環境に自動的に展開され、最終的に実稼働環境に展開されます。したがって、このアプリケーション配信プロセスの重要なポイントは高度な自動化を実現することであり、自動化には2つの重要な側面があります。インフラストラクチャ、つまりコードとリンク間の自動化されたシリーズです。

14.png

3.自動化されたアプリケーション配信パイプライン

次の図は、自動化されたアプリケーション配信パイプラインを示しています。次の各リンクでは、多くの機能を実装する必要があり、それらの多くは反復的なタスクであるため、インフラストラクチャがコードであることがわかります。

15.png

4.コードとしてのインフラストラクチャ

次の図は、インフラストラクチャをコードとして示しています。サーバーレスアプリケーションモデルは、宣言を通じてアプリケーションリソースを定義し、標準化、自動化、および視覚化を可能にします。

16.png

さまざまなパラメータをテンプレートに渡すことができ、アプリケーションの実行環境を動的に生成できます。

17.png

5.サービスバージョンとグレーリリース

関数計算では、アプリケーションにバージョンの概念があります。バージョンは不変のエンティティであるため、バージョンの予期しない変更によるオンラインアプリケーションの損傷を防ぎます。AlibabaCloudは、サービスバージョンとグレーリリースを通じてこのような問題を回避します。エンドアクセスアプリケーションには、エイリアスを介してアクセスします。

18.png

6.サーバーレスワークフロー

Alibaba Cloudは、ユーザーがDevOpsを接続しやすくするためのサーバーレスワークフローを提供します。ユーザーは、サービス機能とツール機能をサポートすることでワークフローをすばやく作成し、視覚的に表示して、ワークフローの効果を明確に確認できます。

19.png

7.自動化されたアプリケーション配信パイプライン

これらの機能が利用可能な場合に、アプリケーション配信パイプラインを自動化する方法を思い出してください。ソースコードの段階では、コード品質の静的チェックを実装して、CheckInのコード品質を確認できます。CheckInがコードベースに到着すると、ユニットテストが自動的に実行され、成果物が生成されます。テストプロセスでは、Alibaba Cloud ROSとのシームレスな統合により、テスト環境への自動展開を実現し、テストケースを実行できます。これらが完了すると、ReleaseManagerを介して展開を確認でき、これらのタスクはワークフローを介して直列に接続され、プレリリース環境にリリースされ、さらに実稼働環境に展開されます。各ステップが自動化され、研究開発の効率が大幅に向上しました。

20.png

8.ログの収集とクエリ

サーバーレスコンピューティングプラットフォームでは、単純なログクエリや高度なログクエリなど、多くのログ収集およびメトリック収集機能がネイティブに提供され、ログメソッドを通じてユーザーに高度なデータ分析機能を提供できます。

21.png

9.指標を収集して視覚化する機能

サーバーレスコンピューティングプラットフォームは、基本的なインジケータービューを提供するだけでなく、カスタムインジケータービューもサポートします。ユーザーは、カスタムキーワードインデックス検索を通じてビジネス関連のデータ分析を実行できます。

22.png

サーバーレスとDevOpsを組み合わせると、R&Dの効率が大幅に向上し、開発チームの精神的負担が大幅に軽減されます。また、DevOpsパイプライン全体がツールによって高度に自動化されます。

ケーススタディ

最後に、いくつかの成功事例を共有します。アリババサーバーレスコンピューティングは、アリババエコノミーミニプログラムプラットフォームをサポートし、R&Dリソースの40%を節約します。Alibaba Cloud Serverlessは、Yuqueの機能コンピューティングの使用をサポートして、ドキュメントなどの計算集約型サービスを実装します。これにより、運用と保守のコストが大幅に削減され、グラファイトドキュメントの運用と保守のコストも58%削減され、Weiboの研究開発効率が向上し、機能がオンラインになります。時間が元の2週間から数時間に変更されました。

2020年には、サーバーレスに対する業界の受容が大幅に向上し、同時にサーバーレスの機能がより普遍的になっていることがわかります。

著者の紹介:サーバーレスコンピューティングの責任者であるYang Haoran(怒っていない)は2010年にAlibaba Cloudに参加し、Alibaba CloudFeitian分散システムの研究開発と製品の反復のプロセス全体に深く関わっていました。大規模な分散コンピューティング、大規模なデータの保存と処理について非常に深く理解している。

おすすめ

転載: blog.51cto.com/14902238/2561757