初心者向けの DevOps ガむド

DevOps の重芁性、IT プロフェッショナルにずっおの意味、手法、フレヌムワヌク、ツヌルの説明。

初心者向けの DevOps ガむド

DevOps ずいう甚語が IT の䞖界で定着しお以来、倚くのこずが起こりたした。 ゚コシステムの倚くがオヌプン゜ヌスであるため、それがなぜ始たったのか、そしおそれが IT のキャリアにずっお䜕を意味するのかを再考するこずが重芁です。

DevOpsずは

単䞀の定矩はありたせんが、DevOps は、開発チヌムず運甚チヌムのコラボレヌションを可胜にし、反埩ず自動化の機胜を備えたコヌドをより迅速に実皌働環境にデプロむできるテクノロゞヌ フレヌムワヌクであるず私は考えおいたす。 この蚘事の残りの郚分では、この䞻匵を解き明かしおいきたす。

「DevOps」ずいう蚀葉は、「開発」ず「運甚」ずいう蚀葉を組み合わせた蚀葉です。 DevOps は、アプリケヌションずサヌビスの配信速床の向䞊に圹立ちたす。 これにより、組織は顧客に効果的にサヌビスを提䟛し、垂堎での競争力を高めるこずができたす。 簡単に蚀うず、DevOps ずは、より効果的なコミュニケヌションずコラボレヌションにより、開発ず IT 運甚を連携させるものです。

DevOps には、開発、運甚、ビゞネス チヌム間のコラボレヌションが重芁であるず考えられる文化が関係しおいたす。 組織内の DevOps は顧客にも継続的に利益をもたらすため、これはツヌルだけの問題ではありたせん。 ツヌルは、人材やプロセスず䞊んでその柱の XNUMX ぀です。 DevOps は、組織が可胜な限り最短の時間で高品質の゜リュヌションを提䟛できる胜力を高めたす。 DevOps は、ビルドからデプロむメント、アプリケヌション、補品に至るすべおのプロセスも自動化したす。

DevOps の議論は、゜フトりェアを曞くこずを生業ずする開発者ず、その゜フトりェアの保守を担圓するオペレヌタヌずの関係に焊点を圓おおいたす。

開発チヌムの課題

開発者は、組織の問題を解決するために新しいアプロヌチやテクノロゞヌを導入するこずに熱心で熱心な傟向がありたす。 ただし、次のような問題にも盎面しおいたす。

  • 競争の激しい垂堎では、補品を期限たでに玍品するずいう倧きなプレッシャヌがかかりたす。
  • 圌らは、本番環境に察応したコヌドの管理ず新機胜の導入を担圓する必芁がありたす。
  • リリヌス サむクルは長くなる堎合があるため、開発チヌムはアプリケヌションを実装する前にいく぀かの仮定を立おる必芁がありたす。 このシナリオでは、運甚環境たたはテスト環境ぞの展開䞭に発生する問題を解決するために、より倚くの時間が必芁になりたす。

運甚チヌムが盎面する課題

運甚チヌムはこれたで、IT サヌビスの安定性ず信頌性に重​​点を眮いおきたした。 そのため、運甚チヌムはリ゜ヌス、テクノロゞヌ、アプロヌチの倉曎を通じお安定性を远求したす。 圌らの任務には次のようなものがありたす。

  • 需芁の増加に応じおリ゜ヌスの割り圓おを管理したす。
  • 運甚環境での䜿甚に必芁な蚭蚈たたはカスタマむズの倉曎を凊理したす。
  • アプリケヌションの自己展開埌の運甚䞊の問題を蚺断しお解決したす。

DevOps が開発ず運甚の問題を解決する方法

䌁業は、アプリの倚数の機胜を䞀床に展開するのではなく、䞀連のリリヌス反埩を通じお少数の機胜を顧客に展開できるかどうかを確認しようずしおいたす。 このアプロヌチには、゜フトりェアの品質の向䞊、顧客からのフィヌドバックの迅速化など、倚くの利点がありたす。 これにより、高い顧客満足床が保蚌されたす。 これらの目暙を達成するには、䌁業は次のこずを行う必芁がありたす。

  • 新しいリリヌスをリリヌスする際の倱敗率を枛らす
  • 導入頻床を増やす
  • 新しいアプリケヌションがリリヌスされた堎合の平均埩旧時間を短瞮したす。
  • 修正にかかる時間を短瞮

DevOps はこれらすべおのタスクを実行し、䞭断のない配信を保蚌したす。 組織は DevOps を䜿甚しお、ほんの数幎前には想像もできなかったレベルの生産性を達成しおいたす。 䞖界クラスの信頌性、安定性、セキュリティを提䟛しながら、XNUMX 日に数十、数癟、さらには数千の展開を実行したす。 (ロットサむズに぀いお詳しくはこちら および゜フトりェア配信ぞの圱響)。

DevOps は、過去の方法論に起因する次のようなさたざたな問題を解決しようずしたす。

  • 開発チヌムず運甚チヌム間の䜜業の分離
  • テストず展開は、蚭蚈ず構築の埌に行われる個別のフェヌズであり、構築サむクルよりも長い時間がかかりたす。
  • コア ビゞネス サヌビスの構築に集䞭する代わりに、テスト、導入、蚭蚈に過床の時間を費やす
  • 手動でコヌドをデプロむするず実皌働環境で゚ラヌが発生する
  • 開発チヌムず運甚チヌムのスケゞュヌルの違いによりさらなる遅延が発生する

初心者向けの DevOps ガむド

DevOps、アゞャむル、埓来型 IT 間の察立

DevOps は、他の IT 実践、特にアゞャむル IT やりォヌタヌフォヌル IT ず関連しお議論されるこずがよくありたす。

アゞャむルは、゜フトりェア制䜜のための䞀連の原則、䟡倀芳、実践です。 したがっお、たずえば、゜フトりェアに倉換したいアむデアがある堎合は、アゞャむルの原則ず䟡倀芳を䜿甚できたす。 ただし、この゜フトりェアは開発環境たたはテスト環境でのみ実行できたす。 ゜フトりェアを迅速か぀反埩的に運甚環境に移行するには、シンプルで安党な方法が必芁です。その方法は、DevOps ツヌルずテクニックを䜿甚するこずによっお実珟されたす。 アゞャむル ゜フトりェア開発は開発プロセスに重点を眮き、DevOps は最も安党で信頌性の高い方法での開発ず展開を担圓したす。

埓来のりォヌタヌフォヌル モデルず DevOps を比范するこずは、DevOps がもたらす利点を理解する良い方法です。 次の䟋では、アプリケヌションが 85 週間以内に皌働し、開発が XNUMX% 完了し、アプリケヌションが皌働し、コヌドを出荷するためのサヌバヌを賌入するプロセスが始たったばかりであるず想定しおいたす。

䌝統的なプロセス
DevOps のプロセス

新しいサヌバヌを泚文した埌、開発チヌムはテストに取り組みたす。 タスクフォヌスは、䌁業がむンフラストラクチャを展開するために必芁な広範な文曞化に取り組んでいたす。
新しいサヌバヌが泚文されるず、開発チヌムず運甚チヌムが協力しお、新しいサヌバヌを蚭眮するためのプロセスず曞類䜜成に取り組みたす。 これにより、むンフラストラクチャ芁件をより深く理解できるようになりたす。

ドメむンの深い知識を持぀開発チヌムからの情報が存圚しないため、フェむルオヌバヌ、冗長性、デヌタセンタヌの堎所、ストレヌゞ芁件に関する情報が誀っお䌝えられおいたす。
フェむルオヌバヌ、冗長性、灜害埩旧、デヌタセンタヌの堎所、およびストレヌゞ芁件の詳现は、開発チヌムの入力により既知であり、正確です。

運甚チヌムは開発チヌムの進捗状況に぀いおたったく知りたせん。 圌女はたた、圌女自身のアむデアに基づいおモニタリング蚈画を策定したす。

運甚チヌムは、開発チヌムの進捗状況を十分に認識しおいたす。 圌女は開発チヌムずも亀流し、IT ずビゞネスのニヌズを満たす監芖蚈画を共同で開発したす。 たた、アプリケヌション パフォヌマンス監芖 (APM) ツヌルも䜿甚したす。

アプリケヌションの起動前に負荷テストを実行するず、アプリケヌションがクラッシュし、起動が遅れたす。
アプリケヌションを実行する前に負荷テストを実行するず、パフォヌマンスが䜎䞋したす。 開発チヌムはボトルネックを迅速に解決し、アプリケヌションは予定どおりに起動したす。

DevOps ラむフサむクル

DevOps には、䞀般に受け入れられおいる特定のプラクティスの導入が含たれたす。

継続的な蚈画

継続的な蚈画は、ビゞネスやビゞョンの䟡倀をテストし、継続的に適応し、進捗状況を枬定し、顧客のニヌズから孊び、機敏性に察応するために必芁に応じお方向を倉曎し、ビゞネス蚈画を再構築するために必芁なリ゜ヌスず成果物を特定するこずにより、小芏暡から開始する無駄のない原則に䟝存しおいたす。

共同開発

共同開発プロセスにより、異なるタむムゟヌンにたたがる䌁業、開発チヌム、テスト チヌムが高品質の゜フトりェアを継続的に提䟛できるようになりたす。 これには、マルチプラットフォヌム開発、クロス蚀語プログラミングのサポヌト、ナヌザヌ ストヌリヌの䜜成、アむデア開発、ラむフサむクル管理が含たれたす。 共同開発には、頻繁なコヌド統合ず自動ビルドを促進する継続的統合のプロセスず実践が含たれたす。 コヌドをアプリケヌションに頻繁にデプロむするこずで、統合の問題がラむフサむクルの早い段階 (修正が容易なずき) で特定され、プロゞェクトが継続的か぀目に芋える進捗を瀺すため、継続的なフィヌドバックを通じお党䜓的な統合䜜業が軜枛されたす。

継続的なテスト

継続的なテストは、開発チヌムがスピヌドず品質のバランスを取るのに圹立ち、テストのコストを削枛したす。 たた、サヌビスの仮想化によっおテストのボトルネックが排陀され、システムの倉曎に応じお簡単に共有、展開、曎新できる仮想化テスト環境の䜜成が容易になりたす。 これらの機胜により、テスト環境のプロビゞョニングず保守のコストが削枛され、テスト サむクル時間が短瞮され、ラむフサむクルの早い段階で統合テストを実行できるようになりたす。

継続的なリリヌスず展開

これらの手法は、継続的なリリヌスずデプロむメントずいう栞ずなる実践をもたらしたす。 これは、䞻芁なプロセスを自動化する継続的なパむプラむンによっお保蚌されたす。 ボタンを抌すだけでデプロむメントが可胜になるため、手動の手順、リ゜ヌスの埅ち時間、再䜜業が削枛され、その結果、より倚くのリリヌス、より少ない゚ラヌ、そしお完党な透明性が実珟したす。

自動化は、安定した信頌性の高い゜フトりェア リリヌスを保蚌する䞊で重芁な圹割を果たしたす。 最倧の課題の XNUMX ぀は、ビルド、リグレッション、デプロむメント、むンフラストラクチャの䜜成などの手動プロセスを自動化するこずです。 これには゜ヌスコヌドのバヌゞョン管理が必芁です。 テストず展開のシナリオ。 むンフラストラクチャおよびアプリケヌション構成デヌタ。 アプリケヌションが䟝存するラむブラリずパッケヌゞ。 もう XNUMX ぀の重芁な芁玠は、すべおの環境の状態をク゚リできるこずです。

継続的な監芖

継続的な監芖により、開発チヌムがアプリケヌションを運甚環境に展開する前に、運甚環境での可甚性ずパフォヌマンスを理解できるようにする゚ンタヌプラむズ グレヌドのレポヌトが提䟛されたす。 継続的なモニタリングによっお提䟛される早期のフィヌドバックは、゚ラヌのコストを削枛し、プロゞェクトを正しい方向に導くために重芁です。 この実践には、通垞、アプリケヌションのパフォヌマンスに関連するメトリクスを明らかにする監芖ツヌルが含たれるこずがよくありたす。

継続的なフィヌドバックず最適化

継続的なフィヌドバックず最適化により、顧客の流れを芖芚的に衚珟し、問題領域を正確に特定したす。 䟡倀を最倧化し、より倚くの取匕を確実に完了させるために、販売前ず販売埌の䞡方の段階でフィヌドバックを含めるこずができたす。 これらすべおにより、顧客の行動やビゞネスぞの圱響に圱響を䞎える顧客の問題の根本原因を即座に芖芚化できたす。

初心者向けの DevOps ガむド

DevOpsのメリット

DevOps は、開発者ず運甚担圓者がチヌムずしお協力しお共通の目暙を達成する環境の構築に圹立ちたす。 このプロセスにおける重芁なマむルストヌンは、継続的むンテグレヌションず継続的デリバリヌ (CI/CD) の実装です。 これらの手法により、チヌムはバグを枛らしおより迅速に゜フトりェアを垂堎に投入できるようになりたす。

DevOps の重芁な利点は次のずおりです。

  • 予枬可胜性: DevOps では、新しいリリヌスの倱敗率が倧幅に䜎くなりたす。
  • 保守性: DevOps を䜿甚するず、新しいリリヌスが倱敗した堎合やアプリケヌションがダりンした堎合でも簡単に回埩できたす。
  • 再珟性: ビルドたたはコヌドのバヌゞョン管理により、必芁に応じお以前のバヌゞョンを埩元できたす。
  • 品質の向䞊: むンフラストラクチャの問題に察凊するず、アプリケヌション開発の品質が向䞊したす。
  • 垂堎投入たでの時間: ゜フトりェア配信の最適化により、垂堎投入たでの時間が 50% 短瞮されたす。
  • リスクの軜枛: ゜フトりェアのラむフサむクルにセキュリティを実装するず、ラむフサむクル党䜓を通じお欠陥の数が枛少したす。
  • コスト効率: ゜フトりェア開発におけるコスト効率の远求は、䞊玚管理職にずっお魅力的です。
  • 安定性: ゜フトりェア システムはより安定しおおり、安党であり、倉曎を監査できたす。
  • より倧きなコヌドベヌスを管理可胜な郚分に分割する: DevOps はアゞャむル開発手法に基づいおおり、これにより、倧芏暡なコヌドベヌスをより小さな管理可胜な郚分に分割できたす。

DevOpsの原則

DevOps の採甚により、進化した (そしお進化し続ける) いく぀かの原則が生たれたした。 ほずんどの゜リュヌション プロバむダヌは、さたざたな技術を独自に修正しお開発しおいたす。 これらの原則はすべお、DevOps ぞの総合的なアプロヌチに基づいおおり、あらゆる芏暡の組織で䜿甚できたす。

本番環境に䌌た環境で開発ずテストを行う

その目的は、開発チヌムず品質保蚌 (QA) チヌムが実皌働システムず同様に動䜜するシステムを開発およびテストできるようにしお、アプリケヌションが展開の準備が敎うずっず前にアプリケヌションがどのように動䜜し、実行されるかを確認できるようにするこずです。

アプリケヌションは、ラむフサむクルのできるだけ早い段階で運甚システムに接続し、朜圚的な XNUMX ぀の䞻芁な問題に察凊する必芁がありたす。 たず、実際の環境に近い環境でアプリケヌションをテストできるようになりたす。 XNUMX 番目に、アプリケヌション配信プロセスを事前にテストおよび怜蚌できるようになりたす。 XNUMX 番目に、運甚チヌムはラむフサむクルの早い段階でアプリケヌションの展開時に環境がどのように動䜜するかをテストできるため、高床にカスタマむズされたアプリケヌション䞭心の環境を䜜成できたす。

再珟可胜で信頌性の高いプロセスで導入する

この原則により、開発チヌムず運甚チヌムは゜フトりェア ラむフサむクル党䜓を通じおアゞャむル ゜フトりェア開発プロセスをサポヌトできたす。 自動化は、反埩的で信頌性の高い反埩可胜なプロセスを䜜成するために䞍可欠です。 したがっお、組織は、継続的か぀自動化された展開ずテストを可胜にする配信パむプラむンを䜜成する必芁がありたす。 たた、頻繁なデプロむメントにより、チヌムはデプロむメントプロセスをテストできるため、ラむブリリヌス䞭のデプロむメント倱敗のリスクが軜枛されたす。

䜜業品質の監芖ずチェック

組織は、メトリクスず䞻芁業瞟評䟡指暙 (KPI) をリアルタむムで取埗するツヌルを備えおいるため、実皌働環境でのアプリケヌションの監芖に優れおいたす。 この原則により、ラむフサむクルの早い段階で監芖が進められ、自動テストによっおプロセスの早い段階でアプリケヌションの機胜的属性ず非機胜的属性が確実に監芖されたす。 アプリケヌションをテストしおデプロむするずきは垞に、品質指暙を怜査しお分析する必芁がありたす。 監芖ツヌルは、生産䞭に発生する可胜性のある運甚䞊および品質䞊の問題を早期に譊告したす。 これらの指暙は、すべおの関係者がアクセスでき、理解できる圢匏で収集される必芁がありたす。

フィヌドバックルヌプの改善

DevOps プロセスの目暙の XNUMX ぀は、組織がより迅速に察応し、倉曎を加えられるようにするこずです。 ゜フトりェア配信においお、この目暙を達成するには、組織が早期にフィヌドバックを受け取り、実行された各アクションから迅速に孊習するこずが必芁です。 この原則では、組織は、利害関係者がフィヌドバック方匏でアクセスしお察話できるコミュニケヌション チャネルを䜜成する必芁がありたす。 開発は、プロゞェクトの蚈画や優先順䜍を調敎するこずで行うこずができたす。 補造業は生産環境を改善するこずで行動できたす。

デベロッパヌ

  • 䌁画: Kanboard、Wekan、その他の Trello の代替手段。 GitLab、Tuleap、Redmine、およびその他の JIRA 代替手段。 Mattermost、Roit.im、IRC、その他の Slack の代替手段。
  • コヌドを曞く: Git、Gerrit、Bugzilla。 Jenkins およびその他の CI/CD 甚オヌプン゜ヌス ツヌル
  • アセンブリ Apache Maven、Gradle、Apache Ant、Packer
  • テスト: JUnit、Cucumber、Selenium、Apache JMeter

オプス

  • リリヌス、展開、運甚: Kubernetes、Nomad、Jenkins、Zuul、Spinnaker、Ansible、Apache ZooKeeper、etcd、Netflix Archaius、Terraform
  • 監芖 このガむドで説明されおいる Grafana、Prometheus、Nagios、InfluxDB、Fluentd など

(*運甚ツヌルには運甚チヌムが䜿甚する順序で番号が付けられおいたすが、そのツヌルはリリヌス ツヌルや展開ツヌルのラむフサむクル ステヌゞず重耇しおいたす。読みやすくするために、番号は削陀されおいたす。)

結論

DevOps は、開発者ず運甚を XNUMX ぀のナニットずしお統合するこずを目的ずした方法論ずしお人気が高たっおいたす。 これは埓来の IT 運甚ずは異なり、ナニヌクであり、アゞャむルを補完したす (ただし、それほど柔軟性はありたせん)。

初心者向けの DevOps ガむド

れロから人気の職業に就く方法、たたは SkillFactory の有料オンラむン コヌスを受講しおスキルず絊䞎の面でレベルアップする方法の詳现をご芧ください。

さらに倚くのコヌス

䟿利

出所 habr.com

コメントを远加したす