AWS Cloud for DevExtremeのドロヌンCI

この蚘事では、 DevExtremeリポゞトリ甚にAmazon AWSずの継続的な統合を蚭定する方法に぀いお説明したす。







デザむナヌのディマによる超コラヌゞュ







数か月間、 GitHubのオヌプンリポゞトリで DevExtremeを開発しおいたす 。 最初から私たちずの継続的な統合は、CIプラットフォヌムTravis、Shippableなどに䟝存しないようにDockerに基づいお構築されたしたが、リポゞトリの公開以来、目立ったものではなく、䜿い慣れたTravis CIを䜿甚しおテストを実行したした。 GitHubで自動テストの「実行」を行うのはごく䞀郚であり、いわば、最初の行ず、フォヌクおよびプルリク゚ストテクニックに察するTravisの機胜で十分でした。







時間が経぀に぀れお、同僚はプルリク゚ストのキュヌに぀いお䞍満を蚀い始めたしたしかし、圌らは苊しみたした。 10月末にTravisがDocker Hubずの接続を倱った 10月の終わりに䜕かをする時が来たずいう考えは、 DevExtreme 17.2のベヌタリリヌスの準備をしおいたした。







䌁業のAWSアカりントで実隓するためのゎヌサむンを受け取ったので、私はDroneプロゞェクトに2回目のチャンスを䞎えるこずにしたした。 なぜ2番目ですか 「GitHubの出口で実行する」プロセスですでに詊しおみたからです。 その埌、私たちのリポゞトリはプラむベヌトであり、ドロヌンは今日よりもさらに生であり、䞀時的な膝圓おむンフラストラクチャ、より正確にはゞョブをアップグレヌドした埌に残った叀いワヌクステヌションでそれを起動したしたIT郚門はそれらをピックアップするこずを玄束したしたが、急いで







その結果、矎しいアドレスhttps://devextreme-ci.devexpress.com/DevExpress/DevExtremeで利甚可胜なスポットむンスタンスの゚ラスティックCIむンフラストラクチャを䞊げるこずができたした。







ドロヌンci







開発内容を公開したしたが、その過皋で埗た経隓を共有したいず思いたす。







ドロヌンに぀いおの2぀の蚀葉



ドロヌン自䜓はHabréでよく説明されおいたす 。 これは、䞋からのDocker、䞊からのDocker、およびDocker Dockerが駆動するGoの継続的な統合のシステムです。 Radio-Tの第570号で 、Umputoon有名なDockerの愛奜家は、ドロヌンに぀いお次のように述べおいたす。







Droneアヌキテクチャは、CIプラットフォヌムに兞型的なものです。









AWS内郚



すべおは、 ドロヌンサヌバヌが実行されおいる小さなt2.microむンスタンスで始たりたした。







たた、゚ヌゞェントの堎合、 自動スケヌリンググルヌプが確立されたした以降、 ASGず呌びたす。 私は、圌らのために仕事があったずきだけ、゚ヌゞェントを維持したかった。 これは、最近EC2の1秒あたりの関皎率が高いずいう事実に照らしお特に魅力的です 。







スケヌラヌ



「ASGキャパシティの管理方法」ずいう質問が生じたずきに、興味深いこずが始たりたした。 暙準の「プロセッサ負荷の堎合に远加」手段は適切ではありたせん。 Droneキュヌを監芖し、キュヌが倧きくなったら゚ヌゞェントを远加し、キュヌが解決したら゚ヌゞェントを静かにオフにする必芁がありたす。







このため、ナヌティリティのコヌドネヌムはscalerです。 .NET Coreでこのような機䌚がある堎合、Cに抵抗できたせん。







スケヌラヌコン゜ヌル







スケヌラヌは、次の単玔なルヌプを実装したす。









䞻なニュアンスは、容量を取埗しお削枛するこずはできないずいうこずです。 これが行われるず、゚ヌゞェントむンスタンスはただビゞヌ状態の間に返枈される可胜性があり、これはいわゆるゟンビビルドの圢成たで吊定的な結果に぀ながりたす 。







この点で、ASGはScale Inむンスタンスからの保護を起動し、容量が明らかに枛少するこずはありたせん。 ゚ヌゞェントが退職の候補になるずすぐに、スケヌラヌは圌をグルヌプから陀倖しデタッチ、 SSMを介しおこのコマンドシヌケンスを送信したす 。 SIGINT



シグナルは、新しいタスクを匕き受けおはならず、既存のタスクの完了を埅っおから終了するこずを゚ヌゞェントに理解させたす。 したがっお、゚ヌゞェントは脇に眮き、平和的に圌の業務を完了し、電源を切りたす。 グルヌプの䟋倖は、容量削枛フラグが蚭定された状態で行われたす。これにより、キュヌがいっぱいになり始めるず、ASGはすぐに新しい゚ヌゞェントを远加する準備ができたす。







ASGの容量を管理するこずに加えお、スケヌラヌは远加のチェックず束葉杖でハングアップしたす。









むンスタンスオンデマンドvs. スポット



最初は、゚ヌゞェントはオンデマンドのc4.xlargeむンスタンスを䜿甚しおいたした。 それぞれに最倧4぀の゚ヌゞェントがありたす1コアあたり1゚ヌゞェントの割合。







システムが倚かれ少なかれ動き始めるずすぐに、「スポットむンスタンスのリク゚スト」チェックボックスをオンにしお蚭定を詊したした。 それはうたくいくこずが刀明した。 スポットむンスタンスは垞に存圚し、「テむクアりェむ」されるむンスタンスを芋たこずはありたせんスポット䟡栌=オンデマンド䟡栌。







それらの動䜜は匕き続き芳察する必芁があり、堎合によっおは、スポットでのASGずオンデマンドでのASGの自動切り替えにねじ蟌たれたす。







キャッシュ



継続的な統合では、同じDockerむメヌゞずNPM / NuGetパッケヌゞを繰り返しダりンロヌドしたす。 倖郚トラフィックを枛らし、むメヌゞおよびパッケヌゞレゞストリにアクセスできない期間を軜枛するために、S3でキャッシングを実装したした。







Drone甚の既補のドロヌン-s3-cacheプラグむンがありたすが、十分な蚭定がなかったため、私はそれを䜿甚したせんでした。 ディレクトリnode_modulesおよびdotnet_packagesをダりンロヌド/埩元するには、単玔なdrone-cache.shスクリプトを䜿甚したす。







S3バケット「devextreme-ci-cache」は、VPC内から匿名で曞き蟌むこずができるように構成されおいたす。 これは、秘密鍵に煩わされる必芁がないため䟿利です。 ただし、この構成では、アヌカむブを匿名で読むこずができたす。 パッケヌゞキャッシュに぀いおは、これは恐ろしいこずではありたせんが、VPCによっお読み取りが制限されるようにポリシヌを構成するこずはできたせんでしたが、同時に蚱可されたナヌザヌから暩利を奪いたせん。 同様の状況に぀いおは、StackOverflowでここずここで説明したす 。 このセットアップに関するアむデアや経隓がある堎合は、コメントでお知らせください







キャッシュ内のアヌカむブは、フォヌクブランチによっお区別されたす。 蚭定された有効期限ラむフサむクルルヌルのおかげで、期限切れのオブゞェクトはS3から自動的に削陀されたす。







Dockerむメヌゞをキャッシュするために、 レゞストリはDroneサヌバヌの暪にあるプルスルヌキャッシュモヌドで動䜜し、S3にBLOBを栌玍したす 構成 。 レゞストリぱヌゞェントのセキュリティグルヌプ内でのみ䜿甚でき、゚ヌゞェント自䜓はこのミラヌを䜿甚するように構成されおいたす 。 非アクティブな画像/レむダヌは、7日埌に自動的にキャッシュから削陀されたす。







Https



システムが実行可胜であるこずが明らかになったずき、ドロヌンサヌバヌはnginxの埌ろに隠れおいたした 。 りェブサむトチヌムは、Elastic IP Droneサヌバヌをアタッチしたサブドメむン「devextreme-ci.devexpress.com」を芪切に提䟛しおくれたした。 サブドメむンの堎合、 自動曎新を䜿甚しおLet's Encryptを䜿甚しおHTTPSを構成したした。







小蚈



Droneは、GitHubのDevExtremeリポゞトリのAWSクラりドに4週間ありたす。 チヌムは幞せです。 「ドロヌンはどうですか」ずいう質問に察しお 基本的に、圌らは「火事速い、口ひげを生やしたのではない」ず蚀いたすおおよそ口ひげ=トラビス。 もちろん、AWSのリ゜ヌスはTravis CIずは異なり、無料ではありたせん。新しいCIのコストはただわかりたせんが、[ TODOはこのアミュヌズメントを正圓化するために䜕を曞くかを考えおいたす ]。







真剣に、真実は䞀緒に働くのがより楜しくなりたした。 急いでプルリク゚ストが流れおいるずき、CIキュヌを埅機しおいる間、私たちはもう座っおいたせん信じられたせん。 同時に、AWSリ゜ヌスのコストは䜿甚の匷床に盎接䟝存したす。 非アクティブな期間たずえば、幎末幎始などには、1぀のt2.microむンスタンスのみが実行され、゚ヌゞェントがオフになり、キャッシュがクリアされたす。 䞀蚀で蚀えば、私たちは自分たちの利益のためにクラりド技術を䜿甚しおいるず信じたいです。







ドロヌンを詊したしたか あなたの印象は クラりドに継続的に統合するために、それたたは他のプラットフォヌムを展開したしたか コメントで教えおください








All Articles