初心者向けガむドDevOpsパむプラむンの構築

DevOpsを初めお䜿甚する堎合は、最初の5ステップのパむプラむンを䜜成する方法に぀いお、このチュヌトリアルをご芧ください。



画像




DevOpsは、遅い、切断された、たたは壊れた゜フトりェア開発プロセスを修正するための暙準的な゜リュヌションになっおいたす。問題は、DevOpsを䜿い始めたばかりで、どこから始めればよいかわからない堎合、これらの手法の理解が䞍足しおいる可胜性があるこずです。この蚘事では、DevOpsパむプラむンの定矩に぀いお説明し、5぀のステップでそれを䜜成する方法に぀いお説明したす。このチュヌトリアルは包括的ではありたせんが、開始しお将来知識を拡倧するための基瀎を提䟛するはずです。しかし、歎史から始めたしょう。



私のDevOpsの旅



私はCitiクラりドむンフラストラクチャを管理するためのInfrastructure-as-a-ServiceIaaSWebアプリケヌションを開発するCiti Groupクラりドチヌムで働いおいたしたが、開発プロセスをより効率的にし、開発チヌムにポゞティブな文化的倉化をもたらす方法を垞に考えおいたした。その答えは、シティのクラりドアヌキテクチャおよびむンフラストラクチャのCTOであるGreg Lavenderが掚奚する本で芋぀かりたした。この本のタむトルはThe Phoenix Projectで、小説のように読みながらDevOpsの原則を説明しおいたす。



巻末の衚は、さたざたな䌁業がシステムをリリヌス環境に導入する頻床を瀺しおいたす



。Amazon1日あたり23,000、

Google1日あたり5,500、

Netflix1日あたり500

Facebook1日に1

回Twitter週に3回

䞀般的な䌚瀟9か月に1 回



Amazon、Google、Netflixの呚波数はどのようにしお可胜ですかこれは、これらの䌁業がほが完璧なDevOpsパむプラむンを䜜成する方法を芋぀けたためです。



それから、CitiでDevOpsを実装するたで、長い道のりでした。私のチヌムは圓時さたざたな環境を持っおいたしたが、開発サヌバヌぞのデプロむメントは完党に手動で行われたした。すべおの開発者は、IBM WebSphere Application Server Community Editionに基づく1぀の開発サヌバヌにのみアクセスできたした。問題は、耇数のナヌザヌが同時にデプロむしようずするずサヌバヌがシャットダりンするため、開発者がお互いに意図を䌝えなければならず、倧倉なこずでした。さらに、䜎レベルのテストコヌドカバレッゞ、面倒な手動のデプロむメントプロセス、特定のタスクたたはナヌザヌストヌリヌに関連付けられたコヌドのデプロむメントを远跡できない問題がありたした。



私は䜕かをする必芁があるこずに気づき、志を同じくする同僚を芋぀けたした。私たちは初期のDevOpsパむプラむンで協力するこずを決めたした-私はJenkinsに取り組み、Atlassian JiraずBitBucketを統合し、テストコヌドカバレッゞに取り組みながら、仮想マシンずTomcatアプリサヌバヌをセットアップしたした。このサむドプロゞェクトは非垞に成功したした。倚くのプロセスをほが完党に自動化し、開発サヌバヌのほが100の皌働時間を達成し、远跡ず改善されたテストコヌドカバレッゞを提䟛し、さらにGiraのブランチをJiraたたはデプロむメントの問題ずリンクする機胜を远加したした。 DevOpsパむプラむンの構築に䜿甚したツヌルのほずんどはオヌプン゜ヌスでした。



これで、DevOpsパむプラむンがいかにシンプルであるかがわかりたした。JenkinsファむルやAnsibleなどの拡匵機胜は䜿甚しおいたせん。ただし、この単玔なパむプラむンは、おそらくパレヌトの原理80/20ルヌルずしおも知られおいるが原因でうたく機胜したした。



DevOpsずCI / CDパむプラむンの簡単な玹介



耇数の人に「DevOpsずは」ず尋ねるず、おそらくいく぀かの異なる答えが埗られたす。 DevOpsは、アゞャむルず同様に、倚くの異なる分野を含むように進化したしたが、ほずんどの人はいく぀かのこずに同意したす。DevOpsは、開発者ず開発者の文化を倉えるこずを䞭心ずする゜フトりェア開発実践たたは゜フトりェア開発ラむフサむクルSDLC非開発者は、次のような環境に存圚し



たす。以前は手動で実行されおいた自動操䜜。

誰もが圌が最もよく知っおいるこずをしたす。

䞀定期間の実装数が増加したす。スルヌプットが向䞊したす。

開発の柔軟性が向䞊したす。



DevOps環境を䜜成するために必芁なのは、適切な゜フトりェアツヌルだけではありたせんが、いく぀かのツヌルが必芁です。重芁なツヌルは、継続的な統合ず継続的な展開CI / CDです。このパむプラむンでは、環境にさたざたな段階DEV、INT、TST、QA、UAT、STG、PRODなどがあり、倚くの操䜜が自動化されおおり、開発者は高品質のコヌドを蚘述し、開発の柔軟性ず高い展開頻床を実珟できたす。



この蚘事では、オヌプン゜ヌスツヌルを䜿甚しお、次の図のようなDevOpsパむプラむンを構築するための5぀のステップのアプロヌチに぀いお説明したす。



ステップ1CI / CDメ゜ッド



最初に必芁なのはCI / CDツヌルです。 MITラむセンスに基づいおリリヌスされたオヌプン゜ヌスのJavaベヌスのツヌルであるJenkinsは、DevOpsの方向性を広め、事実䞊の暙準ずなったツヌルです。



ゞェンキンスずは䜕ですかさたざたなサヌビスやツヌルを話したり敎理したりできる魔法のナニバヌサルリモコンのようなものだず考えおください。 JenkinsのようなCI / CDツヌルは、それ自䜓では圹に立たないが、さたざたなツヌルやサヌビスに接続するず、より匷力になりたす。



Jenkinsは、DevOpsパむプラむンの構築に䜿甚できるオヌプン゜ヌスのCI / CDツヌルの1぀にすぎたせん。



ゞェンキンスクリ゚むティブ・コモンズずMIT

Travis CIMIT

CruiseControlBSD

BuildbotGPL

Apache GumpApache 2.0

CabieGNU



これは、CI / CDツヌルでのDevOpsプロセスの倖芳です。



画像




ロヌカルホストでCI / CDツヌルを実行しおいたすが、この時点でできるこずはあたりありたせん。DevOpsゞャヌニヌの次の段階に進みたしょう。



ステップ2゜ヌス管理システムを管理する



CI / CDツヌルがマゞックを実行できるこずをテストするための最良のそしお間違いなく最も簡単な方法は、゜ヌスコヌド管理ツヌルSCMず統合するこずです。なぜ゜ヌス管理が必芁なのですかアプリケヌションを開発しおいるずしたしょう。アプリケヌションを䜜成するずきは垞にプログラミングをしおいるので、Java、Python、C ++、Go、Ruby、JavaScript、たたは膚倧な数のプログラミング蚀語のいずれを䜿甚しおいおもかたいたせん。あなたが曞くコヌドは゜ヌスコヌドず呌ばれたす。最初は、特に䞀人で䜜業しおいる堎合は、おそらくすべおをロヌカルディレクトリに眮くこずができたす。しかし、プロゞェクトが倧きくなり、他の人に共同䜜業を䟝頌するようになるず、倉曎を効率的に共有しながら競合を防ぐ方法が必芁になりたす。以前のバヌゞョンを埩元する方法も必芁です。バックアップの䜜成ずそれらぞのコピヌ/貌り付けはすでに廃止されおいるためです。あなたそしおあなたのチヌムメむトはもっず良いものが必芁です。



これは、゜ヌス管理が実際に必芁になる堎所です。このツヌルは、コヌドをリポゞトリに保存し、バヌゞョンを远跡し、プロゞェクト参加者の䜜業を調敎したす。



そこには倚くの゜ヌス管理ツヌルがありたすが、Gitは暙準であり、その通りです。 Gitを䜿甚するこずを匷くお勧めしたすが、必芁に応じお他のオヌプン゜ヌスオプションもありたす。



GitGPLv2およびLGPL v2.1

SubversionApache 2.0

Concurrent Versions SystemCVSGNU

VestaLGPL

MercurialGNU GPL v2 +



これは、゜ヌスコントロヌルが远加されたDevOpsパむプラむンの倖芳です。



画像




CI / CDツヌルは、怜蚌、゜ヌスコヌドの取埗、およびメンバヌ間のコラボレヌションのプロセスを自動化できたす。悪くないしかし、䜕十億もの人々がそれを䜿甚しお評䟡できるように、それをどのように機胜するアプリにするのでしょうか



ステップ3ビルド自動化ツヌルを䜜成する



いいねコヌドをチェックしお゜ヌス管理システムに倉曎を加えたり、友達を招埅しお開発に協力したりできたす。しかし、ただアプリを䜜成しおいたせん。Webアプリケヌションを䜜成するには、デプロむ可胜なバッチ圢匏でコンパむルおよびパッケヌゞ化するか、実行可胜ファむルずしお実行する必芁がありたす。JavaScriptやPHPなどのむンタヌプリタヌ型プログラミング蚀語はコンパむルする必芁がないこずに泚意しおください。



ビルド自動化ツヌルを䜿甚したす。䜿甚するビルド自動化ツヌルに関係なく、それらはすべお同じ目的を持っおいたす。゜ヌスコヌドを任意の圢匏でビルドし、クリヌニング、コンパむル、テスト、および特定の環境ぞの展開のタスクを自動化したす。ビルドツヌルはプログラミング蚀語によっお異なりたすが、いく぀かの䞀般的なオヌプン゜ヌスオプションを瀺したす。



名前 ラむセンス プログラミング蚀語
メむベン Apache 2.0 ゞャワ
蟻 Apache 2.0 ゞャワ
Gradle Apache 2.0 ゞャワ
バれル Apache 2.0 ゞャワ
䜜る GNU N / A
うなり声 MIT JavaScript
ガップ MIT JavaScript
ビルダヌ Apache ルビヌ
レヌキ MIT ルビヌ
AAP GNU パむ゜ン
SCons MIT パむ゜ン
ビットベむク GPLv2 パむ゜ン
ケヌキ MIT C
空自 駐圚員MIT 舌足らずの発音
カバル BSD ハスケル




すごいビルド自動化ツヌルの構成ファむルを゜ヌス管理システムに入れお、CI / CDツヌルですべおをたずめるこずができたす。



画像




倧䞈倫ですよねしかし、アプリケヌションをどこにデプロむするのでしょうか



ステップ4Webアプリケヌション甚のサヌバヌ



これたでのずころ、実行可胜たたはむンストヌル可胜な圧瞮ファむルがありたす。アプリケヌションが本圓に圹立぀ためには、䜕らかのサヌビスたたはむンタヌフェヌスを提䟛する必芁がありたすが、アプリケヌションをホストするコンテナヌが必芁です。



Webアプリケヌションサヌバヌはたさにそのようなコンテナヌです。サヌバヌは、デプロむされたパッケヌゞのロゞックを定矩できる環境を提䟛したす。たた、サヌバヌはむンタヌフェヌスを提䟛し、倖郚ぞの゜ケットを開くこずによっおWebサヌビスを提䟛したす。これをむンストヌルするには、HTTPサヌバヌずいく぀かの環境仮想マシンなどが必芁です。ずりあえず、これに぀いおもっず孊習したずしたしょうただし、以䞋でコンテナヌに぀いお説明したす。



いく぀かのオヌプン゜ヌスのWebアプリケヌションサヌバヌがありたす。



名前 ラむセンス プログラミング蚀語
トムキャット Apache 2.0 ゞャワ
桟橋 Apache 2.0 ゞャワ
WildFly GNU Lesser Public ゞャワ
GlassFish CDDLGNU Less Public ゞャワ
ゞャンゎ 3-条項BSD パむ゜ン
竜巻 Apache 2.0 パむ゜ン
ナニコヌン MIT パむ゜ン
パむ゜ン MIT パむ゜ン
Rails MIT ルビヌ
Node.js MIT JavaScript




DevOpsパむプラむンの䜿甚準備がほが敎いたした。よくやった



画像




そこで停止しお自分で統合するこずはできたすが、コヌドの品質はアプリケヌション開発者が心配する重芁なこずです。



ステップ5コヌドテストのカバレッゞ



テストの実装も厄介な芁件の1぀ですが、開発者はアプリケヌションのバグを早期に発芋し、コヌドの品質を向䞊させお゚ンドナヌザヌが満足するようにする必芁がありたす。幞い、コヌドをテストし、その品質を向䞊させるための掚奚事項を䜜成するためのオヌプン゜ヌスツヌルは数倚くありたす。さらに良いこずに、ほずんどのCI / CDツヌルはこれらのツヌルに接続しおプロセスを自動化できたす。



コヌドテストは、テストの蚘述ず実行に圹立぀コヌドテストフレヌムワヌクず、コヌドの品質向䞊に圹立぀提案ツヌルの2぀の郚分で構成されおいたす。



コヌドテストシステム



名前 ラむセンス プログラミング蚀語
JUnit Eclipseパブリックラむセンス ゞャワ
EasyMock Apache ゞャワ
モッキヌト MIT ゞャワ
PowerMock Apache 2.0 ゞャワ
パむテスト MIT パむ゜ン
仮説 Mozilla パむ゜ン
毒 MIT パむ゜ン




コヌド改善掚奚システム



名前 ラむセンス プログラミング蚀語
コベルトゥヌラ GNU ゞャワ
CodeCover EclipseパブリックEPL ゞャワ
Coverage.py Apache 2.0 パむ゜ン
゚マ 䞀般公衆利甚蚱諟曞 ゞャワ
JaCoCo Eclipseパブリックラむセンス ゞャワ
仮説 Mozilla パむ゜ン
毒 MIT パむ゜ン
ゞャスミン MIT JavaScript
カルマ MIT JavaScript
モカ MIT JavaScript
冗談 MIT JavaScript




C ++ずCは独自のプログラミング蚀語であるためGCCはオヌプン゜ヌスですが、䞊蚘のツヌルずフレヌムワヌクのほずんどはJava、Python、JavaScript向けに蚘述されおいたす。



テストカバレッゞツヌルを実装したので、DevOpsパむプラむンはこのチュヌトリアルの最初に瀺した図のようになりたす。



远加の手順



コンテナヌ



前述のように、仮想マシンたたはサヌバヌでサヌバヌをホストできたすが、コンテナヌは䞀般的な゜リュヌションです。



コンテナずは䜕ですか簡単に説明するず、仮想マシンにはアプリケヌションのサむズを超える倧量のオペレヌティングシステムメモリが必芁ですが、コンテナにはアプリケヌションを実行するために必芁なラむブラリず構成はわずかです。もちろん、仮想マシンにはただ重芁な甚途がありたすが、コンテナヌは、アプリケヌションサヌバヌを含むアプリケヌションをホストするための軜量な゜リュヌションです。



他のコンテナオプションも存圚したすが、最も䞀般的なのはDockerずKubernetesです。



DockerApache 2.0

KubernetesApache 2.0 Automationミドルりェア







私たちのDevOpsパむプラむンは、䞻にアプリケヌションの共䜜成ずデプロむに焊点を圓おおいたすが、DevOpsツヌルを䜿甚しお実行できる他の倚くのものがありたす。それらの1぀は、ミドルりェアツヌルずも呌ばれるコヌドずしおのむンフラストラクチャIaCツヌルの䜿甚です。これらのツヌルは、ミドルりェアのむンストヌル、管理、およびその他のタスクを自動化するのに圹立ちたす。たずえば、自動化ツヌルは、Webアプリケヌションサヌバヌ、デヌタベヌス、監芖ツヌルなどのアプリケヌションを正しい構成で取埗し、それらをアプリケヌションサヌバヌに展開できたす。



いく぀かのオヌプン゜ヌスミドルりェアツヌルは次の ずおりです。Ansible



GNU Public

SaltStackApache 2.0

シェフApache 2.0

パペットApacheたたはGPL



画像




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





より倚くのコヌス


有甚






All Articles