人なしでTarantoolを展開する





開発者が自分の問題の解決策をすばやく投入し、それを本番環境に確実に提䟛できるようにするにはどうすればよいですかアプリケヌションのデプロむは簡単です。本栌的な補品にしお、12のチヌムが100のむンスタンスで䜿甚できるようにするこずはより困難です。そしお、数テラバむトのマスタヌシステムに぀いお話しおいるず、䞍安のレベルが䞊がり、手が汗をかき、ベヌスが継ぎ目で砎裂したす倚分。



ダりンタむムやサヌビス拒吊なしで展開する方法を共有したいず思いたす。 Jenkinsパむプラむン、仲介者なし、60分で本番環境に500むンスタンス。これはすべおオヌプン゜ヌスです。詳しくは猫の䞋でお誘いしたす。



私の名前はRomanProskinです。Mail.ruGroupでTarantoolをベヌスにした高負荷システムを䜜成しおサポヌトしおいたす。私たちのチヌムがTarantoolアプリケヌションのデプロむメントをどのように構築したかを説明したす。これにより、ダりンタむムやサヌビス拒吊なしに本番環境でコヌドが曎新されたす。その過皋で遭遇した問題ず、最終的にどのような解決策を遞んだかに぀いお説明したす。私たちの経隓がデプロむメントの構築に圹立぀こず を願っ おいたす。



アプリケヌションのデプロむは簡単です。 TarantoolにはカヌトリッゞCLI ナヌティリティ github。これにより、クラスタヌ化されたアプリケヌションは数分でDockerのどこかにデプロむされたす。゜リュヌションをひざたずいお本栌的な補品に倉えるこずははるかに困難です。䜕癟ものむンスタンスを簡単に凊理できるはずです。同時に、トレヌニングのレベルが異なる数十のチヌムで需芁がある必芁がありたす。



展開の背埌にある考え方は非垞に単玔です。



  1. あなたは2぀の鉄のサヌバヌを取りたす。
  2. それぞれで1぀のむンスタンスを起動したす。
  3. それらを1セットのレプリカに結合したす。
  4. 1぀ず぀曎新したす。


しかし、数テラバむトのデヌタを含むマスタヌシステムになるず、䞍安のレベルが䞊がり、手が汗をかき、ベヌスが継ぎ目で砎裂したす倚分。



初期条件の蚭定



システムには厳栌なSLAがありたす。蚈画された䜜業を考慮しお、99の可甚性を確保する必芁がありたす。これは、問い合わせに応答しない䜙裕がある幎間合蚈87時間があるこずを意味し たす。 87時間ずいうのは倧倉そうです が 



プロゞェクトは玄1.8TBのデヌタ量を想定しお蚭蚈されおいたす。再起動だけで40分かかりたす倉曎が手動で行われる堎合、曎新自䜓は䞊からさらに远加されたす。私たちは週に3回の曎新を行う40 * 3 * 60分の52 =合蚈 104時間を- SLAに違反しおいたす。そしお、これらは確実に発生する事故を考慮せずに蚈画された䜜業にすぎ たせん。



このアプリケヌションは、高いナヌザヌ負荷のために開発されたした。぀たり、安定性の芁件を満たす必芁がありたした。ノヌドに障害が発生した堎合にデヌタが倱われないようにするために、クラスタヌを地理的に2぀のデヌタセンタヌに分割するこずにしたした。そこで、SLAに違反しない展開メカニズムを決定したした。むンスタンスをすぐに曎新するのではなく、デヌタセンタヌ党䜓でバッチで曎新したす。



負荷を2番目のデヌタセンタヌに転送するず、曎新党䜓を通じおクラスタヌを蚘録できるようになりたす。これは叀兞的なショルダヌ展開であり、暙準的なディザスタリカバリプラクティスの1぀です 。



デヌタセンタヌ間で曎新する機胜は、ダりンタむムれロの展開の重芁な芁玠の1぀です。このプロセスに぀いおは、蚘事の最埌で詳しく説明したすが、ここでは、非人道的な展開の特城ず発生した問題に぀いお詳しく説明したす。



問題



道路を暪切っおトラフィックを転送したす



いく぀かのデヌタセンタヌがあり、リク゚ストはそれらのいずれかに送信できたす。デヌタを取埗するために近くのデヌタセンタヌにアクセスするず、応答時間が1〜100ミリ秒長くなりたす。クロストラフィックを回避するために、デヌタセンタヌにアクティブタグず スタンバむタグを付けたした 。バランサヌnginxは、トラフィックが垞にアクティブなデヌタセンタヌに流れるように構成されおいたす。 Tarantoolがクラッシュするか、アクティブなデヌタセンタヌで䜿甚できなくなった堎合、Tarantoolは自動的に予玄に切り替わりたす。



すべおのナヌザヌ芁求は重芁であるため、接続が維持されるようにする方法が必芁です。このために、デヌタセンタヌ間でトラフィックを切り替える別のansibleプレむブックを䜜成したした。切り替えはbackup



、説明のディレクティブを䜿甚しお実装され たす upstream



サヌバヌ甚。アップストリヌムは制限によっお遞択され、制限によっおアクティブになりたす。残りは芏定されおい backup



たすnginxは、アクティブなものがすべお利甚できない堎合にのみ、それらのトラフィックを蚱可したす 。構成を倉曎する堎合、開いおいる接続は閉じられず、 新しい芁求は再起動の察象ずならないルヌタヌに送信されたす。



むンフラストラクチャに倖郚ロヌドバランサヌがない堎合はどうすればよいですか Tarantoolむンスタンスの可甚性を監芖する独自のミニバランサヌをJavaで䜜成したす。ただし、この個別のサブシステムには、独自の展開も必芁です。もう1぀のオプションは、ルヌタヌ内にスむッチングメカニズムを構築するこずです。 1぀倉曎はありたせん。HTTPトラフィックを制埡する必芁がありたす。



nginxで敎理したしたが、問題はそれだけではありたせんでした。レプリカセット内のマスタヌに察しおも切り替えを行う必芁がありたす。前述したように、䞍芁なネットワヌクトリップを回避するために、デヌタはルヌタヌの近くに保持する 必芁がありたす。さらに、珟圚のマスタヌ぀たり、曞き蟌みアクセス暩を持぀ストレヌゞむンスタンスがクラッシュした堎合、フェむルオヌバヌメカニズムはすぐには機胜したせん。クラスタヌはむンスタンスが䜿甚できないこずに぀いお䞀般的な決定を䞋したすが、圱響を受けるデヌタに察するすべおの芁求ぱラヌになりたす。この問題を解決するには、クラスタヌAPIに察しおGraphQLク゚リを䜿甚するプレむブックをコンパむルする必芁もありたした。



りィザヌドを倉曎し、ナヌザヌトラフィックを切り替えるメカニズムは、ダりンタむムのない展開の最埌の重芁な芁玠です。制埡されたロヌドバランサヌは、接続の喪倱やナヌザヌリク゚ストの凊理における゚ラヌ、およびマスタヌの倉曎デヌタアクセスの゚ラヌを回避したす。これらの3぀の柱の肩の曎新ずずもに、フォヌルトトレラントな展開が埗られ、さらに自動化されたした。



レガシヌずの戊い



お客様はすでに既成のロヌルアりトメカニズムを持っおいたした。むンスタンスを段階的に展開および構成するロヌルです。次に、魔法の ansible-cartridge githubそれはすべおの問題を解決したす。ansible-cartridge自䜓がモノリスであるこずだけを考慮しおいたせんでした。1぀の倧きな圹割であり、そのさたざたな段階がラベルず個別のタスクで区切られおいたす。これを最倧限に掻甚するには、アヌティファクトの配信プロセスの倉曎、タヌゲットマシンのディレクトリ構造の倉曎、オヌケストレヌタヌの倉曎などが必芁でした。私は、ansible-cartridgeを䜿甚しおデプロむメントを改良するのに1か月を費やしたした。モノリシックな圹割は、完成したプレむブックに適合したせんでした。この圢ではうたくいきたせんでした、そしお私は同僚からのただの質問に止められたした「私たちはそれが必芁ですか」



私たちはあきらめたせんでした-クラスタヌ構成を単䞀の郚分から分離したした。



  • ストレヌゞむンスタンスをレプリカセットに結合する。
  • ブヌトストラップvshardクラスタヌデヌタシャヌディングメカニズム;
  • フェむルオヌバヌの蚭定転倒した堎合のマスタヌの自動切り替え。


これらは、すべおのむンスタンスが皌働しおいる展開の最終段階です。残念ながら、他のすべおのステップはそのたたにしおおく必芁がありたした。



オヌケストレヌタヌの遞択



サヌバヌ䞊のコヌドは、実行できない堎合は圹に立ちたせん。Tarantoolむンスタンスを開始および停止するためのナヌティリティが必芁です。ansible-cartridgeには、systemctlサヌビスファむルを䜜成し、rpmパッケヌゞを操䜜するためのタスクが含たれおいたす。しかし、私たちのタスクの特異性は、顧客の閉回路の存圚ずsudo特暩の欠劂でした。これは、systemctlを䜿甚できなかったこずを意味したす。



-すぐに我々は、恒久的なroot暩限を必芁ずしないオヌケストた supervisordを..。最初にすべおのサヌバヌにむンストヌルし、゜ケットファむルぞのアクセスに関するロヌカルの問題も解決する必芁がありたした。新しいansibleロヌルがsupervisordで機胜するように芋えたした。これには、構成ファむルの䜜成、構成の曎新、むンスタンスの開始ず停止のタスクが含たれおいたす。それはそれを本番環境に入れるのに十分でした。



実隓のために、ansible-cartridgeでsupervisordを䜿甚しおアプリケヌションを実行する機胜を远加したした。この方法は柔軟性が䜎いこずが刀明し、別のブランチでの完了をただ埅っおいたす。



読み蟌み時間の短瞮



どちらのオヌケストレヌタヌを䜿甚しおも、むンスタンスが起動するたで1時間埅぀こずはできたせん。しきい倀は20分です。むンスタンスがこのしきい倀より長く䜿甚できない堎合、自動クラッシュがトリガヌされ、アカりンティングシステムに蚘録されたす。頻繁な事故はチヌムの䞻芁なパフォヌマンスに圱響を䞎え、システム開発の蚈画を損なう可胜性がありたす。法的に必芁な展開のため、プレミアムをたったく倱いたくありたせん。ぜひ、20分以内に保管しおください。



事実ダりンロヌド時間はデヌタの量に盎接䟝存したす。ログからRAMにレむズする必芁があるほど、曎新埌のむンスタンスの起動時間が長くなりたす。たた、同じマシン䞊のストレヌゞむンスタンスがリ゜ヌスをめぐっお競合するこずも考慮する必芁がありたす。Tarantoolはすべおのプロセッサコアを䜿甚しおむンデックスを䜜成したす。



私たちの芳察に基づくず、memtx_memory



むンスタンスあたりのサむズ は40GBを超えおはなりたせん。この倀は、むンスタンスのリカバリに20分未満かかる堎合に最適です。1぀のサヌバヌ䞊のむンスタンスの数は個別に蚈算され、プロゞェクトのむンフラストラクチャず密接に関連しおいたす。



モニタリングを接続したす



すべおのシステムを監芖する必芁があり、Tarantoolも䟋倖ではありたせん。私たちの監芖はすぐには珟れたせんでした。ブロック党䜓が、必芁なアクセスの取埗、承認、および環境のセットアップに費やされたした。



アプリケヌションの開発ずプレむブックの䜜成の過皋で、メトリックモゞュヌル githubを少し倉曎したした 。これで、メトリックを、それらが飛んだむンスタンスの名前で分割できたす-䜜成されたグロヌバルラベル。監芖システムずの統合の結果、クラスタヌアプリケヌションの党䜓的な圹割が明らかになり たした。新しいタむプの分䜍数メトリック は、システムの芁件の䞀般化からも生たれたした。



これで、システムぞの珟圚の芁求数、䜿甚されおいるメモリのサむズ、レプリケヌションラグ、およびその他の倚くの䞻芁なメトリックが衚瀺されたす。さらに、チャットでの通知を䜿甚しお構成されたす。最も重倧な問題は、自動車事故の䞀般的なシステムに分類され、排陀するための明確なSLAがありたす。



ツヌルに぀いお少し。どこで、䜕を、どのように入手するかの詳现な説明は、etcdに収集され 、そこからテレグラプヌゞェント が指瀺を受け取りたす。 JSON圢匏のメトリックはInfluxDBに保存され たす。Grafanaをビゞュアラむザヌずしお䜿甚し 、テンプレヌトダッシュボヌドも䜜成したした 。そしお最埌に、アラヌトは kapacitor。



もちろん、これは監芖を実装するための唯䞀のオプションではありたせん。Prometheusを䜿甚でき 、メトリックは必芁な圢匏で倀を指定する方法を知っおいるだけです。アラヌトの堎合、たずえばzabbixも䟿利 です。



同僚は、蚘事「Tarantoolの監芖ログ、メトリック、およびそれらの凊理」で、Tarantoolの監芖の蚭定に぀いお詳しく教えおくれたした 。



ロギングの蚭定



監芖に限定するこずはできたせん。システムで䜕が起こっおいるかを完党に把握するには、すべおの蚺断を収集する必芁がありたす。これにはログも含たれたす。さらに、ログレベルが高いほど、デバッグ情報が倚くなり、ログファむルが倧きくなりたす。



ディスク容量は無限ではありたせん。私たちのアプリケヌションは、ピヌク負荷時に1日あたり最倧1TBのログを生成する可胜性がありたす。このような状況では、ディスクを远加できたすが、遅かれ早かれ、空き容量たたはプロゞェクトの予算が䞍足したす。しかし、トレヌスなしでデバッグ情報を倱いたくはありたせん䜕をすべきか



展開の段階の1぀で、logrotate蚭定を远加したした 100MBのファむルをいく぀か生のたたにしお、さらにいく぀か圧瞮したす。通垞の操䜜では、これで24時間以内にロヌカルの問題を芋぀けるこずができたす。ログは、厳密に定矩されたディレクトリにJSON圢匏で保存されたす。すべおのサヌバヌがfilebeat実行デヌモン アプリケヌションのログを収集しに長期保存のためにそれらを送信し、 ElasticSearchを。このアプロヌチにより、ディスクオヌバヌフロヌ゚ラヌが発生しなくなり、長期的な問題が発生した堎合にシステムパフォヌマンスを分析できたす。そしお、このアプロヌチは展開にうたく適合したす。



゜リュヌションをスケヌリングしたす





道は長くおずげがあり、かなりの量の錐䜓がありたした。間違いを繰り返さないために、デプロむメントを暙準化し、CI / CDバンドルGitlab + Jenkinsを䜿甚したした。スケヌリングも倚くの問題を匕き起こし、゜リュヌションのデバッグには1か月以䞊かかりたした。しかし、私たちは察凊したした、そしお今、私たちはあなたず私たちの経隓を共有する準備ができおいたす。手順を芋おいきたしょう。



開発者が自分の問題の解決策をすばやく投入し、それを本番環境に確実に提䟛できるようにするにはどうすればよいですか圌からゞェンキンスファむルを奪う倧胆な境界線の茪郭を描き、それを超えるず展開が䞍可胜になるこずを意味し、開発者にこの道を案内する必芁がありたす。



本栌的なサンプルアプリケヌションを䜜成したした。これは同じ方法で展開され、培底的な出発点です。しかし、私たちはさらに顧客ず協力したした。gitリポゞトリずJenkinsタスクを蚭定するテンプレヌトを自動的に䜜成するためのナヌティリティを䜜成したした。開発者はすべおに぀いおすべおに1時間もかからず、プロゞェクトは本番環境になりたす。



パむプラむンは、暙準のコヌドチェックず環境蚭定から始たりたす。さらに、その埌の展開のために、いく぀かの機胜テストゟヌンず補品に圚庫を眮きたす。次に、ナニットテストフェヌズが始たりたす。



暙準のTarantoolテストフレヌムワヌク luatest github。ナニットテストず統合テストの䞡方を曞き蟌むこずができたす。TarantoolCartridgeを実行および構成するための補助モゞュヌルがありたす 。たた、最近のバヌゞョンでは、カバレッゞを有効にでき たす。簡単なコマンドで開始したす。



.rocks/bin/luatest --coverage
      
      





テストの最埌に、収集された統蚈は、コヌドの品質ず安党性を評䟡するための゜フトりェアであるSonarQubeに送信され たす。内郚では、QualityGateをすでに構成しおいたす。蚀語Lua、Python、SQLなどに関係なく、アプリケヌション内のすべおのコヌドが怜蚌されたす。ただし、Luaには組み蟌みのハンドラヌがないため、カバレッゞを䞀般的な圢匏で衚すために、テストの開始前にむンストヌルされるプラグむンがありたす。



tarantoolctl rocks install luacov 0.13.0-1             #    coverage
tarantoolctl rocks install luacov-reporters 0.1.0-1    #  
      
      





単玔なコン゜ヌルバヌゞョンは次のように衚瀺できたす。



.rocks/bin/luacov -r summary . && cat ./luacov.report.out
      
      





SonarQubeのレポヌトは、次のコマンドによっお生成されたす。



.rocks/bin/luacov -r sonar
      
      





カバレッゞの埌、リンタヌステヌゞが始たりたす。Tarantoolプラグむンの1぀でもあるluacheck githubを䜿甚しおい たす。



tarantoolctl rocks install luacheck 0.26.0-1
      
      





リンタヌの結果もSonarQubeに送信されたす。



.rocks/bin/luacheck --config .luacheckrc --formatter sonar *.lua
      
      





コヌドカバレッゞ統蚈ずリンタヌは䞀緒にカりントされたす。品質ゲヌトを通過するには、すべおの条件を満たす必芁がありたす。



  • テストによるコヌドカバレッゞは少なくずも80でなければなりたせん。
  • 倉曎によっお新しい臭いが発生するこずはありたせん。
  • 重倧な問題の総数は0です。
  • 重芁でない株の総数は5未満です。


Quality Gateを通過した埌、アヌティファクトをベむク凊理する必芁がありたす。我々は、すべおのアプリケヌションがTarantoolカヌトリッゞを䜿甚するこずを決めたので、我々は、䜿甚カヌトリッゞ-CLI githubのを構築するため 。これは、クラスタヌ化されたTarantoolアプリケヌションをロヌカルで実行実際には開発するための小さなナヌティリティです。圌女はたた、ロヌカルずDockerの䞡方でアプリケヌションコヌドを䜿甚しおDockerむメヌゞずアヌカむブを䜜成する方法も知っおいたすたずえば、異なるアヌキテクチャのアヌティファクトを構築する必芁がある堎合。アセンブリ tar.gz



は次のコマンドで実行されたす。



cartridge pack tgz --name <nme> --version <vrsion>
      
      





結果のアヌカむブは、Artifactoryや Mail.ru CloudStorageなどの任意のリポゞトリにアップロヌドされたす 。



ダりンタむムなしで展開



そしお、パむプラむンの最埌のステップはデプロむメント自䜓です。線集の状態に応じお、ロヌリングはさたざたなテストゟヌンで実行されたす。くしゃみには1぀のゟヌンが割り圓おられたす。リポゞトリにプッシュするたびに、パむプラむン党䜓が起動したす。あなたは、倖郚システムずの盞互䜜甚をテストするこずができ、いく぀かの機胜領域は、このために、あなたが䜜成する必芁もありたす マヌゞ芁求で マスタヌ・リポゞトリのブランチを。ただし、本番環境では、倉曎が受け入れられ、マヌゞボタンが抌された埌にのみロヌリングが開始されたす。



ダりンタむムのない展開の重芁な芁玠を思い出させおください。



  • デヌタセンタヌの曎新。
  • レプリカセットのマスタヌの切り替え。
  • アクティブなデヌタセンタヌのバランサヌを蚭定したす。


アップグレヌドするずきは、バヌゞョンずデヌタスキヌマの互換性を監芖する必芁がありたす。いずれかの手順で゚ラヌが発生するず、曎新は停止したす。



曎新は、次のように抂略的に衚すこずができたす。





これで、曎新にはサヌバヌの再起動が䌎いたす。い぀デプロむを続行できるかを理解するために、むンスタンスの状態を埅機する別のプレむブックがありたす。 Tarantool Cartridgeにはステヌトマシンがあり、RolesConfigured状態を埅機しおいたす 。これは、むンスタンスが完党に構成されおいるこずを意味したすそしお、私たちにずっおは、リク゚ストを受け入れる準備ができおいたす。アプリケヌションを初めおデプロむする堎合は、未構成の状態を埅぀必芁がありたす 。



党䜓ずしお、この図は、ダりンタむムのない展開の抂芁を瀺しおいたす。より倚くのデヌタセンタヌに簡単に拡匵できたす。必芁に応じお、マスタヌを倉曎した盎埌に぀たり、デヌタセンタヌ1ず䞀緒にすべおのバックアップ「アヌム」を曎新するか、1぀ず぀曎新するこずができたす。



もちろん、私たちは自分たちの開発をオヌプン゜ヌスにするしかないのです。これたでのずころ、それらは私のansible-cartridgeフォヌクopomuc / ansible-cartridgeで利甚できたすが、 これをメむンリポゞトリのマスタヌブランチに移動する蚈画がありたす。



䟋はここにありたす example。正しく機胜するには、サヌバヌをsupervisord



ナヌザヌ甚に構成する必芁が ありたす tarantool



。構成コマンドは ここにありたす。アプリケヌションを含むアヌカむブには、バむナリも含たれおいる必芁がありたす tarantool



。



ショルダヌ展開を開始するための䞀連のコマンド



#   (  )
ansible-playbook -i hosts.yml playbook.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.0.0-0.tar.gz' \
    --extra-vars 'app_version=1.0.0' \
    --tags supervisor

#     1.2.0

#    dc2
ansible-playbook -i hosts.yml master.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.2.0-0.tar.gz' \
    --limit dc2

#    — dc1
ansible-playbook -i hosts.yml playbook.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.2.0-0.tar.gz' \
    --extra-vars 'app_version=1.2.0' \
    --tags supervisor \
    --limit dc1

#    dc1
ansible-playbook -i hosts.yml master.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.2.0-0.tar.gz' \
    --limit dc1

#    — dc2
ansible-playbook -i hosts.yml playbook.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.2.0-0.tar.gz' \
    --extra-vars 'app_version=1.2.0' \
    --tags supervisor \
    --limit dc2

#   ,    dc1
ansible-playbook -i hosts.yml master.yml \
    -b --become-user tarantool \
    --extra-vars 'base_dir=/data/tarantool' \
    --extra-vars 'cartridge_package_path=./getting-started-app-1.2.0-0.tar.gz' \
    --limit dc1
      
      





このパラメヌタbase_dir



は、プロゞェクトの「ホヌム」ディレクトリぞのパスを瀺したす 。ロヌルアりト埌、サブディレクトリが䜜成されたす。



  • <base_dir>/run



    -制埡゜ケットおよびpidファむル甚。
  • <base_dir>/data



    -.snapファむルず.xlogファむル、およびTarantoolCartridge構成の堎合。
  • <base_dir>/conf



    -アプリケヌション蚭定および特定のむンスタンス甚。
  • <base_dir>/releases



    -バヌゞョン管理ず゜ヌスコヌド甚。
  • <base_dir>/instances



    -アプリケヌションの各むンスタンスの珟圚のバヌゞョンぞのリンク。


パラメヌタ cartridge_package_path



はそれ自䜓を物語っおいたすが、特殊性がありたす。



  • パスがhttp://



    たたはhttps://



    で始たる堎合、アヌティファクトはネットワヌクからプリロヌドされたすたずえば、その隣で発生したアヌティファクトから。
  • それ以倖の堎合、ファむルはロヌカルで怜玢されたす


このパラメヌタヌ app_version



は、フォルダヌ内のバヌゞョン管理に䜿甚されたす <base_dir>/releases



。デフォルトは latest



です。



タグ supervisor



は、オヌケストレヌタヌずしお䜿甚されるこずを意味し supervisord



たす。



展開を開始するための倚くのオプションがありたすが、最も信頌できるのは叀き良きもの Makefile



です。条件付きコマンド make deploy



は任意のCI \ CDに含めるこずができ、すべおがたったく同じように機胜したす。



結果



それで党郚ですこれで、Jenkinsに既補のパむプラむンができ、仲介業者が排陀され、倉曎の配信速床が非垞識になりたした。ナヌザヌ数は増加しおおり、本番環境では、圓瀟の゜リュヌションのみを䜿甚しおすでに500のむンスタンスがデプロむされおいたす。成長する䜙地がありたす。



たた、デプロむプロセス自䜓は理想からはほど遠いものの、DevOpsプロセスをさらに開発するための匷固な基盀を提䟛したす。システムを本番環境に迅速に提䟛し、頻繁に線集するこずを恐れないように、実装を安党に行うこずができたす。



たた、モノリスを持ち蟌むこずは䞍可胜であり、その普及を期埅するこずも私たちの教蚓になりたす。プレむブックの分解、むンストヌルの各段階での圹割の割り圓お、圚庫を柔軟に提瀺する方法が必芁です。い぀か私たちの開発はマスタヌに含たれ、すべおがさらに良くなるでしょう



リンク






All Articles