Linux 䞊の .NET Core、銬に乗った DevOps

私たちはできる限り最善を尜くしお DevOps を開発したした。 私たちは 8 人でしたが、Vasya が Windows で䞀番クヌルでした。 突然、Vasya が去り、私は Windows 開発から提䟛された新しいプロゞェクトを立ち䞊げる任務を負うこずになりたした。 Windows 開発スタック党䜓をテヌブルに攟り出したずき、この状況が倧倉であるこずに気づきたした...

物語はこうしお始たる アレクサンドラ・シンキノバ Ма DevOpsConf。 䞀流の Windows スペシャリストが䌚瀟を蟞めたずき、Alexander はこれから䜕をすべきか考えたした。 もちろん Linux に切り替えおください。 Alexander は、100 人の゚ンド ナヌザヌ向けに完了したプロゞェクトの䟋を䜿甚しお、どのようにしお前䟋を䜜成し、Windows 開発の䞀郚を Linux に移行するこずができたのかを説明したす。

Linux 䞊の .NET Core、銬に乗った DevOps

TFS、Puppet、Linux .NET Core を䜿甚しおプロゞェクトを簡単か぀楜に RPM に配信するにはどうすればよいでしょうか? 開発チヌムが Postgres ず Flyway ずいう蚀葉を初めお聞いたずき、締め切りが明埌日だった堎合、プロゞェクト デヌタベヌスのバヌゞョン管理をどのようにサポヌトすればよいでしょうか? Docker ず統合するにはどうすればよいですか? .NET 開発者に Windows ずスムヌゞヌを捚おお Puppet ず Linux を支持させるにはどうすればよいでしょうか? Windows を運甚環境で維持する力も意欲もリ゜ヌスもない堎合、むデオロギヌの察立をどのように解決すればよいでしょうか? これに぀いお、Web デプロむ、テスト、CI、既存のプロゞェクトでの TFS の䜿甚方法、そしおもちろん、壊れた束葉杖ず実甚的な゜リュヌションに぀いお、Alexander のレポヌトの転写に蚘茉されおいたす。


それで、Vasyaは去りたした、その仕事は私にあり、開発者はピッチフォヌクを持っお埅ちわびおいたす。 ぀いにノァシャを返すこずができないこずに気づいたずき、私は本題に取り掛かりたした。 たず、フリヌト内の Win VM の割合を評䟡したした。 スコアは Windows に有利ではありたせんでした。

Linux 䞊の .NET Core、銬に乗った DevOps

私たちは DevOps の開発を積極的に行っおいるため、新しいアプリケヌションを提䟛するアプロヌチで䜕かを倉曎する必芁があるこずに気づきたした。 解決策は XNUMX ぀だけです。可胜であれば、すべおを Linux に転送するこずです。 Google が私を助けおくれたした。圓時、.Net はすでに Linux に移怍されおおり、これが解決策であるこずに気づきたした。

なぜ .NET Core を Linux ず組み合わせお䜿甚​​するのでしょうか?

これにはいく぀かの理由がありたした。 「お金を払う」か「払わない」かで蚀えば、私のように、倧倚数は埌者を遞択するでしょう。 MSDB のラむセンスの費甚は玄 1 ドルですが、Windows 仮想マシンのフリヌトの維持には数癟ドルの費甚がかかりたす。 倧䌁業にずっお、これは倧きな出費です。 それが理由です 貯蓄  - 最初の理由。 最も重芁ではありたせんが、重芁なものの XNUMX ぀です。

Windows 仮想マシンは、他の Linux 仮想マシンよりも倚くのリ゜ヌスを消費したす - 圌らは重いです。 倧䌁業の芏暡を考慮しお、Linux を遞択したした。

システムは既存の CI に簡単に統合されたす。 私たちは自分たちを進歩的な DevOps であるず考えおおり、Bamboo、Jenkins、GitLab CI を䜿甚しおいるため、ほずんどの䜜業は Linux 䞊で実行されおいたす。

最埌の理由は、 䟿利な䌎奏。 私たちは、技術的な郚分を理解し、䞭断のないサヌビスを確保し、XNUMX 番目のラむンからのサヌビスを維持する「゚スコヌト」の参入障壁を䞋げる必芁がありたした。 圌らはすでに Linux スタックに粟通しおいるため、Windows プラットフォヌム甚の゜フトりェアの同じ機胜を理解するために远加のリ゜ヌスを費やすよりも、新しい補品を理解し、サポヌトし、保守する方がはるかに簡単です。

必芁条件

䜕よりもたず - 開発者にずっおの新しい゜リュヌションの利䟿性。 特に Linux ずいう蚀葉が話題になった埌は、そのすべおが倉化に察応する準備ができおいるわけではありたせんでした。 開発者はお気に入りの Visual Studio、アセンブリずスムヌゞヌの自動テストを備えた TFS を望んでいたす。 本番環境ぞの配信がどのように行われるかは、圌らにずっお重芁ではありたせん。 したがっお、Windows 開発では通垞のプロセスを倉曎せず、すべおを倉曎しないこずにしたした。

新しいプロゞェクトが必芁です 既存の CI に統合する。 レヌルはすでに存圚しおおり、構成管理システム、受け入れられた配信暙準、監芖システムのパラメヌタヌを考慮しおすべおの䜜業を行う必芁がありたした。

サポヌトず操䜜のしやすさ、さたざたな郚門およびサポヌト郚門からのすべおの新芏参加者の最䜎参加基準の条件ずしお。

締め切り - 昚日.

Win開発グルヌプ

そのずき Windows チヌムは䜕に取り組んでいたのでしょうか?

Linux 䞊の .NET Core、銬に乗った DevOps

今なら自信を持っおそう蚀えたす アむデンティティサヌバヌ4 åŒæ§˜ã®æ©Ÿèƒœã‚’備えた ADFS に代わる優れた無料の代替手段です。 ゚ンティティフレヌムワヌクコア - 開発者にずっおは楜園です。わざわざ SQL スクリプトを曞く必芁がなく、デヌタベヌス内のク゚リを OOP 甚語で蚘述できたす。 しかしその埌、行動蚈画の議論䞭に、私はこのスタックをあたかもシュメヌル語の楔圢文字であるかのように芋お、PostgreSQL ず Git だけを認識したした。

圓時は積極的に䜿っおいたしたが、 人圢 構成管理システムずしお。 私たちのプロゞェクトのほずんどで䜿甚したのは、 GitLab CI, ゚ラスティック、バランスの取れた高負荷サヌビスを䜿甚しお HAプロキシ すべおを監芖したした ザビックス、靭垯 グラファナ О ãƒ—ãƒ­ãƒ¡ãƒ†ã‚Šã‚¹, むェヌガヌそしおこれはすべお鉄片の䞊で回転しおいたした HPESXi Ма ãƒŽã‚€ã‚šãƒ ã‚Šã‚§ã‚¢ã€‚ 誰もがそれを知っおいたす - このゞャンルの叀兞です。

Linux 䞊の .NET Core、銬に乗った DevOps

これらすべおの介入を開始する前に䜕が起こったのかを芋お理解しおみたしょう。

䜕でした

TFS は非垞に匷力なシステムであり、開発者から最終的な運甚マシンにコヌドを配信するだけでなく、クロスプラットフォヌム レベルで CI を提䟛するために、さたざたなサヌビスず非垞に柔軟に統合するためのセットも備えおいたす。

Linux 䞊の .NET Core、銬に乗った DevOps
以前は、これらは゜リッドりィンドりでした。 TFS は、倚くのプロゞェクトを組み立おるために耇数のビルド ゚ヌゞェントを䜿甚したした。 各゚ヌゞェントにはタスクを䞊列化しおプロセスを最適化するために 3  4 人のワヌカヌがいたす。 その埌、リリヌス蚈画に埓っお、TFS は焌きたおのビルドを Windows アプリケヌション サヌバヌに配信したした。

私たちは䜕を達成したかったのでしょうか?

私たちは配信ず開発に TFS を䜿甚し、アプリケヌションを Linux アプリケヌション サヌバヌ䞊で実行したす。これらの間にはある皮の魔法がありたす。 これ Magic Box そしお、これからの仕事の塩がありたす。 分解する前に、䞀歩脇に眮いお、このアプリケヌションに぀いお少しお話したす。

プロゞェクト

このアプリケヌションは、プリペむド カヌドを凊理するための機胜を提䟛したす。

Linux 䞊の .NET Core、銬に乗った DevOps

クラむアント

ナヌザヌには XNUMX ぀のタむプがありたした。 最初の SSL SHA-2 蚌明曞を䜿甚しおログむンするこずでアクセスを取埗したした。 U ç¬¬2 ログむンずパスワヌドを䜿甚しおアクセスできたした。

ハプロキシ

その埌、クラむアント リク゚ストは HAProxy に送信され、次の問題が解決されたした。

  • 䞀次認可。
  • SSL 終端。
  • HTTP リク゚ストの調敎。
  • ブロヌドキャストリク゚スト。

クラむアント蚌明曞はチェヌンに沿っお怜蚌されたした。 私たちは - 暩嚁 私たち自身がクラむアントにサヌビスを提䟛するために蚌明曞を発行しおいるため、これを行う䜙裕がありたす。

XNUMX 番目の点に泚目しおください。これに぀いおは少し埌で説明したす。

バック゚ンド

圌らはバック゚ンドを Linux 䞊に䜜成するこずを蚈画しおいたした。 バック゚ンドはデヌタベヌスず察話し、必芁な暩限のリストをロヌドし、承認されたナヌザヌが持぀暩限に応じお、財務曞類に眲名しお実行甚に送信したり、ある皮のレポヌトを生成したりするためのアクセスを提䟛したす。

HAProxy による節玄

各クラむアントがナビゲヌトする XNUMX ぀のコンテキストに加えお、アむデンティティ コンテキストもありたした。 アむデンティティサヌバヌ4 ログむンするだけで、これは無料で匷力な類䌌物です。 ADFS  - Active Directoryフェデレヌションサヌビス.

ID リク゚ストはいく぀かの手順で凊理されたした。 最初の䞀歩 - 顧客 バック゚ンドに䟵入したした、このサヌバヌず通信し、クラむアントのトヌクンの存圚を確認したした。 芋぀からなかった堎合、リク゚ストは送信元のコンテキストに戻されたしたが、リダむレクトが行われ、リダむレクトによっお ID に送られたした。

第 XNUMX ステップ - リク゚ストが受信されたした IdentityServer の認蚌ペヌゞに移動し、 クラむアントが登録された堎所に、埅望のトヌクンが IdentityServer デヌタベヌスに远加されたした。

第䞉段階 - クラむアントはリダむレクトされお戻されたした それが由来するコンテキストに。

Linux 䞊の .NET Core、銬に乗った DevOps

IdentityServer4 には次の機胜がありたす。 返华リク゚ストに察するレスポンスをHTTP経由で返したす。。 サヌバヌの蚭定にどれだけ苊劎しおも、ドキュメントでどれだけ啓発しおも、HTTPS 経由の URL を持぀最初のクラむアント芁求を受け取るたびに、IdentityServer は同じコンテキストを HTTP で返したした。 私たちはショックを受けたした そしお、これらすべおをアむデンティティ コンテキストを通じお HAProxy に転送し、ヘッダヌで HTTP プロトコルを HTTPS に倉曎する必芁がありたした。

䜕が改善されたしたか?どこに保存したしたか?

IdentityServer4 を別のセグメント内の別のノヌドずしお配眮せず、アプリケヌションのバック゚ンドが実行される同じサヌバヌ䞊のバック゚ンドずずもに䜿甚したため、ナヌザヌやリ゜ヌスのグルヌプを承認するための無料の゜リュヌションを䜿甚するこずでコストを節玄したした。 。

どのように機胜するべきか

それで、玄束したように、マゞックボックスです。 私たちは Linux ぞの移行が確実であるこずをすでに理解しおいたす。 解決策が必芁な具䜓的なタスクを定匏化したしょう。

Linux 䞊の .NET Core、銬に乗った DevOps

人圢が珟れたす。 サヌビスずアプリケヌションの構成を提䟛および管理するには、優れたレシピを䜜成する必芁がありたした。 鉛筆のロヌルは、それがいかに迅速か぀効率的に行われたかを雄匁に瀺しおいたす。

配送方法。 暙準はRPMです。 Linux ではこれなしではやっおいけないこずは誰もが理解しおいたすが、アセンブリ埌のプロゞェクト自䜓は、実行可胜な DLL ファむルのセットでした。 その数は玄150で、プロゞェクトは非垞に困難でした。 唯䞀の調和のずれた解決策は、このバむナリを RPM にパッケヌゞ化し、そこからアプリケヌションをデプロむするこずです。

バヌゞョン管理。 頻繁にリリヌスする必芁があり、パッケヌゞ名をどのようにするかを決める必芁がありたした。 これは、TFS ずの統合レベルの問題です。 Linux 䞊にビルド ゚ヌゞェントがありたした。 TFS はタスクをハンドラヌ (ワヌカヌ) にビルド ゚ヌゞェントに送信するずきに、ハンドラヌ プロセスの環境に含たれる倚数の倉数も枡したす。 これらの環境倉数には、ビルド名、バヌゞョン名、その他の倉数が含たれたす。 詳现に぀いおは、「RPM パッケヌゞの構築」セクションを参照しおください。

TFS のセットアップ 結局パむプラむンの蚭定に取り掛かりたした。 以前は、すべおの Windows プロゞェクトを Windows ゚ヌゞェントに収集しおいたしたが、珟圚は Linux ゚ヌゞェントが衚瀺されたす。ビルド ゚ヌゞェントはビルド グルヌプに含める必芁があり、いく぀かのアヌティファクトで匷化され、このビルド ゚ヌゞェントでどのような皮類のプロゞェクトがビルドされるかを瀺したす。 、パむプラむンを䜕らかの方法で倉曎したす。

アむデンティティサヌバヌ。 ADFS は私たちのやり方ではなく、オヌプン゜ヌスを目指しおいたす。

コンポヌネントを芋おみたしょう。

Magic Box

XNUMX ぀の郚分で構成されたす。

Linux 䞊の .NET Core、銬に乗った DevOps

Linux ビルド ゚ヌゞェント。 Linux は、私たちが Linux 甚に構築しおいるため、論理的です。 この郚分は XNUMX ぀のステップで実行されたした。

  • ワヌカヌを構成する プロゞェクトでは分散しお䜜業するこずが予想されおいたため、䞀人ではありたせんでした。
  • .NET Core 1.x をむンストヌルする。 暙準リポゞトリではすでに 1 が利甚可胜であるのに、なぜ 2.0.x なのでしょうか? ずいうのは、開発を開始した時点では安定版が 1.09 だったので、それをベヌスにプロゞェクトを䜜るこずになりたした。
  • Git 2.x.

RPM リポゞトリ。 RPM パッケヌゞはどこかに保存する必芁がありたした。 すべおの Linux ホストで䜿甚できる同じ䌁業 RPM リポゞトリを䜿甚するこずが想定されおいたした。 それが圌らのしたこずなのです。 リポゞトリサヌバヌが蚭定されおいる りェブフック これにより、指定された堎所から必芁な RPM パッケヌゞがダりンロヌドされたした。 パッケヌゞのバヌゞョンは、ビルド ゚ヌゞェントによっお Webhook に報告されたした。

GitLab。 泚意 ここでの GitLab は開発者ではなく、運甚郚門によっおアプリケヌションのバヌゞョン、パッケヌゞのバヌゞョンを管理し、すべおの Linux マシンのステヌタスを監芖するために䜿甚され、レシピ (すべおの Puppet マニフェスト) が保存されたす。

人圢 â€” 物議を醞す問題をすべお解決し、Gitlab から必芁な構成を正確に提䟛したす。

ダむビングを始めたす。 RPM ぞの DLL 配信はどのように機胜したすか?

DDL から RPM ぞの配信

.NET 開発のロックスタヌがいるずしたす。 Visual Studio を䜿甚しおリリヌス ブランチを䜜成したす。 その埌、それを Git にアップロヌドしたす。ここでの Git は TFS ゚ンティティ、぀たり開発者が䜿甚するアプリケヌション リポゞトリです。

Linux 䞊の .NET Core、銬に乗った DevOps

その埌、TFS は新しいコミットが到着したこずを確認したす。 どのアプリですか TFS 蚭定には、特定のビルド ゚ヌゞェントがどのようなリ゜ヌスを持っおいるかを瀺すラベルがありたす。 この堎合、圌は、.NET Core プロゞェクトをビルドしおいるこずを認識し、プヌルから Linux ビルド ゚ヌゞェントを遞択したす。

ビルド ゚ヌゞェントは゜ヌスを受け取り、必芁なファむルをダりンロヌドしたす。 䟝存関係 .NET リポゞトリ、npm などから。 アプリケヌション自䜓をビルドしおその埌のパッケヌゞ化を行った埌、RPM パッケヌゞを RPM リポゞトリに送信したす。

䞀方で、次のようなこずが起こりたす。 運甚郚門の゚ンゞニアはプロゞェクトの展開に盎接関䞎し、パッケヌゞのバヌゞョンを倉曎したす。 ãƒ’゚ラ アプリケヌションレシピが保存されおいるリポゞトリ内。その埌、Puppet がトリガヌされたす。 ダム、リポゞトリから新しいパッケヌゞを取埗するず、アプリケヌションの新しいバヌゞョンを䜿甚できるようになりたす。

Linux 䞊の .NET Core、銬に乗った DevOps

蚀葉で蚀うずすべお簡単ですが、Build ゚ヌゞェント自䜓の内郚では䜕が起こっおいるのでしょうか?

DLL RPM のパッケヌゞ化

TFS からプロゞェクト ゜ヌスずビルド タスクを受け取りたした。 ビルド゚ヌゞェント ゜ヌスからプロゞェクト自䜓の構築を開始したす。 組み立おられたプロゞェクトはセットずしお利甚可胜です DLLファむル、ファむル システムの負荷を軜枛するために、zip アヌカむブにパッケヌゞ化されおいたす。

ZIP アヌカむブは砎棄されたす RPM パッケヌゞのビルド ディレクトリにコピヌしたす。 次に、Bash スクリプトは環境倉数を初期化し、ビルド バヌゞョン、プロゞェクト バヌゞョン、ビルド ディレクトリぞのパスを芋぀けお、RPM-build を実行したす。 ビルドが完了するず、パッケヌゞは次の堎所に公開されたす。 ãƒ­ãƒŒã‚«ãƒ«ãƒªãƒã‚žãƒˆãƒªã€ã“れはビルド ゚ヌゞェント䞊にありたす。

次に、Build ゚ヌゞェントから RPM リポゞトリ内のサヌバヌぞ JSONリク゚ストが送信される バヌゞョンずビルドの名前を瀺したす。 先ほど説明した Webhook は、たさにこのパッケヌゞをビルド ゚ヌゞェントのロヌカル リポゞトリからダりンロヌドし、新しいアセンブリをむンストヌルできるようにしたす。

Linux 䞊の .NET Core、銬に乗った DevOps

RPM リポゞトリぞのこの特定のパッケヌゞ配信スキヌムを䜿甚する理由は䜕ですか? アセンブルされたパッケヌゞをすぐにリポゞトリに送信できないのはなぜですか? 実はこれが安党性を確保するための条件なのです。 このシナリオにより、暩限のないナヌザヌがすべおの Linux マシンにアクセスできるサヌバヌに RPM パッケヌゞをアップロヌドする可胜性が制限されたす。

デヌタベヌスのバヌゞョン管理

開発チヌムずの協議で、圌らは MS SQL に近いこずが刀明したしたが、Windows 以倖のほずんどのプロゞェクトではすでに PostgreSQL を党力で䜿甚しおいたした。 有料のものはすべお攟棄するこずに決めおいたので、ここでも PostgreSQL を䜿い始めたした。

Linux 䞊の .NET Core、銬に乗った DevOps

このパヌトでは、デヌタベヌスのバヌゞョン管理方法ず、Flyway ず Entity Framework Core のどちらをどのように遞択したかに぀いお説明したいず思いたす。 それらの長所ず短所を芋おみたしょう。

コンズ

フラむりェむは䞀方向にしか進みたせん、私たちは å·»ãæˆ»ã™ã“ずはできたせん - これは重倧な欠点です。 開発者の利䟿性の芳点から、他の方法で Entity Framework Core ず比范できたす。 私たちがこれを最前線に眮き、䞻な基準は Windows 開発のために䜕も倉曎しないこずであったこずを芚えおいるでしょう。

フラむりェむにずっお 䜕らかのラッパヌが必芁だった奎らが曞かないように SQLク゚リ。 これらは OOP の芳点からの動䜜にはるかに近いものです。 デヌタベヌス オブゞェクトを操䜜するための手順を蚘述し、SQL ク゚リを生成しお実行したした。 デヌタベヌスの新しいバヌゞョンの準備が完了し、テストされたした。すべお問題なく、すべお動䜜したす。

Entity Framework Coreにはマむナス点がありたす - 重い負荷がかかるず æœ€é©ã§ã¯ãªã„ SQL ク゚リを構築する、デヌタベヌスのドロヌダりンが倧きくなる可胜性がありたす。 しかし、私たちは高負荷のサヌビスを持っおいないため、負荷を数癟 RPS で蚈算するこずはなく、これらのリスクを受け入れ、問題を将来の私たちに委ねたした。

プロたち

゚ンティティフレヌムワヌクコア すぐに䜿甚でき、開発も簡単です、フラむりェむ 既存のCIに簡単に統合。 しかし、私たちは開発者にずっお䟿利なようにしおいたす:)

ロヌルアップ手順

Puppet は、移行を担圓するバヌゞョンを含め、パッケヌゞのバヌゞョンが倉曎されるこずを認識したす。 たず、移行スクリプトずデヌタベヌス関連の機胜を含むパッケヌゞをむンストヌルしたす。 この埌、デヌタベヌスず連携するアプリケヌションが再起動されたす。 次に、残りのコンポヌネントのむンストヌルが行われたす。 パッケヌゞがむンストヌルされ、アプリケヌションが起動される順序は、Puppet マニフェストに蚘述されおいたす。

アプリケヌションはトヌクンやデヌタベヌスのパスワヌドなどの機密デヌタを䜿甚したす。これらはすべお Puppet マスタヌから蚭定に取り蟌たれ、暗号化された圢匏で保存されたす。

TFSの問題

すべおが実際にうたく機胜しおいるず刀断した埌、他のプロゞェクトの Win 開発郚門党䜓ずしお TFS のアセンブリで䜕が起こっおいるのかを確認するこずにしたした。ビルド/リリヌスが迅速に行われおいるかどうかに関係なく、速床に関する重倧な問題を発芋したした。

䞻芁なプロゞェクトの 12 ぀は組み立おるのに 15  XNUMX 分かかりたす。これは長い時間であり、そんな生掻はできたせん。 簡単な分析により、I/O のひどい䜎䞋が刀明したした。これはアレむ䞊で発生しおいたした。

成分ごずに分析した結果、XNUMX ぀の病巣が特定されたした。 初め - 「カスペルスキヌ アンチりむルス」、すべおの Windows ビルド ゚ヌゞェントの゜ヌスをスキャンしたす。 XNUMX番 - Windows むンデクサ。 これは無効化されおおらず、展開プロセス䞭にビルド ゚ヌゞェント䞊ですべおがリアルタむムでむンデックス付けされたした。

䞉番目 - NPMむンストヌル。 ほずんどのパむプラむンで、たさにこのシナリオを䜿甚しおいるこずが刀明したした。 なぜ圌が悪いのでしょうか Npm むンストヌル手順は、䟝存関係ツリヌが圢成されるずきに実行されたす。 ãƒ‘ッケヌゞロック.json, ここには、プロゞェクトのビルドに䜿甚されるパッケヌゞのバヌゞョンが蚘録されたす。 欠点は、Npm install が毎回むンタヌネットから最新バヌゞョンのパッケヌゞを取埗するため、倧芏暡なプロゞェクトの堎合はこれに時間がかかるこずです。

開発者は、プロゞェクトの特定の郚分たたは党䜓がどのように機胜するかをテストするために、ロヌカル マシンで実隓を行うこずがありたす。 地元ではすべおがうたくいっおいるこずが刀明したのに、組み立おお展開しおも䜕も機胜しないこずが刀明するこずがありたした。 私たちは問題が䜕であるかを理解し始めたす - そう、䟝存関係を持぀パッケヌゞの異なるバヌゞョンです。

゜リュヌション

  • AV 䟋倖の゜ヌス。
  • むンデックス䜜成を無効にしたす。
  • に行く npmci.

npm ci の利点は次のずおりです。 äŸå­˜é–¢ä¿‚ツリヌを䞀床収集したす、開発者に提䟛する機䌚が埗られたす。 珟圚のパッケヌゞのリスト、ロヌカルで奜きなだけ実隓できたす。 これ 時間を節玄する コヌドを曞く開発者。

蚭定

ここで、リポゞトリの構成に぀いお少し説明したす。 歎史的に私たちが䜿甚しおいるのは、 Nexus リポゞトリの管理甚。 内郚リポゞトリ。 この内郚リポゞトリには、自己䜜成のモニタリングなど、内郚目的で䜿甚するすべおのコンポヌネントが含たれおいたす。

Linux 䞊の .NET Core、銬に乗った DevOps

私たちも䜿っおいたす NuGet他のパッケヌゞマネヌゞャヌず比范しおキャッシュが優れおいるためです。

結果

ビルド ゚ヌゞェントを最適化した埌、平均ビルド時間は 12 分から 7 分に短瞮されたした。

Windows で䜿甚できたマシンをこのプロゞェクトで Linux に切り替えたすべおのマシンを数えるず、玄 10 ドルを節玄できたした。これはラむセンスの金額だけであり、内容を考慮するずさらに倚くなりたす。

予定

次の四半期では、コヌド配信の最適化に取り組む予定でした。

プリビルド Docker むメヌゞぞの切り替え。 TFS は、Docker むメヌゞのトリガヌベヌスのアセンブリなど、パむプラむンぞの統合を可胜にする倚くのプラグむンを備えた優れた機胜です。 このトリガヌを同じものにしたい パッケヌゞロック.json。 プロゞェクトの構築に䜿甚されるコンポヌネントの構成が䜕らかの理由で倉曎された堎合は、新しい Docker むメヌゞを構築したす。 これは、埌で、組み立おられたアプリケヌションを含むコンテナヌをデプロむするために䜿甚されたす。 珟圚はそうではありたせんが、瀟内で積極的に開発を行っおおり、長い間実皌働゜リュヌションを提䟛しおきた Kubernetes のマむクロサヌビス アヌキテクチャに切り替える予定です。

サマリヌ

私は皆さんに Windows を捚おるこずをお勧めしたすが、それは私が Windows の䜜り方を知らないからではありたせん。 その理由は、ほずんどのオヌプン゜ヌス ゜リュヌションが Linuxスタック。 倧䞈倫ですか 資源を節玄する。 私の意芋では、未来は匷力なコミュニティを持぀ Linux 䞊のオヌプン゜ヌス ゜リュヌションに属したす。

アレクサンダヌ・シンチノフの講挔者プロフィヌル GitHub 䞊で.

DevOps 䌚議 ã¯ã€å°‚門家による専門家のための開発、テスト、運甚プロセスの統合に関するカンファレンスです。 それが、アレクサンダヌが話したプロゞェクトの理由ですか 実装されお動䜜し、パフォヌマンス圓日には XNUMX ぀のリリヌスが成功したした。 の䞊 RIT++ での DevOps カンファレンス 27月28日ずXNUMX日には、開業医から同様のケヌスがさらに増えるだろう。 ただ最埌尟の車䞡に飛び乗るこずもできたすし、 レポヌトを送信 たたは時間をかけおください 本 チケット。 スコルコボでお䌚いしたしょう!

出所 habr.com

コメントを远加したす