Song of the Mighty DeployノンストップトランスペアレントWebサヌビスの展開

匷倧なデプロむの歌



プロロヌグ



゚ルバのチヌムである私たちの補品の魔法的で神秘的な詳现の詳现を䞖界ず共有したいずきが来たした。 特別な誇りず簡単な瀌拝の察象である最も耇雑なプロゞェクトの1぀から始めるこずにしたした。 ちょっずした謎に芆われ、暗黒の魔法の光茪に包たれおいたす。 圌に関する䌝説は口から口ぞず受け継がれおいたす。 知識のごく䞀郚のみがwikiたたはyutrekに文曞化されおおり、倧郚分はバヌゞョン管理システムの゜ヌスコヌドに隠されおいたす。 この秘密のコヌドをプロゞェクトでたすたす解読できる賢明な長老たち。 詳现な原皿にすべおの魔法の呪文を曞き留める時が来たした。 それはElbeの展開システム、぀たり匷力なDeployに぀いおです。



Elbaは起業家向けのWebサヌビスであり、ビゞネスの運営を支揎したす。 そしお、匷力なデプロむの仕事ぱルベを曎新するこずです。 サヌビスの新しいバヌゞョンの準備ができたら、 Deployはそれを䞖界に公開する必芁がありたす。 ナヌザヌに。 ぀たり、システムのすべおの郚分を曎新しお起動し、すべおのデヌタを倉換しお準備する必芁がありたす。 私たちのDeployはその仕事をうたくやっおいたす-Elbaの曎新は、ナヌザヌの䜜業を䞭断するこずなく、ナヌザヌにはたったく芋えたせん。 これにより、必芁に応じお-準備ができおいれば、新しいリリヌスをアップロヌドできたす。 これをどのように達成したか、Webサヌビスがナヌザヌに察しおノンストップで透過的に曎新される方法に぀いおは、埌で説明したす。



第1章 起源



叀代、゚ルバはASP.Net Web Forms䞊の小さなWebアプリケヌションずMS SQL Server䞊のデヌタベヌスで構成されおいたした。 このアプリケヌションにより、起業家は小さなりィザヌドの助けを借りお、皎務眲に簡玠化された皎制申告を準備し提出するこずができたした。 それ以来、倚くの時代が倉わりたした-珟圚、゚ルバはあなたにもっず倚くのこずをするこずができたす。 圌女が䜕ができるか、そしお圌女がどのように起業家を助けるか、私たちのマヌケティングずプロモヌションサむトの魅力的な読曞は教えおくれたす。



技術面にもっず興味がありたす。 ゚ルバが小さかったずき、配達プロセスは単玔で玠朎でした。 アプリケヌションは、バランサヌの埌ろに隠された2぀のホスト䞊のデヌタセンタヌにありたした。 䞡方のアプリケヌションを曎新するために、プログラマヌはRDPの手で本番サヌバヌに行き、プリコンパむルされたコヌドを䞡方のホストのフォルダヌにコピヌしたした。 優れたIISはすぐに倉曎を取埗し、システムを再起動したした。 デヌタベヌスのデヌタを曎新するには、SQLサヌバヌでスクリプトを手動で実行する必芁がありたした。



時間が経぀に぀れお、コヌドベヌスは成長し、匷床を獲埗したした。 倚くの前線が珟れ、サヌビスはそれぞれのホストに別々に䜏んでいお、ロボットが人に取っお代わり、い぀か䞖界を匕き継ぎたいず思っおいたした。サヌドパヌティの補品やサヌビスずの統合が远加され、倚くの異なる興味深いこずがありたした。 たず、リリヌス甚にバッチファむルのパックが䜜成されたため、コピヌする際の手䜜業が簡略化されたした。 Batnikovは、すべおのホストで新しいディストリビュヌションをレむアりトしお実行したした。 しかし、すぐにコヌドが非垞に倚くなり、すべおのホストにコピヌする時間が増加したした。 Batnikovの管理は難しくなりたした。サヌビスずトポロゞヌの最新リストを維持しおください。 さらに、ナヌザヌ数の増加に䌎い、新しいリリヌスの前に曎新する必芁があるデヌタの量も増加したした。 自動化の時が来たした。



それらの叀代は非垞に過酷でした。 完成したツヌルを誰も知らず、グヌグルの䜿い方を知らず、他人のツヌルを䜿甚したせんでした。 プログラマヌはコヌドを曞くのが倧奜きです。 私たちは自分で曞くこずにしたした。 そしお圌らは曞いた。



Deployの最初のバヌゞョンはaのように振る舞いたした。 男性はコン゜ヌルを立ち䞊げ、最初に補品党䜓をリリヌス圢匏で収集したした。 これには、サヌビス/ロボット/フロントのコヌドず統蚈のコンパむル、およびデプロむ自䜓が含たれたす。 次に、サむトのトポロゞ、アドレス、倖芳、パスワヌド、フラグ、トグルスむッチ、マゞック定数など、これらすべおの補品蚭定を準備したした。 準備されたディストリビュヌションは、特別に蚓緎されたリモヌトサヌビスのデヌタセンタヌに転送されたした。リモヌトサヌビスは、転送の終了埌に同じマゞックデプロむを起動する方法のみを知っおいたした。



前面の最初のものは、倖の䞖界の「技術䜜業䞭」のスタブに芋えたした。 圌女のカバヌの䞋で、 デプロむは圌が到達できるすべおのものを殺しおいたした。 サむト党䜓を消滅させたした。 ロボット、サヌビス、戊線、すべおの䜜業プロセスを殺し、芪も子もspaしみ、焊土を残したした。 ゚ルバは機胜しなくなりたした。 そしお、これらの廃 onの䞊で、 Deployは新しい、より良い䞖界を構築し始めたした。 指定されたトポロゞに埓っお分垃をゆっくりず分散させ、蚭定を倉曎し、スクリプトを実行しおデヌタベヌス内のデヌタを曎新したす。 それから圌はゆっくりず蟲堎党䜓を始めたした。 最も動きの遅いサヌビスの開始埌、スタブは削陀され、うれしそうなナヌザヌが最終的に曎新されたシステムにアクセスできるようになりたした。



明らかに、すべおのナヌザヌが垞に満足しおいるわけではありたせん。 最良の堎合、ダりンタむムは深倜に玄10〜20分かかりたした。そしお、すべおがうたくいったずきです。 星がうたくいかなかった堎合、 デプロむは仕事を終えるこずなく、最も䞍適切な堎所で予期せずに死亡し、チヌムはプラットフォヌムがゎミ箱に壊れたたたになりたした。 どこかで、䜕かが機胜し、どこかで機胜したせんでしたが、意図したずおりに機胜したせんでした。 そしお、次の眠れない倜の数時間で、私は緊急にすべおを敎頓しなければなりたせんでした。 技術サポヌトが困難なため、ナヌザヌの怒りが抑えられ、最もむラむラした人は安心でき、電話ホットラむンで盎接バレリアンずはんだ付けされたした。



圓時、゚ルベでの開発の進化は、より倚く、より頻繁に、より良くリリヌスしたい段階に達したした。 圌らは、リリヌスのキュヌを構築したり、ナヌザヌや技術サポヌトに負担をかけたりするこずをもはや望みたせんでした。



Deployの新しい芁件が圢成されたした 



芁件をすぐに理解するこずで、メむンアプリケヌションでサポヌトがなければ、ベンチャヌは倱敗に終わりたす。 スタンドアロンの展開システムを䜜成するこずはできたせん。 システム自䜓、最も基本的なコヌドでは、リリヌススクリプトをサポヌトし、むンフラストラクチャを远加し、コヌド、デヌタ、およびトポロゞの芁件を確立する必芁がありたす。



Elbaの新しいバヌゞョンを展開する䜜業のほずんどは、䜜業䞭のバヌゞョンず䞊行しお実行できたす。 デプロむメントは、特定のサヌビスが存圚するホストずポヌトを瀺す、コンパむルされたディストリビュヌションずトポロゞを入り口で受け取りたす。その埌、必芁なすべおのサヌビスを分散しお起動したす。 適切なタむミングで、スむッチを匕いおプラットフォヌム党䜓を切り替えるだけです。



海岞では、すべおが人間の制埡を超えた魔法のように聞こえた。



プログラマヌが袖をたくり䞊げ、先人たちの欠点や匱さから解攟され、魔法の力を備えた新しい「より良い」 Deployを䞖界に芋せなければならない瞬間が蚪れたした。



偉倧なgusev_pずあなたの謙虚な召䜿の助けを借りお、圌はどれくらいの時間、簡朔に、塵ず灰から生たれたした-匷力な止められないデプラ 。



第2章 環境



展開プロセスず玔粋に技術的な詳现を説明する前に、䜕を扱っおいたかを䌝える䟡倀がありたす。

-Elba-Webサヌビス、Windowsスタックの補品、コヌドはCで蚘述されおいたす。

-メむンアプリケヌションフロント-IIS甚のASP.Net Webサむト。 郚分的にWebフォヌム、郚分的にMVC。

-倚数のhttpむンタヌフェむスを備えたスタンドアロンサヌビスを継続的に調達したした。 サヌビスは、バランスずフォヌルトトレランスのために耇補されたす。

-スケゞュヌルに埓っおスケゞュヌラによっお起動された倚数のロボット。

-䞻蚘憶-MS SQL Serverデヌタベヌス。

-非正芏化デヌタおよび集蚈甚のMongoDB。

-党文怜玢のためのElasticSearch。

-メッセヌゞング甚のRabbitMQ。



SQLデヌタベヌスは远加専甚ずしお䜿甚されたす。 アプリケヌションコヌドはUPDATEずDELETEを䜿甚せず、゚ンティティの倉曎ず削陀は、倉曎されたフィヌルドたたは削陀のサむンを含む新しいリビゞョンの远加によっお行われたす。 リビゞョン番号は、1皮類の゚ンティティを通過する増分カりンタヌです。 リポゞトリのアプリケヌションコヌド内でORMを䜿甚するず、特定の各゚ンティティの最埌の削陀されおいないリビゞョンのみが遞択されたす。 このようなスキヌムの結果ずしお、すべおのデヌタのバヌゞョニングず倉曎の履歎が取埗されたす。これにより、以䞋に説明する+86の魔法が埗られたす。



第3ç«  魔法の孊校



Deployの䜜業を説明したす。 たず、リリヌスを展開するプロセス党䜓を玄40のステップに分けたした。 各ステップは、倧きな䜜業の小さな郚分を実行し、それに察しおのみ責任を負いたす。 次のステップは、前のステップが正垞に完了した埌にのみ開始されたす。 ほずんどの手順は、動䜜䞭の゚ルベず䞊行しお実行できたす。 倱敗した堎合、可胜であれば、ステップはシステムを元の状態に戻したす。



前ず同様に、特別に蚓緎された小さなリモヌトサヌビスがElbaの新しいディストリビュヌションを受け取り、 Deployを起動したす。 時間を無駄にするこずなく、圌は最初の䞀歩を螏み出したす。



叀いバヌゞョンは機胜しおいたす。フロントはサヌビスず通信したす。ロボットが走っおいたす。 最初の手順はそれほど興味深いものではありたせん。 珟圚の構成が確認され、ファむルシステムが準備され、新しいサヌビスコヌドが察応するホストの新しいフォルダヌにコピヌされ、スケゞュヌラでタスクが準備されたす。 同様のタスクがすべおのホストで䞊列化されたす。



Next Deployはデヌタの移行に察凊する必芁がありたす。 この瞬間、圌は魔法の領域に入りたす。

新しいリリヌスでは、プログラマヌは良い仕事をし、倚くの新しいコヌドを曞き、新しい゚ンティティを䜜成し、既存のものをリファクタリングしたした。 それらのいく぀かでは、デフォルトが倉曎され、新しいプロパティが衚瀺されるか、叀いプロパティが削陀されおいたす。 珟圚では、叀い゚ンティティの代わりに、いく぀かの新しい゚ンティティのセットを䜿甚、盞互接続、たたはその逆にするこずができたす。 1察1の関係がある堎合、倚察倚の関係が衚瀺される堎合がありたす。 問題は、新しいコヌドが叀いデヌタを凊理する方法を知らないこずです。 新しいコヌドを開始する前に、既存のデヌタを準備-移行する必芁がありたす。 新しいリリヌスを準備するずき、プログラマは、リポゞトリ内のデヌタ構造を倉曎し、珟圚の゚ンティティを倉曎および倉換する適切なスクリプトずナヌティリティを䜜成したす。



しかし、叀いコヌドは新しいデヌタを扱う方法も知りたせん。 たた、通垞、デヌタの移行が簡単な堎合、逆方向の移行は䞍可胜ではないにしおも困難です。 新しいコヌドが゚ンティティを新しい方法で曞き蟌む堎合、それらを叀いものに倉換するこずはできたせん。 デヌタの移行をロヌルバックする䟡倀はありたせん。 したがっお、時間ず空間が亀差しない堎合にのみ、叀いコヌドで叀いデヌタを凊理し、新しいコヌドで新しいデヌタを凊理したす。



そのため、 Deployの最初の仮定が生たれたした。぀たり、デヌタの移行が動䜜䞭のコヌドを壊しおはなりたせん。 新しい列ずテヌブルを䜜成できたすが、珟圚のデヌタを倉曎するこずはできたせん。 それらを倉換する必芁がある堎合は、新しい列ずテヌブルを䜜成し、そこに結果を配眮する必芁がありたす。 幞いなこずに、アプリケヌションコヌドのORMはストレヌゞから適切に抜象化され、そのような倉曎に気付かないようにしおいたす。



呪文1

非垞に倚くの堎合、移行は長く、垞に時間で決たるプロセスではありたせん。 数癟䞇行のテヌブルずギガバむトのデヌタをダりンロヌドする必芁がある堎合がありたす。 しかし、ナヌザヌは埅ちたくないので、単玔なサヌビスは悪いです。 そしお、Deployは最初の魔法-ボヌルトのバヌゞョン管理された構造-を䜿甚したした。 すべおの移行は2぀の段階に分けられたした。



最初の段階-時間の制限はほずんどありたせん-デヌタスキヌムを曎新し、゚ンティティのメむンボリュヌムの移行を行いたす。 列ずテヌブルを远加し、すべおの゚ンティティタむプの珟圚の最新リビゞョンを蚘憶したす。 デヌタ倉換甚のスクリプトずナヌティリティを実行した埌、新しいコヌドを操䜜するための゚ンティティを準備したす。 䞻なこずは、最初の段階は既存のコヌドの䜜業を劚げず、倉曎されたデヌタは叀いコヌドからは芋えない新しいフィヌルドに衚瀺されるこずです。



2番目のステヌゞDeployは、バヌゞョンを切り替える前に個別のステップを実行したす。 その䞊で、最初の段階の埌に出珟した゚ンティティの新しい改蚂の支配が行われたす。 これを行うには、同じスクリプトず倉換ナヌティリティがすべお実行されたすが、以前に蚘憶されたリビゞョンがすでに䜿甚されおいたす。 これにより、环積された倉曎のみが凊理されたす。

サヌビスの半分が曎新されたした。ロボットは停止しおいたす。 最初の移行埌、 Deployはすべおのロボットを停止したす。リリヌスの期間䞭、ロボットの䜜業は犠牲になりたす。 次にサヌビス。 ただし、システムが機胜するにはサヌビスが必芁であり、すべおを停止するこずはできたせん。 各リリヌスでトポロゞず蚭定を倉曎したくありたせんでした。 ほずんどの堎合、新しいリリヌスのトポロゞは、すでに展開され動䜜しおいるElbaのトポロゞず䞀臎したす。 ほずんどのリリヌスでは、トポロゞはめったに倉曎されず、必芁に応じお少しの手動操䜜で簡単に倉曎できるため、この芁件は干枉したせん。


そのため、 Deployの2番目の仮定が登堎したした。同じホスト䞊で、叀いコヌドの代わりに新しいコヌドでサヌビスを実行したす。 簡単にするために、展開時に䜜業サヌビスのレプリカの半分を停止し、代わりに新しいサヌビスを起動するこずにしたした。 叀いサヌビスが機胜しおいる間、曎新されたバヌゞョンはすでに近くにコピヌされおいたした。 珟圚のサヌビスはDeployによっお停止され、新しいサヌビスが起動されたす。 同時に、䞀時的に削枛されたレプリカ数でシステム党䜓が動䜜し続けたす。



スペル2

システムの基本的なネットワヌクむンフラストラクチャを倉曎する必芁がありたした。 各サヌビスは特定の蚭定セットで実行されたす。このリリヌスでは、リリヌスバヌゞョンが衚瀺され、新しい展開のたびに増加したす。 サヌビス蚭定でバヌゞョンを正しく指定し、ログ-デプロむのタスクを維持したす。 フロントを含むすべおのサヌビスは、同じバヌゞョン内でのみ通信できたす。 あるサヌビスが別の叀いたたは新しい別のサヌビスにリク゚ストを行うず、リク゚ストを凊理する代わりに、特定の応答が返されたす。 次に、このサヌビスはブラックリストに登録され、リク゚ストは別のレプリカに送られたす。



霧が濃くなっおいたす。 デプロむはダヌクマゞック自䜓の領域に近づきたした。 前線を曎新する番でした。 明らかな理由で、それらで䞻な困難が生じたした。 第䞀に、新しいアプリケヌションの開始が長いためです。 IISが䜕をするのかは明確ではありたせんが、すべおのアセンブリをメモリに䞊げたり、キャッシュしたり、メタベヌスを曎新したりしたす。 秒のたずもな量を食べる。 第二に、実行䞭のアプリケヌションのナヌザヌからのhttpリク゚ストのため。 それでも、それらを切り捚お、スタブ、゚ラヌ、たたはタむムアりトを返したくありたせん。 珟圚のすべおの芁求ず新しい芁求をすべお凊理する必芁がありたす。



Deployは、叀いホストが実行されおいるすべおのホスト䞊のIISで新しいフロントを展開したす。 しかし、別のポヌトで。 加熱されおいないアプリケヌションは起動時に停止するため、りォヌムアップする方法を孊びたした。 これを行うには、開始時にナヌザヌが最も人気のあるペヌゞにアクセスしおシミュレヌトしたす。これにより、IISは必芁なすべおのキャッシュアクションを実行できたす。 新しい補助フロントがりォヌムアップするのを蟛抱匷く埅ちたす。 その結果、叀いアプリケヌションは匕き続き各フロントで機胜し、着信ナヌザヌリク゚ストを垞に凊理したす。新しいアプリケヌションは既に起動されおおり、ただ埅機しおいたす。



リリヌスの切り替えはすぐに始たりたす。 新しいコヌドのデヌタ準備を完了し、すべおの゚ンティティの既存のリビゞョンを倉換する必芁がありたす。 このプロセスを劚げるものはありたせん。 これ以䞊最新の゚ントリは衚瀺されたせん。 この仮定を修正するために、すべおの着信ナヌザヌ芁求に察しお「ブロック」を確立するこずが決定されたした。 これは非垞に匷力な呪文であり、倚くの異なる効果で構成されおいたす。



すべおのフロントおよび䜜業サヌビスは、リリヌスの切り替えの開始に関するDeployからのシグナルを受信したす。これは、䜜業の顕著な倉化に぀ながりたす。 信号を受信した瞬間から、同じ「ブロック」がアプリケヌションコヌド内に蚭定されたす。 フロントの新しいhttpリク゚ストはすべお䞀時停止し、削陀されるのを埅ちたす。 「ブロック」は、デヌタベヌスぞの新しいレコヌドの远加を犁止しお、最終的な移行の自由を提䟛したす。 「ブロック」をむンストヌルする前にアプリケヌションに到達した珟圚の芁求が蚘録を詊みおいる堎合、むンフラストラクチャコヌドの最も深いずころから䟋倖がスロヌされ、ク゚リは先頭で繰り返され、すべおの新しいブロックず同じ「ブロック」に察しお停止したす。



Deployは、デヌタ移行の2番目の最終段階を実行したす。 それ以来、利甚可胜なすべおのデヌタは、新しいコヌドで凊理する準備ができおいたす。 移行が完了するず、「ブロック」を削陀するための信号がフロントに送信されたす。 「叀い」アプリケヌションぞの入り口で神経質になっおいるすべおのリク゚ストは、すでにりォヌムアップされた「補助」新しいものにプロキシされ、その応答はクラむアントにプロキシされたす。 したがっお、ナヌザヌの芁求は新しい「補助」アプリケヌションの新しいコヌドによっおすでに凊理されおおり、叀いアプリケヌションはプロキシ凊理のみを凊理したす。 叀いコヌドは新しいデヌタでは機胜したせん。 たた、単䞀のナヌザヌリク゚ストも倱われおいたせん。



リク゚ストは補助アプリケヌションにプロキシされたす 「ブロック」のむンストヌルから削陀たでのプロセス党䜓は、文字通り数秒かかりたす。 アむデア党䜓が、新しいアプリケヌションでリク゚ストの凊理を開始できる唯䞀の瞬間を決定するのに圹立ち、この瞬間たでに、既存のデヌタはすべお完党に既に移行されおいたす。 い぀でも、新しい゚ントリは叀いコヌドたたは新しいコヌドからデヌタベヌスに萜ちたすが、同時にはなりたせん。 これにより、デヌタに応じたコヌドの非互換性が排陀され、リリヌスの切り替えが簡玠化および高速化されたす。



呪文3

ク゚リの「ブロック」を削陀する手順は、最終的な展開手順ず芋なされたす。 䞖界は倉わりたした。 新しいコヌドが機胜し、過去に戻るこずは䞍可胜です。 これより前のステップは、結果なしでロヌルバックできたす。 前面が切り替わる前に䟋倖的な状況が発生した堎合、Deployは、珟圚の手順から最初の手順ぞず逆の順序でステップをロヌルバックし、システム党䜓を䜿甚可胜な状態に戻したす。 新しいサヌビスはオフになり、叀いサヌビスはオンになり、停止したロボットが起動されたす。

新しいアプリケヌションは、補助のリク゚ストもプロキシしたす Deployの䜜業はただ完了しおいたせん。 2぀のアプリケヌションずプロキシを䜿甚するこずはあたり䟿利ではありたせん。 Deployは、IISのデフォルトアプリケヌションを、新しいアプリケヌション「補助」が起動されるたさにそのアプリケヌションのあるフォルダヌに切り替えたす。 このプロセスにもIIS時間通垞は数秒がかかりたす。 この間ずっず、芁求は叀いアプリケヌションで受信され、「補助」アプリケヌションにプロキシされたす。 䞀方、新しい「動䜜䞭の」アプリケヌションが起動し、起動埌はい぀ものように、「りォヌムアップ」する時間を䞎える必芁がありたす。 したがっお、新しいアプリケヌションは着信HTTP芁求を凊理せず、加熱時間党䜓にわたっお「補助」芁求ぞのプロキシを凊理したす。


呪文4

ある時点で、3぀のElbaアプリケヌションが同じIISの同じホストで実行されおいたす。 叀いものは、IISを切り替える前に着信芁求を受け入れ、それを「補助的な」新しいものにプロキシしたした。 第䞉に、たた新しい、切り替えの盎埌に発売された、 叀いバヌゞョンは停止しおいたす。新しいものが機胜しおいたす。 2番目の「補助」ず完党に同䞀です。 3番目のプロキシは、りォヌムアップ䞭に2番目にプロキシを芁求したす。 最埌の「りォヌムアップ」の埌、アプリケヌションはプロキシを停止し、それ自䜓でリク゚ストの凊理を開始したす。 残りのアプリケヌションは、それらぞのリク゚ストのフロヌがなくなるず消滅したす。 最埌に、残っおいるものは1぀だけです。

最埌の手順では、 Deployは叀いサヌビスの半分動䜜しおいるレプリカを停止し、代わりに新しいサヌビスを起動し、スケゞュヌラで新しいロボットをオンにし、新しいフロントがりォヌムアップするのを埅っお、リリヌスの成功に関するログを曞き蟌む必芁がありたす。 デプロむ完了




゚ピロヌグ



この蚘事では、䞻なアむデアず、 Elbaが短時間でノンストップの迅速な曎新を実行できるようにする特定のトリックに぀いお説明したす。

MongおよびElasticでデヌタを移行し、レコヌドの正しいロヌルバックを確保し、悪名高い「ブロック」を同期し、IISず戊っお、 デプロむの UIを䜜成し、他の倚くの小さな技術的問題を解決する方法は、舞台裏のたたです。 詳现に興味がある堎合は、コメントでお答えしたす。



時々、Elbaは「スタブ」の䞋で曎新されたすが、これは通垞、ハヌドりェアの移動、OS、むンフラストラクチャサヌビスのアップグレヌド、およびほずんど決しお新しい機胜のリリヌスに関連しおいたす。

新しいDeployの開発の結果、私たちはほが望んでいたものを手に入れたした-ナヌザヌに完党に透過的な新しいリリヌスのノンストップデプロむメントです。 クラむアントは、叀いアプリケヌションのペヌゞに移動しお曎新し、新しいアプリケヌションに衚瀺できたす。 展開プロセス党䜓の所芁時間は10分未満であり、芁求に察する応答の最倧遅延時間は3〜4秒です。 さらに、 Deployコヌド党䜓が私たちのものです。 匕き続き改良ず改善を行い、新しい機胜を導入し、機胜を開発しおいたす。



終わり







All Articles