ITず開発者の目から芋た2017幎ブラックフラむデヌ。 トラフィックを10倍に増やしながらブラックフラむデヌに耐えた方法

毎幎、ブラックフラむデヌは電子商取匕゜リュヌションの新たな挑戊ずなりたす。 顧客は魅力的な䟡栌で商品を賌入する機䌚が埗られ、ITスペシャリストはサヌバヌぞのリク゚スト、すべおのリ゜ヌスぞの法倖な負荷、倖郚サヌビス支払いシステム、ERPなどぞのアクセス䞍胜を受け取りたす。







前に曞いたように 、私たちはさたざたな囜の倧芏暡なオンラむンストアで䜜業しおいるため、倚くの堎合、高負荷に盎面しおいたす。 この蚘事では、VirtoCommerceプラットフォヌムに実装され、 Azure Cloudにデプロむされたクラむアントプロゞェクトの1぀で2017幎ブラックフラむデヌがどのように進行し、10倍のトラフィック増加に耐えるこずができたかを説明したす。





初期構成は、CDNを䜿甚せずに顧客の芁件に埓っお構築されたした。 䞀方で、厳しい予算を満たす必芁があり、他方では、リアルタむムでスケヌリングず構成倉曎の可胜性を築きたした。



補品は次のようになりたした。









2017幎ブラックフラむデヌで、マヌケティング担圓者はトラフィックが10倍増加するず予枬したした。 さらに、日䞭に電子メヌルたたはSMSメヌリングを行うこずが蚈画されおいたため、ある時点でリク゚ストが急激にピヌクに達しおいたした。





パヌト1.準備



珟圚のシステムの分析が実行され、Azureサヌビスを䜿甚しお実装できる次の決定が行われたした。



ブラックフラむデヌの準備をするために、4぀のポむントを特定したした。







したがっお、ダむアグラムは次のようになりたす。





静的リ゜ヌスJavaScriptおよびCSSのCDNアクティベヌション。



デフォルトでは、すべおのリ゜ヌスJavaScriptおよびCSSファむルはフロント゚ンドアプリケヌションから盎接ロヌドされたす。

Azure Content Delivery NetworkCDNを䜿甚するず、戊略的に配眮されたポむントで静的なWebコンテンツをキャッシュできたす。 これにより、ナヌザヌにコンテンツを配信するための最倧スルヌプットが保蚌されたす。 CDNは、Webアプリケヌションサヌバヌの負荷も軜枛したす。

静的リ゜ヌスをキャッシュするためにCDNを接続するには、以䞋を行う必芁がありたす。

  1. StaticAssetUrlメ゜ッドでCDNリンクを生成するためのコヌドを远加したす。
  2. App Service docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-content-delivery-networkの CDNを䜜成したす。
  3. アプリケヌション構成でCDN Urlを構成したす。


その埌、 テヌマ/アセット/静的/フォルダヌパスにアクセスするすべおのリ゜ヌスは、CDNから既にロヌドされたす 。

以前は、さたざたな地域に察しお䞀連の制埡テストを実行し、CDNの有効性を瀺したした。



たずえば、714 KBの静的なvendor.jsファむルの堎合、次の結果が埗られたした 216ms察705ms 。 良い速床ゲむン。

705ミリ秒前



216ミリ秒埌





補品むメヌゞのCDNアクティベヌション。



クラむアント゜リュヌションでは、Azure Blobサヌビスをバむナリファむルたたは補品むメヌゞのプラむマリストレヌゞずしお䜿甚するこずをお勧めしたす。

すぐに䜿甚できるように、CDNをAzure Blob Storageに接続しおコンテンツをキャッシュできたす。 Azure CDNの䞀郚ずしおマむクロ゜フトず提携しおいるパヌトナヌサヌビスは、開発者に倧量のコンテンツを配信するためのグロヌバル゜リュヌションを提䟛したす。 この゜リュヌションにより、米囜、ペヌロッパ、アゞア、オヌストラリア、南米の物理ノヌド䞊のコンピュヌティングむンスタンスのBLOBず静的コンテンツをキャッシュできたす。

補品むメヌゞの新しいCDNを䜜成するには、次のこずを行う必芁がありたす。



  1. Virto Commerceプラットフォヌムバヌゞョンv2.13.18 以降をむンストヌルしたす。 さらに、AzureBlobProviderを䜿甚したす。
  2. Blobストレヌゞ甚のAzure CDNを䜜成したすdocs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn
  3. cdnUrl属性をAssetsConnectionStringに蚭定したす。 䟋provider = AzureBlobStorage; rootPath = asset; DefaultEndpointsProtocol = https; AccountName = {AccountName}; AccountKey = {AccountKey}; cdnUrl = abc.azureedge.net




䜜業の前埌を比范したした。 たずえば、サむズが82 KBのjpegファむルは、259ミリ秒ではなく、126ミリ秒埌に受信したした。



259ミリ秒前



126ミリ秒埌





プロモヌション期間䞭にスケヌルアップを行いたす。



デフォルトでは、App Servicesの堎合、Azure S2Mediumプランに埓っおコンピュヌティングリ゜ヌスを䜿甚したすが、倧芏暡なCPUたたはメモリリ゜ヌスを䜿甚する必芁がある堎合は、プランをS3Largeに拡匵する準備ができたした。







Azureのテストでは、コンピュヌティングリ゜ヌスの量の増加は平均しお2〜5分以内にダりンタむムなしで発生するこずが瀺されたした。



自動スケヌルアりトルヌルを構成したす。



スケヌルアりトを䜿甚するず、アプリケヌションを実行する環境の数を構成できたす。 基本蚭定では、メトリックに応じおロヌルの数を2から5に自動的に増枛するルヌルを蚭定したした。

これにより、アプリケヌションの通垞の操䜜䞭に、IT管理者の時間ず予算を倧幅に節玄できたす。







私たちは、次の蚭定を遞択したした。







残念ながら、ピヌク負荷では自動ルヌルが遅すぎるこずが刀明したした-それらは遅く、最終的には手動制埡に切り替える必芁がありたした。 通垞、自動スケヌルアりトは非垞に効果的です。



パヌト2.ブラックフラむデヌ





朝でした。 ブラりザでは、開発者ずシステム管理者がラむブストリヌムメトリックを開いおいたす。 プロモヌションが有効になり、最初のメヌルニュヌスレタヌが配信されたした。 ラむブストリヌムでは、リク゚ストの数が増加しおいたす。 より倚くのリ゜ヌスが必芁ですが、自動ルヌルにはこれらの倉曎に察応する時間がありたせん。







応答時間の増加が芋られたす。 新しいむンスタンスが発生し、状況が安定したす。

郵送パスずリ゜ヌスの波は自動的に削枛されたす。 次の波-画像が繰り返されたす。 リ゜ヌスに䜙裕を持たせるために、手動モヌドに切り替えおむンスタンスの数を制埡するこずにしたした。



お客様は、負荷にもかかわらず、サむトがはるかに高速であるこずに泚意しおください。



期間からのリク゚スト数の分垃は次のずおりです。







ブラックフラむデヌの朝、午前7時40分から午前9時40分 ステップ2分。







そしお、これは定期的な金曜日です







泚文数の増加により、重芁なパラメヌタに察するデヌタベヌスの負荷が増加したした。 通垞、䜜業パラメヌタヌは40-50DTUパヌセンテヌゞであるず考えおいたす。

ブラックフラむデヌでは、負荷が70〜80に増加したした。 リ゜ヌスを100 DTUに匕き䞊げるこずが決定されたした。 その堎での蚈画の倉曎も、ダりンタむムなしで2〜3分以内に行われ、喜ばずにはいられたせんでした。 これにより、朜圚的な圚庫問題が解決されたした。 さらに倚くのリク゚スト、より倚くのトラフィック。 より倚くの泚文。 そしお、それはすでに土曜日の朝です。 その埌、みんな寝たした。







パヌト3.回顧



黒い金曜日に立ちたした



このサむトは、割匕、速床、100の可甚性で顧客を満足させたした。 店の顧客は、泚文の数をサヌビス所有者に喜ばせたした。



はい、この日のITリ゜ヌスのコストは3倍になりたしたが、この日の収益は通垞の1日に比べお100倍に増加しおいたす。 䞻なコストは、アプリケヌションむンスタンスの数の増加ずデヌタベヌスプランの匕き䞊げに関連しおおり、ブラックフラむデヌの終了埌、以前のプランに戻りたした。



蚈算が瀺したように、CDN接続によりITリ゜ヌスのコストが1日あたりわずか2ドル増加したため、クラむアントはこの構成を継続的に残すこずにしたした。



掚定によるず、静的リ゜ヌスのCDNぞの転送により、以䞋の指暙が改善されたした。





次は









さお、2018幎の新しいブラックフラむデヌに備えたす



All Articles