DevOpsスタヌタヌガむド

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



画像



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



DevOpsずは



単䞀の定矩はありたせんが、DevOpsは、反埩可胜なステップず自動化により、開発チヌムず運甚チヌム間の盞互䜜甚によりコヌドを本番環境に迅速にデプロむできるようにするテクノロゞヌフレヌムワヌクだず思いたす。蚘事の残りの郚分では、このステヌトメントを展開したす。



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



DevOpsは、開発チヌム、オペレヌタヌ、およびビゞネスチヌム間のコラボレヌションが重芁な偎面ず芋なされる文化を想定しおいたす。組織内のDevOpsは継続的に顧客にも利益をもたらすため、それはツヌルだけではありたせん。ツヌルは、人ずプロセスずずもにその柱の1぀です。DevOpsは、組織が可胜な限り最短時間で高品質の゜リュヌションを提䟛できるようにしたす。DevOpsは、アセンブリからデプロむメント、アプリケヌション、補品たで、すべおのプロセスを自動化したす。



DevOpsの議論は、開発者、終身゜フトりェアを䜜成する人々、およびこの゜フトりェアのサポヌトを担圓するオペレヌタヌの間の関係に焊点を圓おおいたす。



開発チヌムの課題



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



  • 競争の激しい垂堎では、補品を予定どおりに玍品するようにずのプレッシャヌが高たっおいたす。
  • プロダクション察応コヌドの管理ず新機胜の導入を管理する必芁がありたす。
  • リリヌスサむクルは長くなる可胜性があるため、開発チヌムはアプリケヌションをデプロむする前にいく぀かの前提を立おる必芁がありたす。このようなシナリオでは、運甚環境たたはテスト環境での展開䞭に発生する問題を解決するために、より倚くの時間が必芁です。


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



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



  • 需芁の増加に応じおリ゜ヌス割り圓おを管理したす。
  • 実皌働環境に適甚する必芁がある蚭蚈たたはカスタマむズの倉曎を凊理したす。
  • アプリケヌションの自己展開埌、本番関連の問題を蚺断しおトラブルシュヌティングしたす。


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



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



  • 新しいリリヌスの盎垰率を䞋げる
  • 展開頻床を増やす
  • アプリケヌションの新しいリリヌスが発生した堎合の平均リカバリ時間を短瞮したす。
  • 修正の時間を短瞮


DevOpsはこれらすべおのタスクを実行し、䞭断のない䟛絊を保蚌するのに圹立ちたす。組織はDevOpsを䜿甚しお、数幎前には考えられなかったレベルのパフォヌマンスを達成しおいたす。䞖界クラスの信頌性、安定性、セキュリティを提䟛しながら、1日あたり数十、数癟、さらには数千の展開を実行したす。バッチサむズず゜フトりェア配信ぞの圱響に぀いおの詳现をご芧ください。



DevOpsは、次のような過去の方法論から生じるさたざたな問題に察凊しようずしたす。



  • 開発チヌムずオペレヌタヌの分離
  • 個別のフェヌズでのテストず展開。蚭蚈ずビルドの埌に実行され、ビルドサむクルよりも時間がかかりたす。
  • , -
  • ,
  • ,


画像



DevOps, Agile IT



DevOpsは、他のITプラクティス、特に柔軟でりォヌタヌフォヌルなITむンフラストラクチャず関連しお議論されるこずがよくありたす。



アゞャむルは、゜フトりェア制䜜の原則、䟡倀芳、方法のセットです。したがっお、たずえば、゜フトりェアに倉換したいずいう考えがある堎合は、アゞャむルの原則ず倀を䜿甚できたす。ただし、この゜フトりェアは開発環境たたはテスト環境でのみ実行できたす。゜フトりェアを迅速か぀繰り返し生産に移行するための簡単で安党な方法が必芁であり、その方法はDevOpsのツヌルず手法によるものです。アゞャむル゜フトりェア開発は開発プロセスに重点を眮いおいたすが、DevOpsは最も安党で信頌性の高い方法での開発ず展開を担圓しおいたす。



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



埓来のプロセス DevOpsのプロセス
新しいサヌバヌを泚文した埌、開発チヌムはテストに取り組みたす。タスクフォヌスは、䌁業がむンフラストラクチャを展開するために必芁な広範なドキュメントに取り組んでいたす。 新しいサヌバヌを泚文した埌、開発チヌムずオペレヌタヌチヌムは、新しいサヌバヌをむンストヌルするためのプロセスずワヌクフロヌに぀いお共同で䜜業したす。これにより、むンフラストラクチャ芁件の理解を深めるこずができたす。

, , , , . , , , .
. .

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

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




DevOpsラむフサむクル



DevOpsには、䞀般的に受け入れられおいる特定の手法の採甚が含たれたす。



継続的な蚈画



継続的な蚈画は、ビゞネスの䟡倀やビゞョンを怜蚌し、継続的に適応し、進捗を枬定し、顧客のニヌズから孊び、俊敏性のために必芁に応じお方向を倉え、曎新するために必芁なリ゜ヌスず結果を特定するこずで、リヌン原則に基づいお小芏暡から始めたす。事業蚈画。



共同開発



共同開発プロセスにより、ビゞネス、開発チヌム、テスタヌがさたざたなタむムゟヌンに分散し、高品質の゜フトりェアを継続的に提䟛できたす。これには、マルチプラットフォヌム開発、さたざたな蚀語でのプログラミングサポヌト、ナヌザヌストヌリヌの䜜成、アむデアの開発、ラむフサむクルの管理が含たれたす。共同開発には、頻繁なコヌド統合ず自動ビルドを容易にする継続的な統合プロセスず実践が含たれたす。アプリケヌションにコヌドを頻繁に実装するこずで、ラむフサむクルの初期段階修正が容易な堎合で統合の問題が特定され、プロゞェクトが継続的か぀明確な進捗を瀺すため、継続的なフィヌドバックにより統合党䜓の劎力が削枛されたす。



継続的なテスト



継続的なテストは、開発チヌムが速床ず品質のバランスをずるこずを支揎するこずにより、テストのコストを削枛したす。たた、サヌビスの仮想化によっおテストのボトルネックを取り陀き、システムの倉曎に応じお簡単に共有、展開、曎新できる仮想化されたテスト環境を簡単に䜜成できたす。これらの機胜により、ラむフサむクルの早い段階で統合テストを行うこずができるため、テスト環境の初期化ず保守のコストが削枛され、テストサむクル時間が短瞮されたす。



継続的なリリヌスず展開



これらの手法は、䞻芁なプラクティスの1぀である継続的なリリヌスず展開を導入したす。これにより、䞻芁なプロセスを自動化する継続的なパむプラむンが提䟛されたす。ボタンを抌すだけでデプロむメントを有効にするこずで、手動の手順、リ゜ヌスの埅ち時間、および再䜜業を削枛し、リリヌス数を増やし、バグを枛らし、完党な透過性を実珟したす。



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



継続的な監芖



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



䞀定のフィヌドバックず最適化



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



画像



DevOpsの利点



DevOpsは、開発者ずオペレヌタヌが共通の目暙を達成するためにチヌムずしお䜜業する環境を䜜成するのに圹立ちたす。このプロセスにおける重芁なマむルストヌンは、継続的むンテグレヌションず継続的デリバリヌCI / CDの導入です。これらの手法により、チヌムはバグを枛らし、゜フトりェアをより早く垂堎に投入できるようになりたす。



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



  • 予枬可胜性DevOpsは、新しいリリヌスをリリヌスするずきに、著しく䜎い盎垰率を提䟛したす。
  • 保守性DevOpsは、新しいリリヌスの倱敗やアプリケヌションの停止が発生した堎合に、簡単に回埩できるようにしたす。
  • 再珟性アセンブリたたはコヌドリビゞョン管理システムにより、必芁に応じお以前のバヌゞョンを埩元できたす。
  • 高品質むンフラストラクチャの問題を解決するず、アプリケヌション開発の品質が向䞊したす。
  • : 50%.
  • : .
  • : .
  • : , , .
  • : DevOps , .


DevOps



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



本番環境のような環境での開発ずテスト



肝心なこずは、開発チヌムずQAチヌムが本番システムのように動䜜するシステムを開発しおテストできるようにするこずです。これにより、展開の準備ができる前に、アプリケヌションの動䜜ず動䜜を確認できたす。 。



3぀の䞻芁な朜圚的な問題に察凊するには、アプリケヌションをラむフサむクルのできるだけ早い段階で本番システムに接続する必芁がありたす。たず、実際の環境に近い環境でアプリケヌションをテストできたす。次に、アプリケヌションの配信プロセスを事前にテストおよび怜蚌できたす。3番目に、これにより、運甚チヌムはラむフサむクルの早い段階で、アプリケヌションの展開時に環境がどのように動䜜するかを確認できるため、きめ现かく調敎されたアプリケヌション指向の環境を䜜成できたす。



再珟可胜で信頌性の高いプロセスでの展開



この原則により、開発チヌムずオペレヌタヌチヌムは、ラむフサむクル党䜓を通しおアゞャむル゜フトりェア開発プロセスを維持できたす。自動化は、反埩的で信頌性が高く、再珟可胜なプロセスを䜜成するために重芁です。したがっお、組織は継続的な自動展開ずテストを可胜にする配信パむプラむンを䜜成する必芁がありたす。たた、頻繁な展開により、チヌムは展開プロセスをテストできるため、実際のリリヌス䞭に展開が倱敗するリスクを軜枛できたす。



仕事の質のモニタリングずチェック



組織は、リアルタむムの䞻芁業瞟評䟡指暙および䞻芁業瞟評䟡指暙KPIをキャプチャするツヌルを備えおいるため、本番アプリケヌションの監芖に優れおいたす。この原則により、ラむフサむクルの早い段階で監芖が行われ、自動テストがプロセスの早い段階でアプリケヌションの機胜属性ず非機胜属性を远跡するこずが保蚌されたす。アプリケヌションをテストしおデプロむするずきは垞に、品質指暙を調べお分析する必芁がありたす。監芖ツヌルは、生産䞭に発生する可胜性がある運甚䞊および品質䞊の問題を早期に譊告したす。これらの指暙は、すべおの利害関係者がアクセスおよび理解できる圢匏で収集する必芁がありたす。



フィヌドバックルヌプの匷化



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



Dev



  • スケゞュヌリング 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




Ops



  • , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,


(* , . .)





DevOpsは、開発者ずオペレヌタヌを1぀のたずたりのあるものにするこずを目的ずするたすたす人気のある方法論です。これは独特で、埓来のIT運甚ずは異なり、アゞャむルを補完したすただし、柔軟性は高くありたせん。



画像



SkillFactoryの有料オンラむンコヌスを受講しお、スキルず絊䞎の泚目の職業をれロから取埗する方法の詳现をご芧ください。





より倚くのコヌス


有甚






All Articles