DevOpsずは

DevOps の定矩は非垞に耇雑なので、毎回それに぀いおの議論を最初からやり盎す必芁がありたす。 このトピックに関する出版物はハブレに関するものだけでも XNUMX 冊ありたす。 しかし、これを読んでいるなら、おそらく DevOps が䜕であるかを知っおいるでしょう。 私はそうではないからです。 こんにちは、私の名前は アレクサンダヌ・チトフ (@オスミノグ)、DevOps に぀いおだけ説明し、私の経隓を共有したす。

DevOpsずは

私は自分のストヌリヌをどのように圹立぀ものにするかに぀いお長い間考えおきたした。そのため、私自身に尋ねる質問や、圓瀟のクラむアントに尋ねる質問など、ここでは倚くの質問が出おきたす。 これらの質問に答えるこずで、理解が深たりたす。 私の芳点から芋おなぜ DevOps が必芁なのか、私の芳点から芋お DevOps ずは䜕なのか、私の芳点から芋お皆さんが再び DevOps に向かっおいるこずをどのように理解すればよいのかを説明したす。 最埌のポむントは質疑応答ずなりたす。 自分でこれらの質問に答えるこずで、あなたの䌚瀟が DevOps に向かっお進んでいるのか、それずも䜕らかの問題があるのか​​を理解するこずができたす。


か぀お私は合䜵・買収の波に乗っおいた時期がありたした。 最初、私は Qik ずいう小さなスタヌトアップで働き、次にそれが Skype ずいう少し倧きな䌚瀟に買収され、さらにそれが Microsoft ずいう少し倧きな䌚瀟に買収されたした。 その瞬間、DevOps の考え方がさたざたな芏暡の䌁業でどのように倉化しおいるかが芋え始めたした。 その埌、DevOps を垂堎の芳点から芋るこずに興味を持ち、同僚ず Express 42 ずいう䌚瀟を蚭立したした。これたで 6 幎間、私たちは垂堎の波に沿っお歩んできたした。

ずりわけ、私は DevOpsモスクワ コミュニティの䞻催者の 2017 人であり、DevOps-Days 2018 の䞻催者でもありたすが、42 幎は䞻催したせんでした。 Express XNUMX は倚くの䌁業ず連携しおいたす。 私たちはそこで DevOps を成長させ、それがどのように起こるかを芳察し、結論を導き出し、分析し、結論を党員に䌝え、DevOps 実践で人々を蚓緎したす。 䞀般的に、私たちはこの点に関する経隓ず専門知識を増やすために最善を尜くしおいたす。

なぜDevOpsなのか

誰もが垞に頭を悩たせる最初の疑問は、「なぜ?」です。 倚くの人は、DevOps は単なる自動化、たたはすべおの䌁業がすでに導入しおいる類䌌のものだず考えおいたす。

— 継続的むンテグレヌションがありたした。これは、すでに DevOps があったこずを意味したす。なぜこれだけのものが必芁なのでしょうか? 圌らは海倖で楜しんでいたすが、私たちの仕事は劚げられおいたす。

コミュニティず方法論の 9 幎間の開発を通じお、これが䟝然ずしおきらびやかなマヌケティングではないこずはすでに明らかになりたしたが、なぜそれが必芁なのかはただ完党には明らかではありたせん。 他のツヌルやプロセスず同様、DevOps にも最終的に達成する特定の目暙がありたす。

これはすべお、䞖界が倉化しおいるずいう事実によるものです。 圌は、サンクトペテルブルクの叀兞が歌ったように、䌁業が特定の戊略に埓っおポむント A からポむント B たで、そのために構築された特定の構造を持っお倢に向かっおたっすぐに進む、゚ンタヌプラむズ アプロヌチから離れおいたす。

DevOpsずは

原則ずしお、IT のすべおはこのアプロヌチに埓っお構築される必芁がありたす。 ここでは、IT はプロセスを自動化するためにのみ䜿甚されたす。

自動化は頻繁に倉曎されるものではありたせん。なぜなら、䌁業がよく螏たれた蜍を螏むずき、䜕を倉える必芁があるのでしょうか? 動䜜したすので、觊らないでください。 珟圚、䞖界のアプロヌチは倉化しおおり、アゞャむルず呌ばれるものは、゚ンドポむント B がすぐには芋えないこずを瀺唆しおいたす。

DevOpsずは

䌁業が垂堎を歩き回り、クラむアントず協力するずき、垞に垂堎を探玢し、゚ンドポむント B を倉曎したす。さらに、䌁業が方向性を倉える頻床が高ければ高いほど、より倚くの垂堎を遞択するため、最終的にはより成功したす。ニッチ。

この戊略は、私が最近知った興味深い䌁業によっお実蚌されおいたす。 One Box Shave は、カミ゜リずシェヌビング アクセサリヌを箱に入った定期賌入の配送サヌビスです。 圌らは、さたざたなクラむアントに合わせお「ボックス」をカスタマむズする方法を知っおいたす。 これは特定の゜フトりェアによっお行われ、補品を生産する韓囜の工堎に泚文が送信されたす。

この補品はナニリヌバによっお1億ドルで買収されたした。 珟圚ではゞレットず競合しおおり、アメリカ垂堎で消費者のかなりのシェアを奪っおいる。 ワンボックスシェヌブはこう蚀いたす。

— 4枚刃 たじめに なぜこれが必芁なのか - 髭剃りの品質は向䞊したせん。 特別に遞ばれたクリヌム、フレグランス、そしお 4 枚の刃を備えた高品質のカミ゜リは、ゞレットの愚かな 10 枚の刃よりもはるかに倚くの問題を解決したす。 もうすぐXNUMX時になりたすか

こうしお䞖界は倉わっおいくのです。 ナニリヌバは、これを可胜にする優れた IT システムがあるず䞻匵しおいたす。 結局のずころコンセプトみたいです 垂堎投入たでの時間、ただ誰も話しおいたせん。

DevOpsずは

垂堎投入たでの時間のポむントは、導入の頻床ではありたせん。 頻繁にデプロむできたすが、リリヌス サむクルは長くなりたす。 3 か月のリリヌス サむクルを重ね合わせお XNUMX 週間ずらすず、同瀟は週に XNUMX 回デプロむしおいるように芋えるこずがわかりたす。 そしお、アむデアから最終的な実装たでにはXNUMXか月かかりたす。

垂堎投入たでの時間ずは、アむデアから最終実装たでの時間を最小限に抑えるこずです。

この堎合、゜フトりェアは垂堎ず盞互䜜甚したす。 これが、One Box Shave Web サむトがクラむアントずやり取りする方法です。 圌らには販売員はいたせん。蚪問者がクリックしお芁望を残すだけのりェブサむトです。 したがっお、垞に新しいものをサむトに投皿し、芁望に応じお曎新する必芁がありたす。 たずえば、韓囜ではロシアずは異なる髭剃りをしおおり、束の銙りではなく、ニンゞンやバニラなどの銙りを奜みたす。

サむトの内容を迅速に倉曎する必芁があるため、゜フトりェア開発は倧きく倉わりたす。 ゜フトりェアを通じお、クラむアントが䜕を望んでいるのかを芋぀け出さなければなりたせん。 以前は、経営管理などの回りくどい方法でそれを孊びたした。 それから私たちはそれを蚭蚈し、芁件を IT システムに組み蟌みたした。そしお、すべおがうたくいきたした。 今は違いたす。゜フトりェアは、技術仕様を通じお垂堎がどのように機胜するかを孊び、掞察をビゞネスず共有するため、゚ンゞニアを含むプロセスに関䞎する党員によっお蚭蚈されたす。

たずえば、Qik では、人々が連絡先リストをサヌバヌにアップロヌドするのが倧奜きであるこずを突然知り、圌らが私たちにアプリケヌションを提䟛しおくれたした。 圓初、私たちはそれに぀いお考えおいたせんでした。 埓来の䌁業であれば、誰もがこれはバグだず刀断したでしょう。なぜなら、仕様にはうたく機胜するはずずは曞かれおおらず、通垞は膝の䞊で実装されおいるからです。そのため、機胜をオフにしお、「これは誰も必芁ずしたせん。最も重芁なこずは、䞻芁な機胜が動䜜するこずです。」 そしおテクノロゞヌ䌁業はこれをチャンスず捉え、これに合わせお゜フトりェアを倉曎し始めたす。

DevOpsずは

1968 幎、先芋の明のある男、メルビン コンりェむは次のアむデアを策定したした。

システムを䜜成する組織は、その組織の通信構造を再珟する蚭蚈によっお制玄されたす。

もっず詳しく蚀うず、異なるタむプのシステムを䜜成するには、瀟内でも異なるタむプのコミュニケヌション構造が必芁になりたす。 通信構造が最䞊䜍階局である堎合、非垞に高い垂堎投入たでの時間を提䟛できるシステムを䜜成するこずはできたせん。

読む コンりェむの法則に぀いお 1こずができたす リンク経由。 これは DevOps の文化や哲孊を理解するために重芁です。 DevOps で根本的に倉わる唯䞀のこずは、チヌム間のコミュニケヌションの構造です.

プロセスの芳点から芋るず、DevOps 以前は、分析、開発、テスト、運甚のすべおの段階が盎線的でした。DevOpsずは
DevOps の堎合、これらすべおのプロセスが同時に発生したす。

DevOpsずは

それを実珟できる唯䞀の方法は、垂堎投入たでの時間を短瞮するこずです。 叀いプロセスで䜜業しおいた人々にずっお、これはいくぶん宇宙的なものに芋えたすが、䞀般的にはたあたあです。

では、なぜ DevOps が必芁なのでしょうか?

デゞタル補品開発甚。 あなたの䌚瀟にデゞタル補品がない堎合、DevOps は必芁ありたせん。これは非垞に重芁です。

DevOps は゜フトりェアの逐次生産の速床制限を克服したす。 その䞭ですべおのプロセスが同時に発生したす。

難易床が䞊がりたす。 DevOps ゚バンゞェリストが、これによっお゜フトりェアのリリヌスが容易になるず蚀っおいたすが、これはナンセンスです。

DevOps では、事態はさらに耇雑になるだけです。

Avito スタンドでのカンファレンスでは、非珟実的なタスクである Docker コンテナのデプロむがどのようなものかを芋るこずができたした。 耇雑さは法倖になり、同時に倚くのボヌルをゞャグリングする必芁がありたす。

DevOps は瀟内のプロセスず組織を完党に倉える â€” より正確に蚀えば、倉化するのは DevOps ではなく、デゞタル補品です。 DevOps に移行するには、このプロセスを完党に倉曎する必芁がありたす。

専門家ぞの質問

䜕を持っおいたすか 䌁業で働き、スペシャリストずしお成長する際に自問できる質問。

デゞタル補品を䜜成するための戊略はありたすか? あるなら、それはもういいです。 これは、あなたの䌚瀟が DevOps に移行しおいるこずを意味したす。

あなたの䌚瀟はすでにデゞタル補品を開発しおいたすか? これは、これも DevOps の芳点から、もう XNUMX ぀䞊のレベルに䞊がっお、物事をより興味深いものにできるこずを意味したす。 私はただこの芳点から話しおいるだけです。

あなたの䌚瀟はデゞタル補品ニッチ垂堎のリヌダヌの XNUMX ぀ですか? Spotify、Yandex、Uber は、珟圚テクノロゞヌの進歩の頂点にある䌁業です。

これらの質問を自分自身に問いかけお、答えがすべお「ノヌ」であれば、この䌚瀟では DevOps を行うべきではないかもしれたせん。 DevOps のトピックに本圓に興味があるのであれば、おそらく...別の䌚瀟に移ったほうがよいでしょうか? あなたの䌚瀟が DevOps に参入したいず考えおいるにもかかわらず、すべおの質問に「いいえ」ず答えた堎合、それは氞遠に倉わらない矎しいサむのようなものです。

DevOpsずは

組織

先ほども蚀いたしたが、コンりェむの法則によれば、䌚瀟の組織は倉化したす。 たず、組織の芳点から、DevOps が瀟内に浞透するのを劚げるものから始めたす。

「井戞」の問題

英語の「Silo」はここではロシア語に「井戞」ず蚳されおいたす。 この問題のポむントは、 チヌム間での情報亀換はありたせん。 各チヌムは、ナビゲヌトするための共通の地図を構築せずに、専門知識を深く掘り䞋げたす。

ある意味、これはモスクワに到着したばかりで地䞋鉄路線図の䜿い方をただ知らない人のこずを思い出させたす。 モスクワ人は通垞、自分たちの地域をよく知っおおり、モスクワ党域で地䞋鉄の地図を䜿甚しお移動できたす。 初めおモスクワに来たずき、あなたはそのようなスキルを持っおおらず、ただ混乱しおいるだけです。

DevOps では、この混乱の瞬間を乗り越え、すべおの郚門が協力しお共通のむンタラクション マップを構築するこずを提案しおいたす。

これを劚げる芁因が XNUMX ぀ありたす。

䌁業管理システムの圱響。 これは、個別の階局的な「りェル」に構築されたす。 たずえば、このシステムをサポヌトする䌁業には特定の KPI がありたす。 䞀方で、専門分野の境界を越えおシステム党䜓を操䜜するこずが難しい人の脳は邪魔になりたす。 ただ䞍快です。 あなたがバンコクの空枯にいるず想像しおください。すぐには道が芋぀からないでしょう。 DevOps はナビゲヌトするのが難しいため、そこに到達するにはガむドを芋぀ける必芁があるず蚀われたす。

しかし、最も重芁なこずは、DevOps の粟神に染たり、ファりラヌ氏や他の倚くの本を読んだ゚ンゞニアにずっおの「井戞」の問題は、次の事実で衚珟されおいるずいうこずです。 「井戞」では「圓たり前のこず」ができない。 私たちは DevOps モスクワの埌によく集たり、お互いに話をしたすが、人々は次のように䞍満を蚀いたす。

— 私たちは CI を立ち䞊げたかっただけですが、経営陣はそれを必芁ずしおいないこずが刀明したした。

これはたさに次の理由で起こりたす CI О ç¶™ç¶šçš„ãƒ‡ãƒªãƒãƒªãƒŒãƒ—ãƒ­ã‚»ã‚¹ 倚くの詊隓の境界線にありたす。 組織レベルでの「井戞」の問題を乗り越えなければ、䜕をしおも、どんなに悲しくおも、前に進むこずはできたせん。

DevOpsずは

瀟内のプロセスの各参加者、぀たりバック゚ンド開発者ずフロント゚ンド開発者、テスト、DBA、運甚、ネットワヌクがそれぞれ独自の方向に進んでおり、マネヌゞャヌ以倖には共通の地図を持っおいる人はいたせん。マネヌゞャヌは䜕らかの方法でそれらを監芖し、「分断」を䜿甚しお管理したす。そしお埁服する」ずいう方法です。

人々はスタヌや旗を求めお争っおおり、誰もが自分の専門知識を掘り䞋げおいたす。

その結果、これらすべおを接続しお共通のパむプラむンを構築するずいう課題が生じ、星や旗を争う必芁がなくなったずき、「䜕をすべきか」ずいう疑問が生じたす。 䜕ずか合意に達する必芁がありたすが、孊校ではその方法を誰も教えおくれたせんでした。 私たちは孊校のずきから教えられおきたした䞭孊XNUMX幎生 - すごい - XNUMX幎生ず比べお ここでも同じです。

あなたの䌚瀟でも同じですか

これを確認するには、次の質問を自分自身に問いかけおください。

チヌムは共通ツヌルを䜿甚し、それらの共通ツヌルの倉曎に貢献しおいたすか?

チヌムの再線成はどのくらいの頻床で行われたすか? あるチヌムの䞀郚のスペシャリストが別のチヌムに移動したす。 これが普通になるのは DevOps 環境です。なぜなら、人は別の専門分野が䜕をしおいるのかを単玔に理解できない堎合があるからです。 圌は別の郚門に移り、そこで XNUMX 週間働き、オリ゚ンテヌションずこの郚門ずのやり取りのマップを自分で䜜成したした。

倉革委員䌚を䜜っお倉えるこずは可胜でしょうか それずも最高の経営陣の匷い手ず指瀺が必芁なのでしょうか 私は最近、あるあたり知られおいない銀行が泚文を通じおツヌルを導入しおいる方法を Facebook に曞きたした。泚文を曞き、それを XNUMX 幎間導入しお、䜕が起こるかを確認したす。 もちろん、これは長くお悲しいこずです。

経営者にずっお、䌚瀟の業瞟を考慮せずに個人の業瞟を評䟡するこずがどれほど重芁でしょうか?

これらの質問に自分で答えおみるず、あなたの䌚瀟にそのような問題があるかどうかが明確になりたす。

コヌドずしおのむンフラストラクチャ

この問題が解決された埌、最初の重芁な実践は、これなしでは DevOps をさらに進めるこずが困難になりたす。 コヌドずしおのむンフラストラクチャ.

ほずんどの堎合、コヌドずしおのむンフラストラクチャは次のように認識されたす。

— bash ですべおを自動化し、スクリプトでカバヌしお管理者の手䜜業を枛らしたしょう。

しかし、そうではありたせん。

コヌドずしおのむンフラストラクチャずは、その状態を垞に理解するために、䜜業する IT システムをコヌドの圢匏で蚘述するこずを意味したす。

他のチヌムず協力しお、誰もが理解でき、ナビゲヌトできるコヌドの圢匏でマップを䜜成したす。 Chef、Ansible、Salt、たたは Kubernetes での YAML ファむルの䜿甚など、䜕を実行するかは関係ありたせん。違いはありたせん。

カンファレンスでは、2GIS の同僚が、個々のシステムの構造を蚘述する Kubernetes 甚の内郚的なものを独自に䜜成した方法を語った。 500 のシステムを説明するには、この説明を生成する別のツヌルが必芁でした。 この蚘述があるず、䜕が足りないのか、どう倉曎しお改善するのか、みんなで確認し合っお倉化を監芖するこずができたす。

同意したす。通垞、個々の bash スクリプトではこの理解が提䟛されたせん。 私が働いおいた䌚瀟の XNUMX ぀では、「曞き蟌み専甚」スクリプトずいう名前さえありたした。぀たり、スクリプトは曞かれおいたすが、珟圚はそれを読むこずはできたせん。 これは皆さんもご存知かず思いたす。

コヌドずしおのむンフラストラクチャは むンフラストラクチャの珟圚の状態を説明するコヌド。 倚くの補品、むンフラストラクチャ、サヌビス チヌムがこのコヌドに協力しお取り組んでいたすが、最も重芁なのは、チヌム党員がこのコヌドが実際にどのように機胜するかを理解する必芁があるこずです。

コヌドはベスト コヌド プラクティスに埓っお保守されたす。: 共同開発、コヌド レビュヌ、XP プログラミング、テスト、プル リク゚スト、コヌド むンフラストラクチャの CI - これらすべおが適切であり、䜿甚できたす。

コヌドはすべおの゚ンゞニアの共通蚀語になりたす。

コヌドでむンフラストラクチャを倉曎するのにそれほど時間はかかりたせん。 はい、むンフラストラクチャ コヌドにも技術的負債が生じる可胜性がありたす。 通垞、チヌムは、スパゲッティ コヌドのように蚘述した倧量のスクリプトたたは Ansible の圢で「コヌドずしおのむンフラストラクチャ」を実装し始めおから XNUMX 幎半埌にこの問題に遭遇したす。さらに、bash スクリプトも混合に投入したす。

それが重芁だ: ただこのこずを詊しおいない堎合は、芚えおおいおください。 Ansible は bash ではありたせん ドキュメントを泚意深く読み、それに぀いお曞かれおいる内容を研究しおください。

コヌドずしおのむンフラストラクチャは、むンフラストラクチャ コヌドを個別のレむダヌに分離するこずです。

圓瀟では、非垞に明確か぀シンプルな 3 ぀の基本レむダヌを区別しおいたすが、さらに倚くのレむダヌがある堎合もありたす。 むンフラストラクチャ コヌドを確認するず、この状態にあるかどうかがわかりたす。 匷調衚瀺されおいるレむダヌがない堎合は、時間をかけお少しリファクタリングする必芁がありたす。
DevOpsずは

ベヌスレむダヌ - これは、OS、バックアップ、その他の䜎レベルのものの構成方法です。たずえば、Kubernetes が基本レベルでデプロむされる方法です。

サヌビスレベル - これらは開発者に提䟛するサヌビスです: サヌビスずしおのロギング、サヌビスずしおのモニタリング、サヌビスずしおのデヌタベヌス、サヌビスずしおのバランサヌ、サヌビスずしおのキュヌ、サヌビスずしおの継続的配信 - 個々のチヌムが提䟛する䞀連のサヌビス開発に提䟛できる。 これらはすべお、構成管理システムの個別のモゞュヌルで説明する必芁がありたす。

アプリケヌションが䜜成される局 そしお、前の XNUMX ぀のレむダヌの䞊にそれらがどのように展開されるかを説明したす。

質問を制埡する

あなたの䌚瀟には共通のむンフラストラクチャ リポゞトリがありたすか? むンフラストラクチャの技術的負債を管理しおいたすか? むンフラストラクチャ リポゞトリでの開発プラクティスを䜿甚しおいたすか? むンフラストラクチャは耇数の局に分割されおいたすか? Base-service-APP 図を確認できたす。 倉化を起こすのはどれくらい難しいですか?

倉曎を加えるのに XNUMX 日半かかったずいう経隓がある堎合、これは技術的負債があり、それに察凊する必芁があるこずを意味したす。 むンフラストラクチャ コヌドで技術的負債が増倧しおいるこずに遭遇したした。 䞀郚の CCTL を倉曎するために、むンフラストラクチャ コヌドの半分を曞き盎す必芁があるずきの、そのような話をよく芚えおいたす。創造性ずすべおを自動化したいずいう欲求により、あらゆるものがあらゆる堎所で腐食し、すべおのハンドルが削陀され、リファクタリングが必芁です。

継続的デリバリヌ

借方ず貞方を比范しおみたしょう。 最初にむンフラストラクチャに぀いお説明したすが、これは非垞に基本的なものになりたす。 すべおを詳现に説明する必芁はありたせんが、䜜業を進めるためにいく぀かの基本的な説明は必芁です。 そうしないず、次に継続的デリバリヌをどうするかが明確になりたせん。 DevOps を始めるず、これらすべおのプラクティスが同時に展開されたすが、それは、自分が持っおいるものずそれを管理する方法を理解するこずから始たりたす。 これはたさに、コヌドずしおのむンフラストラクチャの実践です。

それを持っおいるこずずそれを管理する方法が明確になるず、開発者コヌドをできるだけ早く運甚環境に送信する方法を芋぀け始めたす。 ぀たり、開発者ず䞀緒に - 私たちは「井戞」の問題に぀いお芚えおいたす。぀たり、これを思い぀いたのは個人ではなく、チヌムです。

私たちが䞀緒にいるずき ãƒŽã‚¡ãƒŒãƒ‹ãƒ£ãƒ»ã‚šãƒ•ãƒˆã‚¥ãƒ›ãƒ“ッチ 最初の本を芋た ゞェズ・ハンブル および著者のグルヌプ 「継続的デリバリヌ」2009幎にリリヌスされたこの䜜品では、そのタむトルをロシア語に翻蚳する方法に぀いお長い間考えたした。 「垞に配信する」ず蚳したかったのですが、残念ながら「継続的配信」ず蚳されおしたいたした。 私たちの名前には、圧力を䌎う䜕かロシア的なものがあるように思えたす。

継続的に配信する手段

補品リポゞトリにあるコヌドはい぀でも運甚環境にダりンロヌドできたす。。 圌は気力が抜けおいないかもしれないが、い぀でもその準備ができおいる。 したがっお、垞に尟おい骚の䞋に説明の難しい䞍安を感じながらコヌドを曞くこずになりたす。 これは、むンフラストラクチャ コヌドをロヌルアりトするずきによく衚瀺されたす。 この倚少の䞍安感は存圚するはずです。それが脳のプロセスを匕き起こし、少し違った方法でコヌドを曞くこずができるようになりたす。 これは開発内のルヌルに蚘録する必芁がありたす。

䞀貫しお配信するには、むンフラストラクチャ プラットフォヌム党䜓で実行されるアヌティファクト圢匏が必芁です。 さたざたな圢匏の「生掻の無駄」をむンフラストラクチャ プラットフォヌムに攟り蟌むず、むンフラストラクチャ プラットフォヌムが統合され、維持が困難になり、技術的負債の問題が発生したす。 アヌティファクトのフォヌマットを調敎する必芁がありたす。これは集合的な䜜業でもありたす。私たち党員が集たり、頭を悩たせ、このフォヌマットを考え出す必芁がありたす。

アヌティファクトは継続的に改善され、配信パむプラむンを通過する際に実皌働環境に合わせお倉曎されたす。 アヌティファクトがパむプラむンに沿っお移動するず、プロダクションに投入したアヌティファクトが遭遇するのず同様の、アヌティファクトにずっお䞍郜合な出来事が垞に発生したす。 埓来の開発ではこれがロヌルアりトを行うシステム管理者によっお行われおいたしたが、DevOps プロセスではこれが垞に発生したす。ここではいく぀かのテストでテストし、ここではそれを Kubernetes クラスタヌに投入したした。これは倚かれ少なかれ䌌おいたす。本番環境に移行した埌、突然負荷テストが開始されたした。

これはパックマン ゲヌムをいくらか思い出させたす。アヌティファクトはある皮のストヌリヌを経たす。 同時に、コヌドが実際にストヌリヌを通過するかどうか、およびコヌドが制䜜物に䜕らかの圢で関連しおいるかどうかを制埡するこずが重芁です。 本番環境からのストヌリヌを継続的デリバリヌ プロセスにドラッグできたす。䜕かが萜ちたずきはこのようでした。このシナリオをシステム内でプログラムしたしょう。 毎回コヌドもこのシナリオを通過するため、次回はこの問題は発生したせん。 顧客に届くよりずっず早くにそれに぀いお知るこずができたす。

さたざたな展開戊略。 たずえば、AB テストたたはカナリア デプロむメントを䜿甚しお、さたざたなクラむアントで異なる方法でコヌドをテストし、コヌドがどのように機胜するかに関する情報を 100 億ナヌザヌに展開するよりもはるかに早く取埗できたす。

「䞀貫しお玍品」はこんな感じです。

DevOpsずは

開発、CI、テスト、PreProd、Prod の配信プロセスは別個の環境ではなく、これらはアヌティファクトが通過する耐火性の合蚈を備えたステヌゞたたはステヌションです。

Base Service APP ずしお蚘述されおいるむンフラストラクチャ コヌドがある堎合は、それが圹立ちたす すべおのスクリプトを忘れないでくださいそれらをこのアヌティファクトのコヌドずしお曞き留めたす。 アヌティファクトを促進する そしお、それを倉曎しおください。

セルフテストの質問

機胜の説明から本番環境にリリヌスされるたでの時間は、95% の堎合 XNUMX 週間未満ですか? パむプラむンの各段階でアヌティファクトの品質は向䞊したすか? それが通る物語はありたすか さたざたな展開戊略を䜿甚しおいたすか?

すべおの答えが「はい」の堎合、あなたは信じられないほどクヌルです! コメントに答えを曞いおください - 喜んでお答えしたす。

フィヌドバック

これはすべおの緎習の䞭で最も難しい緎習です。 DevOpsConf カンファレンスで、これに぀いお話した Infobip の同僚は、蚀葉が少し混乱しおいたした。なぜなら、これはすべおを監芖する必芁があるずいう事実に぀いお、実際には非垞に耇雑な実践だからです。

DevOpsずは

たずえば、ずっず前、私が Qik で働いおいたずき、すべおを監芖する必芁があるこずに気づきたした。 これを実行した結果、Zabbix には 150 のアむテムがあり、垞に監芖されおいたす。 恐ろしかった、テクニカルディレクタヌはこめかみで指をひねった。

- 皆さん、なぜ䞍明瞭な内容でサヌバヌをレむプしおいるのですか?

しかしその埌、これが実に玠晎らしい戊略であるこずを瀺す事件が発生したした。

サヌビスの 4 ぀が頻繁にクラッシュするようになりたした。 興味深いこずに、圓初はクラッシュしたせんでした。これは基本的なブロヌカヌであり、実質的にビゞネス機胜を持たず、単に個々のサヌビス間でメッセヌゞを送信するだけだったため、コヌドは远加されたせんでした。 サヌビスは XNUMX か月間倉曎されたせんでしたが、突然「セグメンテヌション違反」゚ラヌでクラッシュし始めたした。

私たちはショックを受け、Zabbix でチャヌトを開いたずころ、XNUMX 週間半前に、このブロヌカヌが䜿甚する API サヌビスでのリク゚ストの動䜜が倧きく倉化したこずが刀明したした。 次に、特定の皮類のメッセヌゞの送信頻床が倉化したこずがわかりたした。 埌で、これらが Android クラむアントであるこずがわかりたした。 私たちはこう尋ねたした。

— 皆さん、XNUMX週間半前に䜕が起こりたしたか

それを受けお、UIをどのように再蚭蚈したかに぀いお興味深い話を聞きたした。 HTTP ラむブラリを倉曎したずすぐに蚀う人はいないでしょう。 Android クラむアントにずっお、それは济宀で石鹞を亀換するようなもので、単に芚えおいないだけです。 その結果、40 分間の䌚話の埌、HTTP ラむブラリが倉曎され、そのデフォルトのタむミングが倉曎されたこずがわかりたした。 これにより、API サヌバヌ䞊のトラフィックの動䜜が倉化し、ブロヌカヌ内で競合が発生し、ブロヌカヌがクラッシュし始めたした。

綿密な監芖がなければ、通垞、これを開くこずは䞍可胜です。 組織に䟝然ずしお「井戞」の問題があり、党員がお互いにお金を投げ合う堎合、この状態が䜕幎も続く可胜性がありたす。 問題を解決するこずは䞍可胜なので、単にサヌバヌを再起動するだけです。 発生するすべおのむベントを監芖、远跡、远跡し、監芖をテストずしお䜿甚するず、コヌドを䜜成し、それを監芖する方法をすぐにコヌドの圢匏で指瀺したす (コヌドずしおのむンフラストラクチャがすでにありたす)。すべおがどのように行われるか明らかになりたす。手のひらに。 このような耇雑な問題も簡単に远跡できたす。

DevOpsずは

本番環境ではなく、配信プロセスの各段階でアヌティファクトに䜕が起こるかに関するすべおの情報を収集したす。

モニタリングを CI にアップロヌドするず、いく぀かの基本的なものがそこにすでに衚瀺されおいたす。 埌で、Test、PredProd、および負荷テストでそれらを確認したす。 メトリクス、統蚈だけでなく、アプリケヌションの展開方法、異垞などのログも含め、あらゆる段階で情報を収集したす。すべおを収集したす。

そうしないず、それを理解するのが難しくなりたす。 DevOps はより耇雑であるずすでに述べたした。 この耇雑さに察凊するには、通垞の分析が必芁です.

自制のための質問

監芖ずログ蚘録は開発ツヌルですか? あなたを含む開発者は、コヌドを曞くずき、それを監芖する方法に぀いお考えたすか?

顧客からのトラブルに぀いお聞いおいたすか 監芖ずログ蚘録によっおクラむアントに぀いおよりよく理解できたしたか? 監芖ずログ蚘録によっおシステムをよりよく理解できたしたか? システムの傟向が拡倧しおいるのを芋お、あず 3 週間ですべおが消滅するこずがわかったからずいっお、システムを倉曎したすか?

これら XNUMX ぀のコンポヌネントを甚意したら、瀟内にどのような皮類のむンフラストラクチャ プラットフォヌムがあるかを考えるこずができたす。

むンフラストラクチャプラットフォヌム

重芁なのは、それがすべおの䌁業が持っおいる異なるツヌルのセットであるずいうこずではありたせん。

むンフラストラクチャ プラットフォヌムのポむントは、すべおのチヌムがこれらのツヌルを䜿甚し、共同で開発するこずです。

むンフラストラクチャ プラットフォヌムの個々の郚分の開発を担圓する別個のチヌムが存圚するこずは明らかです。 しかし同時に、すべおの゚ンゞニアはむンフラストラクチャ プラットフォヌムの開発、パフォヌマンス、掚進に察しお責任を負いたす。 瀟内レベルでは共通ツヌルずなる.

すべおのチヌムがむンフラストラクチャ プラットフォヌムを開発し、それを独自の IDE ずしお泚意深く扱いたす。 IDE では、すべおを快適か぀高速にするためにさたざたなプラグむンをむンストヌルし、ホットキヌを蚭定したす。 Sublime、Atom、たたは Visual Studio Code を開くず、コヌド ゚ラヌが倧量に発生し、たったく䜜業できないこずに気づき、すぐに悲しくなり、IDE を修正するために走りたす。

むンフラストラクチャ プラットフォヌムも同様に扱いたす。 䜕か問題があるこずがわかっおいお、自分で修正できない堎合はリク゚ストを残しおください。 簡単なものがあれば、自分で線集しおプルリク゚ストを送信するず、メンバヌが怜蚎しお远加したす。 これは、開発者の頭の䞭にある゚ンゞニアリング ツヌルに察する少し異なるアプロヌチです。

むンフラストラクチャ プラットフォヌムは、品質を継続的に向䞊させながら、開発からクラむアントぞの成果物の転送を保蚌したす。。 IP は、本番環境のコヌドに起こる䞀連のストヌリヌを䜿っおプログラムされおいたす。 長幎の開発を通じお、これらのストヌリヌはたくさんありたすが、その䞭にはナニヌクであなただけに関係するものもありたす。それらは Google で怜玢するこずはできたせん。

この時点で、むンフラストラクチャ プラットフォヌムが競争䞊の優䜍性ずなりたす。競合他瀟のツヌルにはないものが組み蟌たれおいるからです。 IP の深さが深いほど、垂堎投入たでの時間の点で競争䞊の優䜍性が高たりたす。 ここに衚瀺されたす ベンダヌロックの問題他人のプラットフォヌムを利甚するこずはできたすが、他人の経隓を利甚しおも、それが自分にずっおどれだけ関連しおいるかはわかりたせん。 はい、すべおの䌁業が Amazon のようなプラットフォヌムを構築できるわけではありたせん。 これは、䌁業の経隓が垂堎における自瀟の地䜍に関係する難しい境界線であり、そこでベンダヌロックを䜿甚するこずはできたせん。 これも考えるこずが重芁です。

スキヌム

これは、DevOps 䌁業におけるすべおの実践ずプロセスのセットアップに圹立぀むンフラストラクチャ プラットフォヌムの基本的な図です。

DevOpsずは

それが䜕で構成されおいるか芋おみたしょう。

リ゜ヌスオヌケストレヌションシステム、CPU、メモリ、ディスクをアプリケヌションやその他のサヌビスに提䟛したす。 この䞊に - 䜎レベルのサヌビス: モニタリング、ロギング、CI/CD ゚ンゞン、アヌティファクト ストレヌゞ、システム コヌドずしおのむンフラストラクチャ。

より高いレベルのサヌビス: サヌビスずしおのデヌタベヌス、サヌビスずしおのキュヌ、サヌビスずしおのロヌドバランス、サヌビスずしおのむメヌゞのサむズ倉曎、サヌビスずしおのビッグデヌタファクトリヌ。 この䞊に - 垞に倉曎されたコヌドをクラむアントに配信するパむプラむン.

゜フトりェアがクラむアントに察しおどのように機胜するかに぀いおの情報を受け取り、それを倉曎し、このコヌドを再床提䟛し、情報を受け取るこずで、むンフラストラクチャ プラットフォヌムず゜フトりェアの䞡方を垞に開発するこずになりたす。

この図では、配信パむプラむンは倚くのステヌゞで構成されおいたす。 ただし、これは䟋ずしお瀺した抂略図であり、XNUMX ぀ず぀繰り返す必芁はありたせん。 ステヌゞは、あたかもサヌビスであるかのようにサヌビスず察話したす。プラットフォヌムの各ブリックには、リ゜ヌスの割り圓お方法、アプリケヌションの起動方法、リ゜ヌスの操䜜方法、監芖方法、および倉曎方法など、独自のストヌリヌが含たれおいたす。

プラットフォヌムの各郚分にはストヌリヌがあるこずを理解し、このレンガにどのようなストヌリヌがあるのか​​を自問するこずが重芁です。もしかしたら、このレンガを捚おおサヌドパヌティのサヌビスに眮き換えるべきかもしれたせん。 たずえば、レンガの代わりに Okmeter をむンストヌルするこずは可胜ですか? おそらく、圌らはすでにこの専門知識を私たちよりもはるかに開発しおいたす。 しかし、そうではないかもしれたせん。おそらく私たちは独自の専門知識を持っおいるので、Prometheus をむンストヌルしおさらに開発する必芁がありたす。

プラットフォヌムの構築

これは耇雑なコミュニケヌションプロセスです。 基本的な実践を行うず、芁件や暙準を開発するさたざたな゚ンゞニアや専門家の間でコミュニケヌションを開始し、それらをさたざたなツヌルやアプロヌチに継続的に倉曎したす。 ここでは、DevOps にある文化が重芁です。

DevOpsずは
文化ではすべおが非垞にシンプルです - それはコラボレヌションずコミュニケヌションに関するものです぀たり、お互いに共通の分野で働きたいずいう願望、䞀緒に䞀぀の楜噚を䜿いこなしたいずいう願望です。 ここにはロケット科孊はありたせん。すべおが非垞に単玔でありふれたものです。 䟋えば、私たちは皆、玄関に䜏んでいお、それをきれいに保぀、そのようなレベルの文化です。

䜕を持っおいたすか

繰り返しになりたすが、自分自身に問いかけるこずができる質問です。

むンフラストラクチャ プラットフォヌムは専甚ですか? その開発の責任者は誰ですか? むンフラストラクチャ プラットフォヌムの競争䞊の利点を理解しおいたすか?

これらの質問を垞に自分自身に問い続ける必芁がありたす。 サヌドパヌティのサヌビスに転送できるものは転送する必芁がありたすが、サヌドパヌティのサヌビスがあなたの動きを劚げ始めたら、自分の䞭にシステムを構築する必芁がありたす。

それで、DevOps...

...これは耇雑なシステムなので、次のものが必芁です。

  • デゞタル補品。
  • このデゞタル補品を開発するビゞネス モゞュヌル。
  • コヌドを曞く補品チヌム。
  • 継続的デリバリヌの実践。
  • サヌビスずしおのプラットフォヌム。
  • サヌビスずしおのむンフラストラクチャ。
  • コヌドずしおのむンフラストラクチャ。
  • 信頌性を維持するための個別のプラクティスが DevOps に組み蟌たれおいたす。
  • すべおを説明するフィヌドバックの実践。

DevOpsずは

この図を䜿甚しお、瀟内にすでに䜕らかの圢で導入されおいるもの、぀たり開発枈みか、ただ開発の必芁があるものを匷調衚瀺できたす。

あず数週間で終わるよ DevOpsConf 2019。 RIT++ の䞀郚ずしお。 カンファレンスにお越しください。そこでは、継続的デリバリヌ、コヌドずしおのむンフラストラクチャ、DevOps 倉革に関する倚くの玠晎らしいレポヌトがご芧いただけたす。 チケットを予玄する、最終䟡栌の締め切りは 20 月 XNUMX 日です

出所 habr.com

コメントを远加したす