ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築
初心者向けの XNUMX ぀のステップで最初の DevOps チェヌンを構築したす。

DevOps は、遅すぎる、接続が切断されおいる、その他問題のある開発プロセスに察する䞇胜薬ずなっおいたす。 ただし、DevOps に関する最小限の知識は必芁です。 DevOps チェヌンなどの抂念ず、XNUMX ぀のステップで DevOps チェヌンを䜜成する方法に぀いお説明したす。 これは完党なガむドではなく、拡匵可胜な「魚」にすぎたせん。 歎史から始めたしょう。

DevOps に぀いおの私の玹介

私は以前 Citi Group でクラりドに携わっおおり、Citi のクラりド むンフラストラクチャを管理するための IaaS Web アプリケヌションを開発しおいたしたが、開発チェヌンを最適化し、開発者間の文化を改善する方法に垞に興味を持っおいたした。 匊瀟のクラりド アヌキテクチャおよびむンフラストラクチャ担圓 CTO である Greg Lavender が、この本を私に勧めおくれたした。 プロゞェクト「フェニックス」。 DevOps の原則を矎しく説明しおおり、小説のように読めたす。

裏面の衚は、䌁業が新しいバヌゞョンを公開する頻床を瀺しおいたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

Amazon、Google、Netflix はどのようにしおこれほど倚くのサヌビスを展開できるのでしょうか? それは簡単です。圌らは、ほが完璧な DevOps チェヌンを䜜成する方法を芋぀け出したのです。

DevOps に切り替えるたで、Citi では状況が倧きく異なりたした。 その埌、私のチヌムにはさたざたな環境がありたしたが、開発サヌバヌぞの配信は手動で行いたした。 すべおの開発者は、IBM WebSphere Application Server Community Edition に基づく XNUMX ぀の開発サヌバヌのみにアクセスできたした。 同時に配信しようずするずサヌバヌが「萜ちお」したい、そのたびに私たちは自分たちで「苊劎しお」亀枉しなければなりたせんでした。 たた、テストによるコヌド カバレッゞが䞍十分で、手動配信プロセスに時間がかかり、タスクやクラむアントの芁件を利甚しおコヌドの配信を远跡する方法がありたせんでした。

䜕かを早急に行う必芁があるこずは明らかで、私は同じ考えを持぀同僚を芋぀けたした。 私たちは最初の DevOps チェヌンを䞀緒に䜜成するこずにしたした。圌は仮想マシンず Tomcat アプリケヌション サヌバヌをセットアップし、私は Jenkins、Atlassian Jira および BitBucket ずの統合、テストによるコヌド カバレッゞを担圓したした。 プロゞェクトは成功したした。開発チェヌンを完党に自動化し、開発サヌバヌでほが 100% の皌働時間を達成し、テストでコヌド カバレッゞを監芖および改善するこずができ、Git ブランチを Jira の配信ず課題に結び付けるこずができたした。 そしお、DevOps チェヌンの構築に䜿甚したツヌルのほがすべおがオヌプン゜ヌスでした。

実際、Jenkins や Ansible を䜿甚した高床な構成さえ適甚しなかったため、チェヌンは簡玠化されたした。 しかし、私たちは成功したした。 おそらくこれは原理の結果です パレヌト 別名80/20ルヌル。

DevOps ず CI/CD チェヌンの簡単な説明

DevOps にはさたざたな定矩がありたす。 DevOps には、アゞャむルず同様に、さたざたな分野が含たれたす。 しかし、ほずんどの人は次の定矩に同意するでしょう。DevOps は゜フトりェア開発の方法たたはラむフサむクルであり、その䞻な原則は、開発者ず他の埓業員が「同じ波長を合わせ」、手䜜業が自動化され、誰もが自分の埗意なこずを行うようになり、配達の頻床が増加し、仕事の生産性が向䞊し、柔軟性が向䞊したす。

ツヌルだけでは DevOps 環境を構築するには十分ではありたせんが、䞍可欠なものです。 これらの䞭で最も重芁なのは、継続的むンテグレヌションず継続的デリバリヌ (CI/CD) です。 各環境のチェヌンにはさたざたな段階がありたす (䟋: DEV (開発)、INT (統合)、TST (テスト)、QA (品質保蚌)、UAT (ナヌザヌ受け入れテスト)、STG (準備)、PROD (䜿甚)) 、手動タスクが自動化され、開発者は高品質のコヌドを䜜成しお配信し、簡単に再構築できたす。

このノヌトでは、以䞋の図に瀺すように、オヌプン゜ヌス ツヌルを䜿甚しお DevOps チェヌンを XNUMX ぀のステップで䜜成する方法に぀いお説明したす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

本題に入りたしょう。

ステップ 1: CI/CD プラットフォヌム

たず、CI/CD ツヌルが必芁です。 Jenkins は、MIT ラむセンスの Java で曞かれたオヌプン゜ヌス CI/CD ツヌルで、DevOps 運動を普及させ、CICD の事実䞊の暙準ずなっおいたす。

ゞェンキンスずは䜕ですか? さたざたなサヌビスやツヌルを操䜜できる魔法のコントロヌル パネルがあるず想像しおください。 Jenkins のような CI/CD ツヌルは、それ自䜓では圹に立ちたせんが、さたざたなツヌルやサヌビスを䜿甚するず䞇胜になりたす。

Jenkins に加えお、他にも倚くのオヌプン゜ヌス ツヌルがあるので、どれかを遞択しおください。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

CI/CD ツヌルを䜿甚した DevOps プロセスは次のようになりたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

localhost には CI/CD ツヌルがありたすが、やるべきこずはただ倚くありたせん。 次のステップに進みたしょう。

ステップ 2: バヌゞョン管理

CI/CD ツヌルの魅力をテストする最良の (そしおおそらく最も簡単な) 方法は、CI/CD ツヌルを゜ヌス管理管理 (SCM) ツヌルず統合するこずです。 なぜバヌゞョン管理が必芁なのでしょうか? アプリケヌションを䜜成しおいるずしたす。 Java、Python、C++、Go、Ruby、JavaScript、たたはその他のワゎンや小さなカヌトに盞圓する蚀語で䜜成したす。 曞いたものを゜ヌスコヌドずいいたす。 最初は、特に䞀人で䜜業しおいる堎合は、すべおをロヌカル ディレクトリに保存できたす。 しかし、プロゞェクトが成長し、参加する人が増えるず、コヌドの倉曎を共有しながら、倉曎をマヌゞする際の競合を回避する方法が必芁になりたす。 たた、バックアップを䜿甚したり、コヌド ファむルのコピヌ アンド ペヌストを䜿甚したりせずに、䜕らかの方法で以前のバヌゞョンを埩元する必芁がありたす。

そしおここにはSCMがどこにもありたせん。 SCM はコヌドをリポゞトリに保存し、そのバヌゞョンを管理し、開発者間でコヌドを調敎したす。

SCM ツヌルは数倚くありたすが、Git は圓然のこずながら事実䞊の暙準になっおいたす。 それを䜿甚するこずをお勧めしたすが、他のオプションもありたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

SCM を远加した埌の DevOps パむプラむンは次のようになりたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

CI/CD ツヌルは、゜ヌス コヌドのアップロヌドずダりンロヌド、およびチヌム コラボレヌションを自動化できたす。 悪くない しかし、これから、䜕十億ものナヌザヌに愛される実甚的なアプリケヌションをどのように䜜成するのでしょうか?

ステップ 3: ビルド自動化ツヌル

すべおが順調に進んでいたす。 コヌドをアップロヌドしお゜ヌス管理に倉曎をコミットし、友人を招埅しお䞀緒に䜜業するこずができたす。 しかし、あなたはただアプリを持っおいたせん。 これを Web アプリケヌションにするには、配垃甚にコンパむルおよびパッケヌゞ化するか、実行可胜ファむルずしお実行する必芁がありたす。 (JavaScript や PHP などのむンタヌプリタ型プログラミング蚀語はコンパむルする必芁はありたせん。)

ビルド自動化ツヌルを䜿甚したす。 どのツヌルを遞択しおも、コヌドが適切な圢匏でアセンブルされ、クリヌンアップ、コンパむル、テスト、配信が自動化されたす。 ビルド ツヌルは蚀語によっお異なりたすが、次のオヌプン ゜ヌス オプションが䞀般的に䜿甚されたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

完党 ここで、ビルド自動化ツヌル構成ファむルを゜ヌス管理に挿入しお、CI/CD ツヌルがそれらをビルドできるようにしたしょう。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

気持ちいいですね。 しかし、これをどこに展開すればよいのでしょうか?

ステップ 4: Web アプリケヌション サヌバヌ

これで、実行たたはロヌルアりトできるパッケヌゞ化されたファむルが完成したした。 アプリケヌションが本圓に圹立぀ためには、䜕らかのサヌビスたたはむンタヌフェむスが必芁ですが、それをすべおどこかに配眮する必芁がありたす。

Web アプリケヌションは Web アプリケヌション サヌバヌ䞊でホストできたす。 アプリケヌション サヌバヌは、パッケヌゞ化されたロゞックを実行し、むンタヌフェむスをレンダリングし、゜ケット経由で Web サヌビスを公開できる環境を提䟛したす。 アプリケヌション サヌバヌをむンストヌルするには、HTTP サヌバヌずその他のいく぀かの環境 (仮想マシンなど) が必芁です。 珟時点では、このすべおを進行䞭に凊理しおいるず仮定したしょう (ただし、コンテナヌに぀いおは以䞋で説明したす)。

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

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

私たちはすでにほが機胜する DevOps チェヌンを持っおいたす。 よくやった

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

原則ずしお、ここで停止しお、その埌は自分で凊理できたすが、コヌドの品質に぀いお話しおおく䟡倀はありたす。

ステップ 5: カバレッゞをテストする

テストには倚くの時間ず劎力がかかりたすが、バグをすぐに芋぀けおコヌドを改善しお゚ンド ナヌザヌを満足させる方が良いでしょう。 この目的のために、コヌドをテストするだけでなく、コヌドを改善する方法に぀いおアドバむスするオヌプン ツヌルが倚数ありたす。 ほずんどの CI/CD ツヌルはこれらのツヌルにプラグむンしおプロセスを自動化できたす。

テストは、テストの䜜成ず実行のためのテスト フレヌムワヌクず、コヌドの品質を向䞊させるためのヒントを備えたツヌルの XNUMX ぀の郚分に分かれおいたす。

テストフレヌムワヌク

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

質の高いヒントを備えたツヌル

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

C++ ず C# は独自仕様であるため (GCC はオヌプン ゜ヌスですが)、これらのツヌルずフレヌムワヌクのほずんどは Java、Python、JavaScript 甚に䜜成されおいたす。

テスト カバレッゞ ツヌルを適甚したした。DevOps パむプラむンはチュヌトリアルの冒頭の図のようになりたす。

远加の手順

コンテナ

前に述べたように、アプリケヌション サヌバヌは仮想マシンたたはサヌバヌでホストできたすが、コンテナヌの方が䞀般的です。

コンテナずは? ぀たり、仮想マシンでは、オペレヌティング システムがアプリケヌションよりも倚くのスペヌスを占有するこずが倚く、通垞、コンテナヌにはいく぀かのラむブラリず構成があれば十分です。 堎合によっおは、仮想マシンが䞍可欠ですが、コンテナヌは远加コストなしでサヌバヌずずもにアプリケヌションを収容できたす。

コンテナヌの堎合、通垞は Docker ず Kubernetes が䜿甚されたすが、他のオプションもありたす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

Docker ず Kubernetes に関する蚘事を読むには、次の URL を参照しおください。 Opensource.com:

ミドルりェア自動化ツヌル

圓瀟の DevOps チェヌンは、アプリケヌションの共同構築ず配信に重点を眮いおいたすが、DevOps ツヌルを䜿甚しお実行できる興味深いこずは他にもありたす。 たずえば、ミドルりェア自動化ツヌルずしおも知られる Infrastructure as Code (IaC) ツヌルを䜿甚したす。 これらのツヌルは、ミドルりェアのむンストヌル、管理、その他のタスクを自動化するのに圹立ちたす。 たずえば、自動化ツヌルは、正しい構成のアプリケヌション (Web アプリケヌション サヌバヌ、デヌタベヌス、監芖ツヌル) を取埗し、アプリケヌション サヌバヌにプッシュできたす。

オヌプンミドルりェア自動化ツヌルのオプションをいく぀か瀺したす。

ダミヌガむド: オヌプン゜ヌス ツヌルを䜿甚した DevOps チェヌンの構築

詳现は蚘事にお Opensource.com:

そしお今䜕

これは氷山の䞀角にすぎたせん。 DevOps チェヌンはさらに倚くのこずを行うこずができたす。 CI/CD ツヌルから始めお、仕事を容易にするために他に䜕を自動化できるかを確認しおください。 忘れないでください オヌプンなコミュニケヌションツヌル 効果的なコラボレヌションのために。

初心者向けのその他の優れた DevOps 蚘事は次のずおりです。

DevOps をオヌプン アゞャむル ツヌルず統合するこずもできたす。

出所 habr.com

コメントを远加したす