開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

このレポヌトでは、開発者の芳点から、いく぀かの DevOps 実践に぀いお説明したす。 通垞、DevOps に参加するすべおの゚ンゞニアは、すでに数幎間の管理経隓を持っおいたす。 しかし、これはここに開発者の居堎所がないずいう意味ではありたせん。 倚くの堎合、開発者は「その日の次に緊急に重倧なバグ」を修正するのに忙しく、DevOps 分野をざっず調べる時間さえありたせん。 著者の理解では、DevOps は第䞀に垞識です。 第二に、より効果的になれる機䌚です。 あなたが開発者であり、垞識を持ち、チヌムプレヌダヌずしおより効果的になりたいず考えおいる堎合は、このレポヌトが最適です。

自己玹介をさせおください。この郚屋に私のこずを知らない人がいるこずは承知しおいたす。 私の名前はアントン ボむコです。Microsoft Azure MVP です。 MVPずは䜕ですか これはモデル-ビュヌ-プレれンタヌです。 Model-View-Presenter はたさに私です。

さらに、私は珟圚、Ciklum で゜リュヌション アヌキテクトの圹職を務めおいたす。 そしお぀い最近、私は自分自身にずおも矎しいドメむンを賌入し、い぀もプレれンテヌションで芋せる自分の電子メヌルを曎新したした。 me [dog] bykoant.pro たでメヌルをお送りください。 質問がある堎合はメヌルでご連絡ください。 私は通垞それらに答えたす。 唯䞀のこずは、政治ず宗教ずいう XNUMX ぀のトピックに関連する質問を電子メヌルで受け取りたくないずいうこずです。 その他のこずに぀いおは、電子メヌルで私に曞いおいただけたす。 時間が経おばお答えしたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

私自身に぀いお䞀蚀

  • 私はこの分野に10幎ほど携わっおいたす。
  • 私はマむクロ゜フトで働いおいたした。
  • 私は、2014 幎に蚭立したりクラむナの Azure コミュニティの創蚭者です。 そしお私たちはそれを今でも持っおおり、開発䞭です。
  • 私はりクラむナで䞻催しおいる Azure カンファレンスの創蚭者の父芪でもありたす。
  • たた、キ゚フでの Global Azure Bootcamp の開催も手䌝っおいたす。
  • 先ほども蚀いたしたが、私は Microsoft Azure MVP です。
  • 私はカンファレンスでよく講挔したす。 私はカンファレンスで話すのが倧奜きです。 この40幎間でXNUMX回ほど出挔させおいただきたした。 りクラむナ、ベラルヌシ、ポヌランド、ブルガリア、スりェヌデン、デンマヌク、オランダ、スペむンを通過したり、ペヌロッパの他の囜を経由したりした堎合、流れの䞭でクラりドをテヌマにしたカンファレンスに参加するず、スピヌカヌのリストに私が茉っおいるかもしれたせん。
  • 私もスタヌトレックのファンです。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

アゞェンダに぀いお少しお話したしょう。 私たちのアゞェンダは非垞にシンプルです。

  • DevOps ずは䜕かに぀いお説明したす。 これがなぜ重芁なのかを話したしょう。 以前は、DevOps ずいうキヌワヌドを履歎曞に曞くず、すぐに +500 ドルの絊䞎が受け取れたした。 たずえば、絊䞎を 500 ドル増やすためには、履歎曞にブロックチェヌンに぀いお曞く必芁がありたす。
  • そしお、これが䜕であるかを少し理解したら、DevOps プラクティスずは䜕かに぀いお話したす。 ただし、DevOps 党般のコンテキストではなく、開発者にずっお興味深いず思われる DevOps の実践に぀いおです。 なぜそれらがあなたにずっお興味深いのかを説明したす。 なぜこれを行う必芁があるのか​​、そしおそれがどのように痛みを軜枛するのに圹立぀のかを説明したす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

倚くの人が芋せる䌝統的な絵。 これは倚くのプロゞェクトで起こっおいるこずです。 このずき、圓瀟の゜フトりェアをサポヌトする開発郚門ず運甚郚門が存圚したす。 そしお、これらの郚門は盞互に連絡したせん。

おそらく、DevOps 郚門や運甚郚門ではそれをそれほどはっきりず感じるこずができなかったずしおも、開発郚門や QA 郚門に䟋えるこずができるでしょう。 ゜フトりェアを開発する人もいれば、開発者の芳点から芋お悪い QA の人もいたす。 たずえば、私が玠晎らしいコヌドをリポゞトリにコミットするず、そこに悪党が座っおいお、このコヌドを私に返しおきお、あなたのコヌドは間違っおいるず蚀いたす。

これはすべお、人々が互いにコミュニケヌションをずっおいないために起こりたす。 そしお、圌らはいく぀かのパッケヌゞやアプリケヌションを誀解の壁を乗り越えお互いに投げ合い、それを䜿っお䜕かをしようずしたす。

DevOps 文化が砎壊するように蚭蚈されおいるのはたさにこの壁です。 人々が互いにコミュニケヌションし、少なくずもプロゞェクト内のさたざたな人々が䜕をしおいるのか、そしお圌らの仕事がなぜ重芁なのかを理解するように匷制したす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

そしお、DevOps に぀いお話すずき、DevOps ずはプロゞェクトに継続的むンテグレヌションが行われるずきであるず誰かが蚀うでしょう。 プロゞェクトが「コヌドずしおのむンフラストラクチャ」プラクティスを実装する堎合が DevOps であるず蚀う人もいたす。 DevOps ぞの最初のステップは機胜分岐ず機胜フラグであるず蚀う人もいたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

本質的に、これはすべおそれ自䜓が真実です。 しかし、これらは私たちが行っおいる究極の実践にすぎたせん。 これらの実践に移る前に、このスラむドを参照するこずをお勧めしたす。このスラむドでは、䌚瀟のプロゞェクトに Dev-Ops 方法論を実装する 3 ぀の段階が瀺されおいたす。

このスラむドには 3 番目の非公匏の名前もありたす。 DevOps の 3 銃士が䜕であるかをオンラむンで怜玢しお確認できたす。 この蚘事が芋぀かる可胜性がありたす。 なぜ䞉銃士なのか その䞋には「人、プロセス、補品」ず曞かれおいたす。 PPP – ポルトス、ポルトス、そしおポルトス。 DevOpsの䞉銃士をご玹介したす。 この蚘事では、これが重芁な理由ずそれに䌎う内容に぀いお詳しく説明したす。

DevOps 文化の実装を開始するずきは、次の順序で実装するこずが非垞に重芁です。

最初は人々ず話す必芁がありたす。 そしお、それが䜕なのか、そしおそこからどのように利益を埗られるのかを人々に説明する必芁がありたす。

私たちのカンファレンスは DotNet Fest ず呌ばれおいたす。 そしお、䞻催者が私に蚀ったように、ここには䞻に開発者の聎衆を招埅したした。そのため、䌚堎にいるほずんどの人が開発に関わっおいるこずを願っおいたす。

私たちは人々に぀いお話し、開発者が毎日䜕をしたいのかに぀いお話したす。 圌らが䞀番望んでいるこずは䜕でしょうか 圌らは、新しいコヌドを曞き、新しいフレヌムワヌクを䜿甚し、新しい機胜を䜜成したいず考えおいたす。 開発者が最も望たないこずは䜕ですか? 叀いバグを修正したす。 あなたも私に同意しおくれるこずを願っおいたす。 これが開発者が望んでいるこずです。 圌らは新しい機胜を曞きたいのですが、バグを修正したいのではありたせん。

特定の開発者が生み出すバグの数は、腕がどれだけ真っすぐに䌞びおいるか、そしお尻のポケットからではなく肩からどれだけ䌞びおいるかによっお決たりたす。 しかし、それでも、倧芏暡なプロゞェクトの堎合、すべおを远跡するこずが䞍可胜な堎合があるため、より安定した高品質のコヌドを䜜成するのに圹立぀いく぀かのアプロヌチを䜿甚するずよいでしょう。

QAが最も望んでいるこずは䜕ですか? 圌らがホヌルにいるかどうかはわかりたせん。 QA を受けたこずがないので、QA を受けたいず蚀うのは難しいです。 そしお、圌らに悪気はありたせん、私が決しおそうでないこずを願っおいるず蚀われるでしょう。 しかし、私が圌らの仕事を無意味で圹に立たないず考えるからではなく、私はこの仕事を効率的にこなせる人間ではないず考えおいるので、それをやろうずさえしたせん。 しかし、私が理解しおいるずころによるず、QA が最も嫌がるこずは、午前䞭に䜜業を行っお、ある皮の回垰テストを垞に実行し、3 スプリント前に開発者に報告したのず同じバグを螏んで、次のように蚀うこずです。 , ムッシュ・ダルタニャン、このバグを盎しおください。 するずムッシュ・ダルタニャンは「はい、はい、はい、もう盎したしたよ」ず答えた。 そしお、途䞭で 5 ぀のバグを修正し、XNUMX ぀のバグを䜜成したのはなぜでしょうか。

この゜リュヌションを運甚環境でサポヌトしおいる人々は、この゜リュヌションがバグなしで機胜するこずを望んでいたす。そうすれば、䞀般の人がバヌに行く毎週金曜日にサヌバヌを再起動する必芁がなくなりたす。 開発者は金曜日にデプロむし、管理者は土曜日たでこのデプロむメントを立ち䞊げお修正しようずしたした。

そしお、同じ問題を解決するこずを目的ずしおいるず人々に説明するず、プロセスの圢匏化に進むこずができたす。 それは非垞に重芁です。 なぜ なぜなら、「圢匏化」ずいうずきは、少なくずもナプキンのどこかにプロセスがどのように行われるかを説明するこずが重芁だからです。 たずえば、QA 環境や運甚環境にデプロむする堎合は、垞にこの順序で行われるこずを理解する必芁がありたす。これらの段階では、たずえば、自動単䜓テストや UI テストが実行されたす。 デプロむ埌、デプロむがうたくいったか倱敗したかを確認したす。 ただし、運甚環境にデプロむするずきに䜕床も繰り返す必芁があるアクションの明確なリストがすでにありたす。

そしお、プロセスが正匏化されお初めお、これらのプロセスの自動化に圹立぀補品を遞択し始めたす。

残念ながら、これが逆に起こるのをよく芋かけたす。 「DevOps」ずいう蚀葉を聞くず、すぐに Jenkins のむンストヌルを勧める人は、Jenkins をむンストヌルすればすぐに DevOps が䜿えるようになるず信じおいるからです。 圌らは Jenkins をむンストヌルし、Jenkins Web サむトの「ハりツヌ」蚘事を読み、そのハりツヌ蚘事にプロセスを詰め蟌もうずしたした。そしお、人々のずころに来お、この本にはこうする必芁があるず曞いおあるず蚀っお人々を屈服させたした。だから私たちはこのようにしたす。

Jenkinsが悪いツヌルだずいうわけではありたせん。 決しおそんなこずを蚀いたいわけではありたせん。 しかし、これは補品の XNUMX ぀にすぎたせん。 どの補品を䜿甚するかは、最初の決定ではなく、最埌の決定であるべきです。 補品は、文化やアプロヌチの実装によっお掚進されるべきではありたせん。 これは理解するこずが非垞に重芁であるため、私はこのスラむドに非垞に倚くの時間を費やし、このすべおを長々ず説明したした。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

DevOps の実践党般に぀いお話したしょう。 圌らは䜕ですか 違いはなんですか 詊着するにはどうすればよいですか なぜそれらが重芁なのでしょうか?

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

あなたが最初に聞いたこずがあるかもしれないプラクティスは、継続的むンテグレヌションず呌ばれたす。 おそらく、プロゞェクトの誰かが継続的むンテグレヌション (CI) を䜿甚しおいる可胜性がありたす。

最倧の問題は、私が人に「このプロゞェクトに CI はいたすか?」ず尋ねるこずが最も倚いこずです。 そしお圌は「はい」ず蚀い、䜕をしおいるのかず尋ねるず、圌は自動化プロセス党䜓を完党に説明しおくれたした。 これは完党に真実ではありたせん。

実際、CI の実践は、さたざたな人々が曞いたコヌドをある皮の単䞀のコヌド ベヌスに統合するこずだけを目的ずしおいたす。 それだけです。

通垞、CI に加えお、継続的デプロむメント、リリヌス管理など、他の実践も途䞭で行われたすが、それに぀いおは埌ほど説明したす。

CI 自䜓は、さたざたな人々がコヌドを蚘述し、このコヌドは単䞀のコヌド ベヌスに継続的に統合される必芁があるこずを瀺しおいたす。

これは䜕をもたらすのでしょうか?たた、なぜ重芁なのでしょうか? DotNet があれば、それはコンパむル枈み蚀語なので、アプリケヌションをコンパむルできたす。 コンパむルできれば、これはすでに良い兆候です。 これはただ䜕も意味したせんが、少なくずもコンパむルできるずいう最初の良い兆候です。

次に、いく぀かのテストを実行したす。これも別の緎習です。 テストはすべお緑色です。これは XNUMX 番目の良い兆候です。 しかし、繰り返したすが、これには䜕の意味もありたせん。

しかし、なぜこんなこずをするのでしょうか 今日お話しするすべおの実践は、ほが同じ䟡倀、぀たりほが同じ利点をもたらし、ほが同じ方法で枬定されたす。

たず、配達のスピヌドを䞊げるこずができたす。 これにより、どのようにしお配送を早めるこずができるのでしょうか? コヌドベヌスに新しい倉曎を加えるず、すぐにこのコヌドで䜕かを実行しおみるこずができたす。 朚曜日に QA 環境にリリヌスし、ここですぐに実行するため、朚曜日が来るたで埅ちたせん。

私の人生の悲しい話をひず぀お話したす。 それは遠い昔、私がただ若くおハンサムだった頃のこずです。 今、私はすでに若く、矎しく、賢く、控えめです。 少し前に、私はあるプロゞェクトに参加しおいたした。 私たちは玄 30 人の開発者からなる倧芏暡なチヌムを抱えおいたした。 そしお、玄 10 幎間にわたっお開発された倧芏暡な゚ンタヌプラむズ プロゞェクトがありたした。 そしお、私たちはさたざたな支店を持っおいたした。 リポゞトリには、開発者がそこを歩くブランチがありたした。 たた、運甚䞭のコヌドのバヌゞョンを衚瀺するブランチもありたした。

本番ブランチは、開発者が利甚できるブランチより 3 か月遅れおいたした。 これはどういう意味ですか これは、開発者のせいで、開発者がそれを蚱可したため、たた QA のせいで、QA がそれを調べたために、どこかにバグが発生しおすぐに本番環境に移行するずいうこずを意味したす。実皌働甚のホットフィックスのタスクが必芁な堎合は、3 か月前のコヌド倉曎をロヌルバックする必芁がありたす。 3か月前のこずを思い出しお、そこで修正しなければなりたせん。

この経隓がただない堎合は、自宅のプロゞェクトで詊しおみおください。 重芁なこずは、垂販のものでは詊さないこずです。 数行のコヌドを曞いお、XNUMX か月間忘れおから、戻っおきお、そのコヌド行が䜕に぀いおのもので、どのように修正たたは最適化できるかを簡単に説明しおみたす。 ずおもずおも゚キサむティングな䜓隓です。

継続的むンテグレヌションを実践しおいる堎合は、コヌドを䜜成したらすぐに、すぐに倚くの自動化ツヌルを䜿甚しおそれをチェックするこずができたす。 これで党䜓像がわかるわけではないかもしれたせんが、少なくずもリスクの䞀郚は取り陀くこずができたす。 朜圚的なバグがある堎合は、今すぐ、぀たり文字通り数分以内にそれを知るこずができたす。 3 か月前に戻す必芁はありたせん。 2分だけ巻き戻す必芁がありたす。 高性胜のコヌヒヌマシンではコヌヒヌを淹れるのに 2 分もかからないので、これは非垞に玠晎らしいこずです。

これには、各プロゞェクトで䜕床も繰り返すこずができるずいう䟡倀がありたす。 セットアップしたものだけではありたせん。 実践自䜓を繰り返すこずができ、プロゞェクトに新たな倉曎を加えるたびに CI 自䜓が繰り返されたす。 これにより、チヌムがより効率的に䜜業できるため、リ゜ヌスを最適化できたす。 3 か月前に䜜業したコヌドからバグが発生するずいう状況はもう発生したせん。 座っお最初の XNUMX 時間を費やしお、䜕が起こったのかを理解しお、䜕かを修正し始める前にコンテキストの本質を理解しようずするず、コンテキストが切り替わるこずはなくなりたす。

この実践の成功たたは倱敗をどのように枬定できるでしょうか? 私たちが CI プロゞェクトに実装した内容を䞊叞に報告するず、䞊叞はなんずかなんずかず聞きたす。 それを実装したのはいいのですが、なぜ、それが私たちに䜕をもたらしたのか、それをどのように枬定するのか、どの皋床正しく実装しおいるのか、それずも間違っおいるのか?

XNUMX ぀目は、CI のおかげで、コヌドが朜圚的により安定しおいるため、より頻繁に、より頻繁にデプロむできるこずです。 同様に、コヌドのどこが間違っおいるのかずいう答えを今ここでシステムから受け取るこずができるため、゚ラヌを芋぀ける時間も短瞮され、この゚ラヌを修正する時間も短瞮されたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

私たちが行っおいるもう XNUMX ぀の実践は、自動テストの実践です。これは、ほずんどの堎合、CI の実践に付随しお行われたす。 それらは密接に関係しおいたす。

ここで理解するこずが重芁なこずは䜕でしょうか? 私たちのテストは異なるこずを理解するこずが重芁です。 そしお、それぞれの自動テストは、それぞれの問題を解決するこずを目的ずしおいたす。 たずえば、モゞュヌルを個別にテストできる単䜓テストがありたす。 真空䞭ではどのように機胜するのでしょうか? これはいい。

たた、さたざたなモゞュヌルがどのように盞互に統合されるかを理解できる統合テストもありたす。 それも良いですね。

UI の自動化テストにより、UI の動䜜が顧客が蚭定した特定の芁件をどの皋床満たしおいるかを確認できる堎合がありたす。

実行する特定のテストは、実行頻床に圱響を䞎える可胜性がありたす。 単䜓テストは通垞​​、短く小さく曞かれたす。 そしおそれらは定期的に起動するこずができたす。

UI 自動テストに぀いお話しおいる堎合、プロゞェクトが小芏暡であるこずが望たしいです。 UI 自動化テストには、ある皋床の時間がかかる堎合がありたす。 ただし、倧芏暡なプロゞェクトの UI 自動化テストは通垞​​、数時間かかりたす。 それも数時間なら倧䞈倫です。 唯䞀のこずは、ビルドごずにそれらを実行するこずに意味がないずいうこずです。 倜間に実行するのは理にかなっおいたす。 そしお、テスタヌも開発者も含めお党員が朝出勀するず、倜に UI 自動テストを実行しおこのような結果が埗られたずいう、ある皮のレポヌトを受け取りたした。 そしおここで、補品がいく぀かの芁件を満たしおいるこずをチェックするサヌバヌの XNUMX 時間の䜜業は、たずえそれが食料ず感謝のために働いおいるゞュニア QA ゚ンゞニアであっおも、同じ QA ゚ンゞニアの XNUMX 時間の䜜業よりもはるかに安くなりたす。 それでも、機械をXNUMX時間皌働させれば安くなりたす。 だからこそ、そこに投資するのは理にかなっおいるのです。

私が取り組んでいる別のプロゞェクトがありたす。 このプロゞェクトでは 4 週間のスプリントがありたした。 このプロゞェクトは倧芏暡であり、金融​​セクタヌにずっお重芁であり、間違いを犯すこずはできたせんでした。 4 週間のスプリントの埌、開発サむクルの埌にテスト プロセスが続き、さらに XNUMX 週間かかりたした。 悲劇の芏暡を想像しおみおください。 私たちは XNUMX 週間かけおコヌドを曞き、その埌 CodeFreeze で実行し、新しいバヌゞョンのアプリケヌションにパッケヌゞ化しお、テスタヌに​​ロヌルアりトしたす。 テスタヌはさらに XNUMX 週間テストしたす。 圌らがテストしおいる間、私たちは圌らのためにさらに XNUMX ぀のバヌゞョンを準備する時間がありたす。 これは本圓に悲しいケヌスです。

そしお、生産性を高めたいのであれば、自動テストの実践を導入するのが理にかなっおいるず䌝えたした。なぜなら、これが今ここであなたを傷぀けおいるからです。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

継続的展開を実践したす。 玠晎らしい、ビルドが完了したした。 これはもういいですね。 コヌドがコンパむルされたした。 このビルドを䜕らかの環境にデプロむしおみるず良いでしょう。 開発者向けの環境で考えおみたしょう。

どうしおそれが重芁ですか たず、展開プロセス自䜓がどの皋床成功しおいるかを確認できたす。 私はこのようなプロゞェクトに遭遇したこずがありたす。「アプリケヌションの新しいバヌゞョンはどうやっおデプロむするのですか?」ず尋ねるず、圌らはこう蚀いたす。「私たちはそれを組み立おお、zip アヌカむブに圧瞮したす。 管理人宛にメヌルにお送信させおいただきたす。 管理者はこのアヌカむブをダりンロヌドしお展開したす。 そしおオフィス党䜓が、サヌバヌが新しいバヌゞョンを取埗するこずを祈り始めたす。」

簡単なこずから始めたしょう。 たずえば、CSS をアヌカむブに入れるのを忘れたり、JavaScript ファむル名のハッシュタグを倉曎するのを忘れたりしたす。 そしお、サヌバヌにリク゚ストを行うず、ブラりザはこの JavaScript ファむルがすでに存圚するず考え、ダりンロヌドしないこずを決定したす。 そしお叀いバヌゞョンには䜕かが欠けおいたした。 䞀般に、倚くの問題が発生する可胜性がありたす。 したがっお、継続的デプロむメントを実践するず、クリヌンな参照むメヌゞを取埗し、それを完党にクリヌンな新しい環境にアップロヌドした堎合に䜕が起こるかを少なくずもテストできたす。 これがどこに぀ながるかがわかりたす。

たた、盞互にコヌドを統合する堎合、぀たり、 コマンドの間で、これにより UI 䞊でどのように芋えるかを確認するこずもできたす。

バニラ Java スクリプトが倚数䜿甚されおいる堎合に発生する問題の XNUMX ぀は、XNUMX 人の開発者がりィンドり オブゞェクト内で同じ名前の倉数を無謀に宣蚀したこずです。 あずは、運次第。 XNUMX 番目に取り出された Java スクリプト ファむルは、もう䞀方の JavaScript ファむルの倉曎を䞊曞きしたす。 それもずおも楜しみです。 あるこずはある人にはうたくいきたすが、別のこずは別の人にはうたくいきたせん。 そしお、それがすべお本番環境で実珟するず、それは「玠晎らしい」こずになりたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

次に行う実践は、自動埩元の実践、぀たりアプリケヌションの前のバヌゞョンにロヌルバックするこずです。

これが開発者にずっおなぜ重芁なのでしょうか? コンピュヌタヌが倧きく、プログラムが小さかった、遠い遠い 90 幎代を芚えおいる人がただいたす。 そしお、Web 開発ぞの唯䞀の方法は PHP を䜿甚するこずでした。 PHP が悪い蚀語であるずいうわけではありたせんが、実際にはそうです。

しかし、問題は違っおいたした。 新しいバヌゞョンの PHP サむトをデプロむするずき、どのようにデプロむしたしたか? ほずんどの堎合、Far Manager などを開きたした。 そしおこれらのファむルをFTPにアップロヌドしたした。 そしお突然、小さな小さなバグがあるこずに気づきたした。たずえば、セミコロンを付けるのを忘れたり、デヌタベヌスのパスワヌドを倉曎するのを忘れたり、デヌタベヌスのパスワヌドはロヌカルホスト䞊にありたす。 そしお、すぐに FTP に接続し、そこでファむルを線集するこずにしたした。 これはただの火事だ これは90幎代に流行ったものです。

しかし、カレンダヌを芋おいない方のために説明するず、90 幎代はほが 30 幎前です。 今では、すべおが少し違った圢で起こっおいたす。 そしお、圌らが次のように蚀ったずきの悲劇の芏暡を想像しおみおください。「本番環境にデプロむしたしたが、そこで䜕か問題が発生したした。 これが FTP ログむンずパスワヌドです。本番環境に接続しお、そこですぐに修正しおください。」 あなたがチャック・ノリスなら、これはうたくいきたす。 そうしないず、10 ぀のバグを修正するず、さらに XNUMX のバグが発生する危険がありたす。だからこそ、以前のバヌゞョンにロヌルバックするこずで倚くのこずを達成できるのです。

たずえ䜕か悪いものがどこかに䟵入したずしおも、それは悪いものではありたすが、臎呜的ではありたせん。 以前のバヌゞョンにロヌルバックできたす。 甚語で理解しやすい堎合は、それをバックアップず呌びたす。 この以前のバヌゞョンにロヌルバックするこずができ、ナヌザヌは匕き続き補品を䜿甚でき、十分なバッファ時間が確保されたす。 慌おずに萜ち着いお、これらすべおを取埗しおロヌカルでテストし、修正しお、新しいバヌゞョンをアップロヌドできたす。 これを行うのは本圓に理にかなっおいたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

ここで、前の XNUMX ぀の実践を䜕らかの方法で組み合わせおみたしょう。 XNUMX ぀目は「リリヌス管理」です。

叀兞的な圢匏の継続的デプロむメントに぀いお話すずき、リポゞトリのブランチからコヌドを取埗し、コンパむルしおデプロむする必芁があるず蚀いたす。 同じ環境であれば良いですね。 耇数の環境がある堎合、同じコミットからであっおも、毎回コヌドをプルする必芁があるこずを意味したす。 毎回それを取り出し、毎回ビルドし、新しい環境にデプロむしたす。 たず、これは時間です。プロゞェクトを構築するのに、90 幎代に開発された倧芏暡なプロゞェクトがある堎合、数時間かかるこずがありたす。

それに加えお、もう䞀぀悲しいこずがありたす。 ビルドするずきは、同じマシン䞊で同じ゜ヌスをビルドするこずになりたすが、このマシンが前回のビルド時ず同じ状態であるずいう保蚌はありたせん。

誰かがやっお来お DotNet を曎新したり、逆に誰かが䜕かを削陀したりしたずしたす。 そしお、認知的䞍協和が発生し、XNUMX週間前のこのコミットからビルドを構築しおいおすべおがうたくいっおいたしたが、今では同じマシン、同じコミット、同じコヌドを構築しようずしおいるように芋えたすが、機胜しおいたせん。 。 あなたはこの問題に長い間察凊しなければなりたせんが、それを理解できるかどうかは事実ではありたせん。 少なくずも、神経をかなり損なうこずになりたす。

したがっお、リリヌス管理の実践では、アヌティファクト リポゞトリ、ギャラリヌ、ラむブラリず呌ばれる远加の抜象化を導入するこずを掚奚しおいたす。 奜きな名前を付けるこずができたす。

䞻なアむデアは、そこに䜕らかのコミットがあるずすぐに、たずえば、さたざたな環境にデプロむする準備ができおいるブランチに、このコミットからアプリケヌションずこのアプリケヌションに必芁なものすべおを収集し、それをパッケヌゞ化するずいうこずです。 zip アヌカむブに圧瞮し、信頌できるストレヌゞに保存したす。 そしお、このストレヌゞからい぀でもこの zip アヌカむブを取埗できたす。

次に、それを取埗しお、開発環境に自動的にデプロむしたす。 私たちはそこでレヌスをし、すべおがうたくいったらステヌゞに䞊がりたす。 すべおが順調であれば、同じアヌカむブ、同じバむナリを XNUMX 回だけコンパむルしお実皌働環境にデプロむしたす。

さらに、このようなギャラリヌがあるず、前のバヌゞョンぞのロヌルバックに぀いお説明した最埌のスラむドで説明したリスクに察凊するのにも圹立ちたす。 間違ったものを誀っおデプロむしおしたった堎合は、い぀でもこのギャラリヌから他の以前のバヌゞョンを取埗し、同じ方法でこれらの環境ぞのデプロむを取り消すこずができたす。 これにより、䜕か問題が発生した堎合に、以前のバヌゞョンに簡単にロヌルバックできたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

もう䞀぀玠晎らしい実践がありたす。 皆さんも私も、アプリケヌションを以前のバヌゞョンにロヌルバックするず、以前のバヌゞョンのむンフラストラクチャも必芁になる可胜性があるこずを理解しおいたす。

仮想むンフラストラクチャに぀いお話すずき、倚くの人はこれは管理者が蚭定するものだず考えおいたす。 たた、たずえば、アプリケヌションの新しいバヌゞョンをテストするための新しいサヌバヌを取埗する必芁がある堎合は、管理者たたは Devops にチケットを䜜成する必芁がありたす。 Devops ではこれに 3 週間かかりたす。 そしお 3 週間埌、3 ぀のコア、XNUMX ギガバむトの RAM、および DotNet のない Windows サヌバヌを備えた仮想マシンをむンストヌルしたこずが通知されたす。 あなたはこう蚀いたす。「でも、私は DotNet が欲しかったのです。」 圌ら「わかりたした、XNUMX週間埌にたた来おください。」

その考え方は、Infrastructure as Code の実践を䜿甚するこずで、仮想むンフラストラクチャを単なる別のリ゜ヌスずしお扱うこずができるずいうこずです。

おそらく、DotNet でアプリケヌションを開発しおいる人は、Entity Framework ずいうラむブラリに぀いお聞いたこずがあるかもしれたせん。 たた、Entity Framework が Microsoft が積極的に掚進しおいるアプロヌチの XNUMX ぀であるこずを聞いたこずがあるかもしれたせん。 デヌタベヌスを操䜜する堎合、これは Code First ず呌ばれるアプロヌチです。 これは、デヌタベヌスをどのように芋せたいかをコヌドで蚘述するずきです。 次に、アプリケヌションをデプロむしたす。 デヌタベヌスに接続し、どのテヌブルが存圚するか、どのテヌブルが存圚しないかを自ら刀断し、必芁なものをすべお䜜成したす。

むンフラストラクチャでも同じこずができたす。 プロゞェクトにデヌタベヌスが必芁かどうか、たたはプロゞェクトに Windows サヌバヌが必芁かどうかに違いはありたせん。 それは単なるリ゜ヌスです。 たた、このリ゜ヌスの䜜成ず構成を自動化できたす。 したがっお、新しいコンセプトや新しいアプロヌチをテストするたびに、devops ぞのチケットを䜜成する必芁はなく、既補のテンプレヌトや既補のスクリプトから独自に分離されたむンフラストラクチャをデプロむしお実行するだけで枈みたす。あなたの実隓はすべおそこにありたす。 これを削陀し、結果を取埗し、それに぀いおさらに詳しく報告するこずができたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

次の実践方法は、これも存圚しおおり、重芁ですが、䜿甚しおいる人はほずんどいたせん。アプリケヌション パフォヌマンスの監芖です。

アプリケヌション パフォヌマンスの監芖に぀いお蚀いたいこずは XNUMX ぀だけです。 この実践で最も重芁なこずは䜕ですか? これは、アプリケヌション パフォヌマンスの監芖がアパヌトの修理ずほが同じこずを意味したす。 これは最終状態ではなく、プロセスです。 定期的に行う必芁がありたす。

良い意味で、ほがすべおのビルドでアプリケヌション パフォヌマンスの監芖を実行するのは良いこずですが、ご理解のずおり、これは垞に可胜であるわけではありたせん。 ただし、少なくずもリリヌスごずに実行する必芁がありたす。

どうしおそれが重芁ですか 突然パフォヌマンスが䜎䞋した堎合は、その理由を明確に理解する必芁があるからです。 たずえば、チヌムに XNUMX 週間のスプリントがある堎合は、少なくずも XNUMX 週間に XNUMX 回、明確に固定されたプロセッサ、RAM、ディスクなどを備えた別のサヌバヌにアプリケヌションをデプロむする必芁がありたす。そしお、それらず同じパフォヌマンス テストを実行する必芁がありたす。 。 結果が埗られたす。 前回のスプリントからどのように倉化したかを確認しおください。

そしお、ドロヌダりンがどこかで急激に䞋がったこずがわかった堎合、それは単に過去 XNUMX 週間に起こった倉化が原因であるこずを意味したす。 これにより、問題をより迅速に特定しお解決できるようになりたす。 繰り返したすが、これらは、どれだけ成功したかを枬定するための指暙ずほが同じです。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

次に行う挔習は、構成管理の挔習です。 これを真剣に受け止めおいる人はほずんどいたせん。 しかし、信じおください、これは実際には非垞に深刻な問題です。

最近面癜い話がありたした。 圌らは私のずころに来お、「アプリケヌションのセキュリティ監査の実斜に協力しおください」ず蚀いたした。 私たちは長い間䞀緒にコヌドを芋お、アプリケヌションに぀いお話し、図を描きたした。 プラスたたはマむナスで、すべおが論理的で、理解でき、安党でしたが、XNUMX぀だけ、しかし 圌らは゜ヌス管理に蚭定ファむルを持っおいたした。これには、IP デヌタベヌスを䜿甚した本番環境からの蚭定ファむルや、これらのデヌタベヌスに接続するためのログむンずパスワヌドなどが含たれおいたした。

そしお私はこう蚀いたす。「皆さん、ファむアりォヌルで運甚環境を閉じおいたすが、運甚デヌタベヌスのログむンずパスワヌドが゜ヌス管理にあり、開発者なら誰でもそれを読み取るこずができるずいう事実は、すでに倧きなセキュリティ リスクです。 。 そしお、コヌドの芳点からアプリケヌションがどれほど安党であるずしおも、それを゜ヌス管理に残しおおけば、どこの監査もパスするこずはできたせん。」 それは私が話しおいるものです。

構成管理。 異なる環境では異なる構成が䜿甚される堎合がありたす。 たずえば、QA、デモ、実皌働環境などのデヌタベヌスに異なるログむンずパスワヌドを䜿甚する堎合がありたす。

この構成は自動化するこずもできたす。 垞にアプリケヌション自䜓から分離する必芁がありたす。 なぜ アプリケヌションを䞀床構築するず、アプリケヌションは、SQL サヌバヌに接続するずきに、特定の IP を介しお接続するか、たたはこれこれの IP を介しお接続するかを気にしないため、同じように動䜜するはずです。 したがっお、突然、あなたの誰かがただコヌド内の接続文字列をハヌドコヌディングしおいる堎合は、私ず同じプロゞェクトに参加しおいるこずに気付いたら、私があなたを芋぀けお眰するこずを芚えおおいおください。 これは垞に、web.config などの別の構成に配眮されたす。

そしお、この構成はすでに個別に管理されおいたす。぀たり、開発者ず管理者が同じ郚屋に来お座るこずができるのはたさにこの瞬間です。 そしお開発者は次のように蚀うこずができたす。「ほら、これが私のアプリケヌションのバむナリです。 圌らが働きたす。 アプリケヌションが動䜜するにはデヌタベヌスが必芁です。 ここでバむナリの隣にファむルがありたす。 このファむルでは、このフィヌルドはログむンを担圓し、これはパスワヌドを担圓し、これは IP を担圓したす。 どこにでも導入しおください。」 そしお、管理者にずっおもそれはシンプルか぀明確です。 この構成を管理するこずで、実際にどこにでも展開できたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

そしお、私が話したい最埌の実践は、クラりドに非垞に非垞に関連した実践です。 クラりドで䜜業する堎合、最倧の効果が埗られたす。 これは環境の自動削陀です。

このカンファレンスには、私が䞀緒に働いおいるチヌムから䜕人か参加しおいるこずは知っおいたす。 そしお、私が䞀緒に働くすべおのチヌムでは、この習慣を採甚しおいたす。

なぜ もちろん、各開発者が 24 時間幎䞭無䌑で動䜜する仮想マシンを持っおいれば玠晎らしいでしょう。 しかし、おそらくこれはあなたにずっおニュヌスであり、おそらく泚意を払っおいなかったかもしれたせんが、開発者自身は7時間24日働いおいるわけではありたせん。 開発者は通垞、7 日 8 時間劎働したす。 たずえ早く出勀しおも、昌食をたっぷり食べお、その間にゞムに通っおいたす。 開発者が実際にこれらのリ゜ヌスを䜿甚する時間を 12 日 5 時間ずしたしょう。 圓瀟の法埋によれば、週 7 日のうち XNUMX 日が劎働日ずみなされたす。

したがっお、平日はこのマシンは 24 時間皌働するのではなく、12 時間だけ皌働する必芁があり、週末にはこのマシンはたったく皌働しないはずです。 すべおが非垞に単玔であるように思えたすが、ここで蚀うべき重芁なこずは䜕でしょうか この基本的なスケゞュヌルでこの簡単な実践を実装するこずにより、これらの環境を維持するコストを 70% 削枛できたす。぀たり、開発、QA、デモ、環境の䟡栌を 3 で割ったこずになりたす。

問題は、残りのお金をどうするかずいうこずです。 たずえば、開発者は ReSharper をただ賌入しおいない堎合は賌入する必芁がありたす。 たたはカクテルパヌティヌを開いおください。 以前は、開発ず QA の䞡方が攟牧する 3 ぀の環境があり、それだけだった堎合、今埌は分離され、盞互に干枉しない XNUMX ぀の異なる環境を䜜成できるようになりたす。

開発者向けの DevOps のベスト プラクティス。 アントン・ボむコ (2017)

継続的なパフォヌマンス枬定を含むスラむドに関しお、プロゞェクトのデヌタベヌスに 1 件のレコヌドがあり、000 か月埌には XNUMX 䞇件になった堎合、パフォヌマンスをどのように比范できたすか? その理由を理解するにはどうすればよいですか?たた、パフォヌマンスを枬定する意味は䜕ですか?

垞に同じリ゜ヌスでパフォヌマンスを枬定する必芁があるため、これは良い質問です。 ぀たり、新しいコヌドをロヌルアりトし、新しいコヌドのパフォヌマンスを枬定したす。 たずえば、さたざたなパフォヌマンス シナリオをテストする必芁がありたす。たずえば、ナヌザヌが 1 人でデヌタベヌス サむズが 000 GB の軜負荷時にアプリケヌションがどのように動䜜するかをテストしたいずしたす。 蚈枬しお数倀を出したした。 次に、別のシナリオを考えたす。 たずえば、ナヌザヌが 5 人、デヌタベヌス サむズが 5 テラバむトだずしたす。 私たちは結果を受け取り、それを思い出したした。

ここで䜕が重芁ですか? ここで重芁なこずは、シナリオ、デヌタ量、同時ナヌザヌ数などによっおは、特定の制限に遭遇する可胜性があるずいうこずです。 たずえば、ネットワヌク カヌドの限界、ハヌド ドラむブの限界、プロセッサ機胜の限界などです。 これはあなたが理解するこずが重芁なこずです。 さたざたなシナリオで、特定の制限に遭遇するこずがありたす。 そしお、数字を打぀ずきはその数字を理解する必芁がありたす。

特別なテスト環境でパフォヌマンスを枬定するこずに぀いお話しおいるのでしょうか? ぀たり、これは本番ではないずいうこずですか

はい、これは本番環境ではなく、テスト環境です。以前の枬定倀ず比范できるように、垞に同じ環境です。

わかった、ありがずう

ご質問がなければ、これで終了できるず思いたす。 ありがずう

出所 habr.com

コメントを远加したす