JujuとJenkinsを比較

    「Juju」と「Jenkins」の概要

    「Juju」と「Jenkins」は、CI(Continuous Integration:継続的インテグレーション)ツールです。デプロイまでの作業を自動化することで、アジャイル開発におけるプロセスを効率化できます。それぞれ高い人気を得ているCIツールです。

    ■「Juju」とは

    Jujuは、アプリケーションモデリングによるデプロイツールです。

    「ベアメタルサーバ(ローカルコンテナベース)」「パブリッククラウドサービス」「プライベートクラウドサービス」などの環境に対して、アプリケーションサービス用インフラストラクチャの「展開」「構成」「スケーリング」「統合」「操作」を迅速に実施できます。

    アプリケーションの構築/動作を自動化するために必要なすべての操作知識をカプセル化できます。対象環境に対する運用タスクを効率化し、運用オーバーヘッドを削減することに重点を置いています。

    ■「Jenkins」とは

    Jenkinsは、継続的インテグレーション支援ツールです。

    ソフトウェア開発プロジェクトなどにおいて、「ビルド」「デプロイ」「テスト」などの作業の自動化/効率化を支援します。

    Jenkinsの主要機能は「継続的なソフトウェアのビルド/テストを行う機能」と「外部で起動するジョブ実行の監視機能」です。

    Javaで開発されたWebベースのソフトウェアで、Webサイトから管理/設定変更/レポート閲覧できます。

    「構築手順書」比較

    デプロイを自動化するために、それらの工程についての指示書となる構築手順書をスクリプトとして記述します。

    ■Jujuは「チャーム」

    Jujuにおける構築手順書は「チャーム」と呼びます。Chefにおける「レシピ」に相当するものです。

    チャームは、クラウドアプリケーションの「展開」「構成」「スケーリング」「維持」「操作」などのすべての手順を定義するための一連のスクリプトで、YAML形式で記述します。

    チャームは、「単一のアプリケーション」+「それを操作するために必要なすべてのコードとノウハウ」をカプセル化します。「他の関連アプリケーションとの連携」や「アップグレードする方法」などについても記述できます。

    チャームを使用することで、「アプリケーションの確実な展開」「繰り返し展開」「必要に応じてスケールアップ」などが容易になります。

    ■Jenkinsは「groovyスクリプト」

    Jenkinsでは、基本的にすべての設定を「groovyスクリプト」で記述することにより自動化できます。

    「Pipeline Plugin」を利用してGroovyスクリプトを書くことで、可視化されたビルドパイプラインを実現できます。デプロイに関わるビルドからリリースまでの一連の流れを可視化できます。

    途中で手作業が入る場合には、一時的にストップでき、途中からの再実行を行えます。複雑なリリースフローや、突発的な手順変更にも対応できます。

     

    参考元サイト

    「Juju」基本情報

    ■概要

    Juju(ジュジュ)とは、アプリケーションモデリングによるデプロイツールです。パブリック(プライベート)クラウドおよびローカルコンテナに対して効率的な展開/構成/拡張/操作を行えます。

    ■基本説明

    Jujuは、オープンソースのアプリケーションモデリングツールです。

    「ベアメタルサーバ(ローカルコンテナベース)」「パブリッククラウドサービス」「プライベートクラウドサービス」などの環境に対して、アプリケーションサービス用インフラストラクチャの「展開」「構成」「スケーリング」「統合」「操作」を迅速に実施できます。

    Jujuは、アプリケーションの構築/動作を自動化するために必要なすべての操作知識をカプセル化でき、対象環境に対する運用タスクを効率化し、運用オーバーヘッドを削減することに重点を置いています。

    ■動作環境

    Jujuは、「パブリッククラウド」「プライベートクラウド」「ローカル環境」に対応します。

    OSとして「さまざまなLinuxディストリビューション」「macOS」「Windows」で利用できます。

    ■経緯

    Jujuは、Ubuntuを商用サポートしているCanonical社が開発し提供しています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →「Juju」オフィシャルサイト

    ライセンス情報

    Jujuのライセンスは「GNU Affero General Public License v3.0」です。

    詳細について、こちらを参照ください。
    →GitHub →juju/juju →LICENCE

    ダウンロード

    →GitHub →juju/juju

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Chef」「Puppet」「Ansible」など。


    「Jenkins」基本情報

    ■概要

    Jenkins(ジェンキンス)とは、オープンソース継続的インテグレーション支援ツールです。ソフトウェア開発プロジェクトなどにおける「ビルド」「デプロイ」「テスト」などの作業自動化/効率化を支援します。

    ■「継続的インテグレーション」とは

    継続的インテグレーション(CI:Continuous Integration)とは、バージョン管理ツールにコミットされたソースコードを定期的に自動ビルドすることにより、問題を早期に発見し対処を行うことです。

    その結果、ソースコード品質の向上、テスト工数の削減といった効果が得られます。

    ■基本説明

    Jenkinsの主要機能は、「継続的なソフトウェアのビルド/テストを行う機能」と「外部で起動するジョブ実行の監視機能」です。

    Javaで開発されたWebベースのソフトウェアで、Webサイトから管理/設定変更/レポート閲覧ができます。

    ■Jenkinsを使った開発の流れ

    開発メンバーがソースコードをコミットすると、Jenkinsが更新を検知し、ビルドツールをキックします。あらかじめ設定しておいた手順に従って、ビルド/テストが実行されます。ビルド/テストが完了したら、Jenkinsは、Webページやメールなどに結果を出力します。

    エラー箇所について、開発メンバーが修正を行い、ビルド/テストを繰り返して、エラーがゼロになるまで繰り返せば、手順書レベルの品質をクリアできていることになります。

    ■経緯

    Jenkinsは、Oracle社主導で開発されていた「Hudson」と呼ばれるソフトウェアがベースとなっています。

    2011年に、オープンソースプロジェクトとして分岐(フォーク)し、Jenkinsとしての開発が始まりました。

    主な開発者の一人として、川口耕介氏がおり、2011年、このプロジェクトにおける自身の働きを讃えられ「Google–O'Reilly Open Source Award」を受賞しています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →Jenkins

    ライセンス情報

    Jenkinsのライセンスは「MIT License」です。

    詳細について、こちらを参照ください。
    →Jenkins →License

    ダウンロード

    →Jenkins →Download

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Concourse CI」など。

    「Jenkins」の主な特徴

    ■非常に高い汎用性

    Linux/Windows/Macなど、どの環境でも、さまざまな種類/言語のスクリプトを実行できます。

    ■多様なトリガー

    「バージョン管理システムのコミット」「cronライクのメカニズムによるスケジューリング」「他のビルドが完了した時」「特定のビルドURLによるリクエスト」などさまざまなトリガーで実行させることができます。

    ■プラグインによる拡張性

    Jenkinsは、プラグインを作成/利用することで機能を拡張できます。プラグインが充実している点も特徴です。

    ■簡易なインストール

    「java -jar jenkins.war」を実行するか、サーブレットコンテナにデプロイするだけで、インストールできます。データベースは不要です。

    ■インターフェース

    分かりやすいWebGUIを使用してJenkinsの設定を行えます。

    ■永続リンク生成

    「最新ビルド」「最新安定ビルド」のような永続(固定)的なクリーンでわかりやすいURLを持ちます。

    「Jenkins」の主な機能

    ■バージョン管理システム連携機能

    バージョン管理システムと連携し、自動的にプロジェクトを構成するソースコードを集め、コンパイルして実行可能な状態にビルドします。

    「CVS」「Subversion」「Git」「Mercurial」「Perforce」「Clearcase」など多くのバージョン管理システムに対応しています。

    バージョン管理システムからビルドへの変更の一覧を生成できます。

    ■分散ビルド機能

    複数のコンピュータで分散ビルド/テストを実行できます。

    ■ユニットテスト機能

    非常に簡単な設定でユニットテストを実行させることができます。

    JUnitのテスト結果を一覧表示/要約で履歴情報とともに表示します。履歴の傾向はグラフ化されます。

    ■タグ管理機能

    ビルド単位でタグをセットできます。

    ■ファイル追跡機能

    「どのビルドがどのjarを生成したのか」「どのビルドがjarのどのバージョンを使用しているのか」などを追跡できます。