|
DevOps を初めて使用する場合は、最初の DevOps パイプラインを構築するための 5 つの手順を確認してください。 DevOpsは、ソフトウェア開発において発生する遅延、孤立した問題、その他の問題を解決するための標準的な方法となっています。しかし、DevOpsの初心者で、どこから始めればよいかわからない場合には、あまり役に立ちません。この記事では、DevOpsパイプラインとは何かを解説し、作成するための5つのステップを紹介します。このチュートリアルは包括的なものではありませんが、開発を開始し、後で拡張するための基礎を築くことができます。まずは、短いストーリーを一つ挿入してみましょう。 私のDevOpsの旅私は以前、Citigroup のクラウド チームで開発に携わっていました...サービスとしてのインフラストラクチャ私はシティバンクのクラウドインフラストラクチャをWebアプリケーションを使って管理していますが、開発パイプラインをより効率的にする方法や、ポジティブなチームカルチャーを育む方法を探ることに常に興味を持っています。その答えは、シティバンクのクラウドアーキテクチャとインフラストラクチャエンジニアリング(Project Phoenix)のCTOであるGreg Lavender氏が推薦してくれた本の中にありました。この本はDevOpsの原則を解説していますが、まるで小説のように読みやすいです。 本の最後にある表には、さまざまな企業がリリース環境で展開する頻度が示されています。
Amazon、Google、Netflix はどのようにしてこれほどの頻度を実現できるのでしょうか? それは、これらの企業がほぼ完璧な DevOps パイプラインを実装する方法を編み出しているからです。 しかし、CitiがDevOpsを導入する前はそうではありませんでした。当時、私のチームは別の…建設段階環境は理想的ですが、開発サーバーへのデプロイメントは非常に手作業です。すべての開発者がアクセスできるのは、IBM WebSphere Applications Community Editionをベースとした単一の開発環境サーバーのみです。問題は、複数のユーザーが同時にデプロイしようとするとサーバーがクラッシュすることです。そのため、開発者はデプロイメント中に互いに通知する必要があり、非常に手間がかかります。さらに、コードテストのカバレッジが低いこと、手動によるデプロイメントプロセスが煩雑であること、そして定義されたタスクやユーザー要件に基づいてコードデプロイメントを追跡できないことなどの問題もあります。 何か行動を起こさなければならないと気づき、同じ考えを持つ同僚にも出会いました。私たちは協力してDevOpsパイプラインの初期構築に取り組むことにしました。彼は仮想マシンとTomcatサーバーをセットアップし、私はJenkinsをセットアップしてAtlassian Jira、BitBucket、コードカバレッジテストを統合しました。このサイドプロジェクトは大成功を収めました。開発パイプラインをほぼ完全に自動化し、開発サーバーの稼働率をほぼ100%にまで高め、コードカバレッジテストの追跡と改善が可能になり、GitブランチをデプロイメントとJiraタスクに連携させることができました。さらに、DevOps構築に使用したツールのほとんどはオープンソースでした。 JenkinsのドキュメントやAnsibleといった高度な設定を活用していないため、私たちのDevOpsパイプラインがいかに原始的であるかを今になって実感しています。しかし、このシンプルなプロセスは、おそらくパレートの法則(80/20ルールとも呼ばれる)のおかげでうまく機能しています。 DevOpsとCI/CDパイプラインの簡単な紹介「DevOpsとは何ですか?」と尋ねると、さまざまな答えが返ってくるかもしれません。DevOpsはアジャイルと同様に、様々な分野を包含するように進化してきましたが、ほとんどの人は少なくとも次の点には同意するでしょう。DevOpsとはソフトウェア開発のプラクティス、あるいは…ソフトウェア開発ライフサイクル(SDLC) であり、その中核となる原則は文化の転換です。開発者と非開発者が同じ空気を吸い、以前は手動でしたタスクが自動化され、誰もが自分の得意分野で仕事をし、同時展開がより頻繁に行われ、スループットが向上し、柔軟性が向上します。 DevOps環境の構築には適切なソフトウェアツールだけでなく、いくつかのツールが不可欠です。中でも最も重要なのは、継続的インテグレーションと継続的デプロイメント(CI/CD)です。異なるビルドフェーズ(例:DEV、INT、TST、QA、UAT、STG、PROD)を備えたパイプライン環境では、手動タスクを自動化し、開発者は高品質なコードを作成し、デプロイメントを柔軟かつ広範囲に展開できます。 この記事では、下の図に示すように、オープンソース ツールを使用して実装された DevOps パイプラインを構築するための 5 段階のアプローチについて説明します。 完全なDevOpsパイプライン 雑談はもう十分です、始めましょう。 ステップ1: CI/CDフレームワークまず、JenkinsなどのCI/CDツールが必要です。JenkinsはJavaベースのオープンソースCI/CDツールで、MITライセンスの下で提供されています。DevOpsムーブメントを推進するためのツールであり、…ファクトスタンダード。 では、Jenkinsとは何でしょうか? 魔法のように強力なリモートコントロールで、様々なサーバーやツールと連携し、オーケストレーションを実行できるツールを想像してみてください。JenkinsのようなCI/CDツールは単体では役に立ちませんが、様々なツールやサーバーと連携することで、驚くほど強力になります。 Jenkins は、DevOps パイプラインを構築するための多くのオープンソース CI/CD ツールの 1 つにすぎません。
以下は、CI/CD ツールを使用した場合の DevOps の様子です。 CI/CDツール CI/CDツールはローカルマシンで実行されていますが、まだ他の作業はできません。DevOpsの道のりを一緒に歩みましょう。 ステップ2: ソースコード管理CI/CDツールが特定の機能を実行できることを確認する最善(そしておそらく最も簡単)な方法は、ソースコード管理(SCM)ツールと統合することです。なぜソースコード管理が必要なのでしょうか?アプリケーションを開発しているとしましょう。Java、Python、C++、Go、Ruby、JavaScriptなど、どの言語を使用してアプリケーションを構築する場合でも、プログラミングは必要です。記述するコードはソースコードと呼ばれます。最初のうちは、特に一人で作業している場合は、すべてをローカルフォルダーに保存しても問題ないかもしれません。しかし、プロジェクトが拡大し、他の人が関与するようになると、コードの変更を共有するときにマージの競合を回避する方法が必要になります。また、以前のバージョンを復元する方法も必要です。バックアップ、コピー、貼り付けは時代遅れです。あなた(とあなたのチーム)は、より優れたソリューションを求めています。 これがSCMが不可欠となった理由です。SCMツールは、コードをリポジトリに保存することで、バージョン管理と複数ユーザー間のコラボレーションを支援します。 SCMツールは数多くありますが、Gitが最も標準的で適切なツールです。Gitの使用を強くお勧めしますが、ご希望であれば他のオープンソースツールもご利用いただけます。
SCM を使用すると、DevOps パイプラインは次のようになります。 ソース管理 CI/CDツールは、ソースコードのチェックインとチェックアウトを自動化し、チームメンバー間のコラボレーションを促進できます。素晴らしいと思いませんか?しかし、これを数十億人が利用し、高く評価できる実用的なアプリケーションにするにはどうすればよいでしょうか? ステップ3: 自動ビルドツール素晴らしい!これでコードをチェックアウトし、変更をソース管理に送信できるようになりました。また、ソース管理での共同作業に友人を招待することもできます。ただし、アプリケーションはまだビルドされていません。Webアプリケーションにするには、コンパイルして、デプロイ可能なパッケージまたは実行ファイルにパッケージ化する必要があります(JavaScriptやPHPなどのインタープリタ型プログラミング言語ではコンパイルは不要です)。 これが自動ビルドツールの開発につながっています。どのビルドツールを選ぶにせよ、それらはすべて共通の目標を持っています。それは、ソースコードを目的の形式にビルドし、クリーンアップ、コンパイル、テスト、特定の場所へのデプロイといったタスクを自動化することです。ビルドツールはプログラミング言語によって異なりますが、ここでは検討に値する一般的なオープンソースツールをいくつかご紹介します。
素晴らしいですね!これで、自動ビルド ツールの構成ファイルをソース コード制御管理システムに配置し、CI/CD ツールでビルドできるようになりました。 ビルド自動化ツール どれも素晴らしいですね。でも、どこに展開すればいいのでしょうか? ステップ4: Webアプリケーションサーバーここまでで、実行可能またはデプロイ可能なパッケージが完成しました。真に有用なアプリケーションが何らかのサービスやインターフェースを提供するには、アプリケーションを配布するためのコンテナが必要です。 Webアプリケーションの場合、Webアプリケーションサーバーがコンテナとなります。アプリケーションサーバーは、デプロイ可能なパッケージ内のプログラミングロジックを検出し、ユーザーインターフェースにレンダリングし、ソケットを開いて外部にWebサービスを提供するための環境を提供します。他の環境では、サービスアプリケーションをインストールするためにHTTPサーバー(仮想マシンなど)も必要になります。さて、これらの内容は皆さんが自力で学ぶことになると思います(コンテナについては後ほど説明します)。 ここにはオープンソースの Web アプリケーション サーバーが多数あります。
DevOps パイプラインはほぼ使用準備が整いました。よくできました! Webアプリケーションサーバー ここで作業を止めてさらに統合を進めることもできますが、コードの品質はアプリケーション開発者にとって非常に重要です。 ステップ5: コードカバレッジテストコードテストウェアの実装もまた、面倒な作業になり得ますが、開発者はプログラム内のすべてのバグを早期に発見し、コードの品質を向上させてエンドユーザーの満足度を確保する必要があります。幸いなことに、コードをテストし、改善のための提案を提供するオープンソースツールが数多く存在します。さらに、ほとんどのCI/CDツールはこれらのツールを統合し、テストプロセスを自動化できます。 コード テストは、テストの作成と実行を支援する「コード テスト フレームワーク」と、コード品質の向上を支援する「コード品質改善ツール」の 2 つの部分に分かれています。 コードテストフレームワーク
コード品質改善ツール
前述のツールとフレームワークのほとんどは、C++ と C# が独自のプログラミング言語であるため (GCC はオープンソースですが)、Java、Python、JavaScript 用に作成されていることに注意してください。 コード カバレッジ テスト ツールを使用したので、DevOps パイプラインはチュートリアルの冒頭に示した図のようになるはずです。 オプションの手順容器前述したように、アプリケーションを仮想マシン (VM) またはサーバーにデプロイすることもできますが、コンテナーの方が優れたソリューションです。 コンテナとは何でしょうか?簡単に言うと、仮想マシン(VM)はオペレーティングシステムのリソースを大量に消費し、アプリケーションのサイズを大きくします。一方、コンテナはアプリケーションの実行に必要なライブラリと設定はごくわずかです。VMが依然として重要な用途を持つことは明らかですが、コンテナはアプリケーションサーバーを含むアプリケーションのデプロイにおいて、より軽量なソリューションを提供します。 コンテナには他にも選択肢がありますが、Docker と Kubernetes がより広く使用されています。
詳細については、Opensource.com の Docker と Kubernetes に関する他の記事を参照してください。
ミドルウェア自動化ツール私たちのDevOpsパイプラインは、主にアプリケーションの共同構築とデプロイに重点を置いていますが、DevOpsツールを使えば他にも様々なことを実現できます。例えば、次のようなことが挙げられます…インフラストラクチャ管理IaC(ミドルウェア自動化ツールとも呼ばれる)ツールは、ミドルウェアのインストール、管理、その他のタスクを自動化するのに役立ちます。例えば、自動化ツールは、Webサーバー、データベース、監視ツールなどのアプリケーションを適切な構成で取得し、アプリケーションサーバーにデプロイすることができます。 検討する価値のあるオープンソース ミドルウェア自動化ツールをいくつか紹介します。
その他のミドルウェア自動化ツールについては、Opensource.com の他の記事を参照してください。
その後の展開これは、DevOpsパイプライン全体における氷山の一角に過ぎません。まずはCI/CDツールから始め、チームの作業を効率化するために自動化できる他のツールも検討してみてください。また、チームの連携を強化するオープンソースのコミュニケーションツールも検討してみてください。 |