DevOpsの文化、ツール、プラクティスを取り入れるチームは、円滑な連携、効率的な作業、迅速な高品質製品の提供を実現し、顧客満足度を向上させている。
DevOpsは、組織内の各部署が所在地に関係なく連携し、効果的なコミュニケーションと継続的インテグレーションを実現する環境を整えることで、ビジネスの俊敏性を高める。
UpGuardのレポートによれば、DevOpsを導入している63%の組織で、ソフトウェアチームのパフォーマンス改善と、より頻繁な製品リリースが達成されている。
研究によると、DevOpsは世界中のソフトウェア組織に対し、魅力、効率、製品品質を高めるスピードを加速させている。
2021年はDevOpsにとって重要な年となる。DevOpsは開発、運用、IT、セキュリティ、製品など複数の部署やソフトウェア開発の各フェーズにまたがるため、多種多様なツールが存在する。
ここでは、主要なCI/CDライフサイクルに沿った、現在市場で入手可能な主要なDevOpsツールをいくつか紹介する。その前に、そもそもDevOpsツールとは何か?
DevOpsは、一つのツールだけでなく、様々な種類・目的のツールを組み合わせて動作する。このようなツール群は、先に述べたDevOpsツールチェーンとも呼ばれる。
これらのツールは、開発、管理、配信など、ソフトウェア開発のライフサイクル全体をサポートする。
DevOpsの実践を行う組織は、これらのツールを管理し、設定、コード記述、テスト、パッケージング、配布、デプロイ、検証、バージョン管理など各フェーズに組み込んで活用している。
本稿では、各開発フェーズに応じて分類したDevOpsツールを紹介する。
自動化は、ソフトウェアの基本的なコード品質、統合テスト、セキュリティテストなども実現する。自動化テストは、単体テスト、セットアップテスト、UIテスト、ユーザー体験テストに限定されず、DevOpsはサーバのプロビジョニング、構築、システム設計、ファイアウォール設定、生産環境でのモニタリングなど、さまざまな工程で自動化を推進している。
DevOpsにおける自動化の活用方法を検討する場合、こちらにトップ10の自動化ツールを紹介する。
コンテナ技術の革新者として人気のDockerは、世界中で1100万人以上のエンジニアに利用されている。創設者Solomon Hykesによって生み出され、2013年にDocker, Inc.から提供された。
DevOpsツールとして、Dockerはエンジニアがコードを容易に構築、パッケージ化、配信し、仮想マシンではなくコンテナで実行できるよう支援する。これにより従来のセットアップ作業が省かれ、チームの連携が促進される。
Dockerは、開発から構築、デプロイに至るまで、DevOpsサイクル全体で一貫した開発環境の維持を保証する。開発者はDockerイメージを作成して開発環境で動作させ、運用チームはテストや本番環境で利用できる。
Dockerの機能と利点
Jenkinsは、Javaで記述されたオープンソースの自動化ツールで、CI(継続的インテグレーション)ツールとして、開発者が新たなコードを統合し、継続的にビルドできるよう支援する。プラグインを活用してこの目的を実現している。
新たなコード変更を取り込み、ブランチをメインコードに統合し、自動でテストスイートを実行、不具合を報告、最新コードをQA環境へ渡して手動テストを可能にする。
Jenkins Pipelineを使えば、継続的なビルドプロセスの自動化が可能。パイプライン内でビルド定義を設定し、SCMに取り込み、ジョブを構成できる。
長い歴史を持つJenkinsは、豊富なプラグイン、充実したドキュメント、活発なコミュニティにより標準ツールとなっている。近年のアップデートにより、シンプルなUXやパイプライン記述、Docker連携が評価され、多くの組織で採用されている。
Jenkinsの機能と利点
Puppetは、オープンソースのソフトウェア構成管理およびデプロイツールで、サーバを所定の状態に設定するために広く利用される。エージェント方式を採用しており、LinuxやWindowsの各種システム管理に用いられる。マスターとエージェントは設定情報を同期し、R10Kを使用することでCI/CDにおけるコードの自動変更、更新、監査、テストが容易になり、Puppetfilesを使えば環境の自動デプロイも可能となる。これらのエージェント方式は、正確で効率的に動作し、エラーのログ記録も行う。
バージョン管理として、シンプルなGit連携が可能。宣言型であるため、オーケストレーションよりもベースラインの構築に適している。
Puppetの機能と利点
Apache Software Foundationによって2004年に発表されたMavenは、強力な自動化ツールであり、Javaで記述され主にJavaプロジェクト向けにビルドやパッケージングの役割を果たす。
DevOpsツールとして、プロジェクトのビルド、ドキュメント作成、リリース管理を行い、Java以外にもRuby、C#、Scalaなどのプロジェクトにも対応する。
Apache Mavenの機能と利点
どんなソフトウェアプロダクトも根本的な課題解決が目的であり、信頼性が高く、リスクを最小限に抑えて、より速くお客様に届ける必要がある。CI/CDパイプラインは、このような強固で信頼性の高いソフトウェア構築を支援する。以下は、CI/CDパイプラインを導入することの利点である。
TeamCityは、高品質なCIツールで、無料版も提供され、使いやすいインターフェース、シンプルな設定、革新的な機能が特徴である。Java環境とApache Tomcatで動作するが、WindowsやLinuxでも利用可能である。
TeamCityの採用は、組織のニーズに大きく依存する。予算があり、既存プロジェクトで一定数のビルドエンジニアが関与し、ソースコード管理やリリース管理がシンプルに運用されているなら、TeamCityは適している。また、充実したドキュメントも魅力であり、TeamCityの「Depiction Dependencies」機能により、パイプライン全体で一貫したソースコード管理が可能となる。
ただし、TeamCityは特定のエージェントに依存するため、プロビジョニングツールやコンテナ化を併用する必要がある。
TeamCityの設定ベースのフォームデザインは、運用の手間を軽減する。
また、AWS、GCP、Azureでのエージェント自動スケーリングをサポートし、VMwareやKubernetesともプラグインで連携する。ただし、GitHubとの連携は対応していない。
TeamCityの機能と利点
DevOpsチームは、継続的インテグレーション、デプロイ、ソフトウェア配信のためにAtlassianのBambooを選んだ。Bambooは、JIRA、BitBucket、Stash、Hipchat、Confluenceなど他のAtlassianツールと一体となり、自動ビルド、テスト、デリバリーを一つのフローに統合する点が大きな特徴で、堅牢で使いやすいGUIも備えている。
BitBucket、Confluence、Jiraとの容易な統合が大きなメリットであり、cronのようなトリガーも設定できるため、監査、テスト、スケジュール実行を自動化できる。
Bambooの機能と利点
Travis CIは、オープンソースプロジェクトに適した強力なCIツールで、GitHubやBitbucket上でソフトウェアをビルド・テストするために利用される。Rubyで記述され、MITライセンスが採用されている。
このクラウドベースのサービスは、新たなコードプッシュを自動的に検知し、GitHubリポジトリでビルドとテストを実行する。
CircleCIの機能と利点
バージョン管理システムは、ソフトウェアチームのソースコード変更を追跡し、人的ミスや事故から守る役割を果たす。
プロジェクトチームは常に新たなコードを作成し、既存のコードに変更を加える。これらの変更履歴は将来の参照や、問題発生時の原因特定に役立つ。
すべてのコードが記録されるため、エンジニアは必要に応じて以前のバージョンに戻り、問題解決を行いながらチーム全体の混乱を最小限に抑えられる。
GitHubは、世界中で何百万人ものユーザーに利用される最も有名なソースコード管理ツールである。使いやすいUI、誤削除リポ復元、不整合解消、各種統合機能、セキュリティがその特徴であり、停止やダウンタイムがなく非常に信頼性が高い。
豊富なコミュニティがあり、オープンソースプロジェクトにも最適。Microsoft所有により、Azure DevOpsやMicrosoftツールとの連携も強化され、CI/CDサイクルの管理を柔軟にする。
ただし、無料プランでは1リポジトリあたり最大3人までのプライベート利用に限定される。
GitHubの機能と利点
構成管理ツールを活用すれば、変更やデプロイが迅速、再現性、柔軟性、予測可能性を持って行われ、常に最適な状態を維持できる。
構成管理ツールの利点は、以下の通りである:
一部のツールは宣言型モデルを採用。サーバー側のエージェントが定期的に中央リポジトリから最新設定を取得し適用、または中央サーバーから対象サーバへ変更をプッシュする仕組みを持つ。
Kubernetes(通称K8s)は、オープンソースのコンテナオーケストレーションプラットフォームで、コンテナ化されたソフトウェアの構築、管理、スケーリングを自動化する。
Go言語で書かれ、Googleが開発を進め、2014年にリリースされた。現在はCloud Native Computing Foundationがサポートを行っている。
他のDevOps自動化ツールと比べ、Kubernetesは多数のコンテナを含むアプリに対して有用で、開発者は複数マシンへコンテナ群を正しくデプロイできる。
プロフェッショナルなマスター/エージェント方式を利用し、コンテナの予約、管理、ヘルスチェックの自動化が可能。Kubernetesを活用すれば、Dockerコンテナを自動生成し、需要やスケーリングに応じて割り当てることができる。
Kubernetesの機能と利点
エンジニア、アーキテクト、管理者を問わず、DevOpsチームにおいて、HashiCorpのVagrantは誰もが扱えるシンプルなワークフローを提供する。
Mitchell HashimotoによってRubyで書かれ、2010年にリリースされた。Dockerコンテナ、AWS、VMwareなど、簡便で軽量かつ再現可能な仮想環境の構築・管理のためのオープンソースツールである。
DevOpsでは、Vagrantがソフトウェア開発環境の構築を行い、開発効率の向上に寄与する。
Vagrantの機能と利点
Chefは、Rubyで記述された「レシピ」を利用し、システムを最新かつ一貫した状態に保つ。レシピは必要なリソースの一覧を提供する。クライアント/サーバ方式またはオンプレミスツールとして利用でき、主要クラウドプロバイダと優れた連携が可能である。
Chefを用いることで、サーバのセットアップや保守作業が効率化され、Amazon EC2、Microsoft Azure、Google Cloud Platformなどと連携し、サーバのデプロイや構成が容易になる。
Chefは幅広いユーザーに採用され、様々な技術レベルの人々がレシピを扱える豊富なツールセットを提供するが、基本的には単なるツールである。
すべてのサーバがITシステムに沿った設定で管理され、手動更新なしにサーバ追加が可能となる。
Chefの機能と利点
Ansibleは非常に優れたツールで、コマンドラインから複数サーバの操作や、YAML形式のプレイブックによるタスク自動化が可能。チーム内や非エンジニアにも分かりやすく、シンプルでエージェントレスであることが大きな魅力である。
エージェントが不要なためシステム負荷が少なく、デフォルトはプッシュモード(SSH接続必須)だが、必要に応じてプルモードも利用可能。プレイブックは単純なコマンドで記述でき、タスク、プラグインなどを組み合わせた複雑な自動化にも対応する。
また、AnsibleはAWX、Jenkins、RunDeck、ARAなどと連携し、中央制御システムとして運用でき、プレイブック実行時の可視性を向上させる。
Ansibleの機能と利点
DevOpsでは、多くのオープンソースツールやテストソリューションが利用可能で、プロダクトの開発、統合、デリバリーを支援し、テスト工程の自動化により時間を節約できる。以下は、主要なDevOpsテストツールとその特徴である。
SoapUIは、SOAP及びREST向けのクロスプラットフォーム対応無料オープンソースAPIテストツールで、機能テストや負荷テストに広く活用されている。
2005年にリリースされ、機能テスト、負荷テスト、セキュリティテストなど幅広いテスト機能を備える唯一のオープンソースツールである。
企業向け、またはオープンソース向けかを問わず、SmartBearのSoapUIはRESTおよびSOAPのテストに特化した優れた選択肢である。
SoapUIの機能と利点
Seleniumは最も広く利用される自動化テストツールで、幅広いアプリケーションの自動テストに特化している。
2018年にリリースされたオープンソーステストツールで、軽量なテスト実行フレームワークと、スクリプト言語を用いずに機能テストを記述する機能を備えている。
ウェブシステムの挙動のシミュレーション、APIリクエストの送信、システム動作の一連のテストが可能で、RubyやHTMLで複雑なテストスクリプトを記述できる。
Seleniumは、ウェブアプリ開発者がテストを編集、記録、分析するためのIDEを提供し、各テストに初期設定やブレークポイントを設定できる。また、Java、PHP、Python、C、Perl、Rubyなどの多言語でテストスクリプトを作成できるDSLも備える。
Seleniumの機能と利点
Tricentisは、完全自動化、コード不要、AI活用による独自のエンタープライズ向けテスト手法を提供し、ソフトウェア提供の迅速化、コスト削減、品質向上を実現する。
AI制御のコードレス自動テストにより、オンプレミス、クラウド、ハイブリッド、モバイル各環境でエンドツーエンドのテストが効率化・高速化される。
Tricentis Toscaの機能と利点
テスト自動化の分野では新参だが、TestSigmaはその優れた機能で注目を集めつつある。クラウド上で動作するウェブ、API、モバイルアプリ向けのDevOpsツールで、AIを活用してテストの実行や保守を迅速化する。
TestSigmaの機能と利点
DevOpsの監視は、企画、開発、統合・テスト、デプロイ、運用など、開発プロセス全体を把握することを意味する。これにより、本番環境でのアプリ、システム、ネットワークの問題を包括的かつ一貫して確認できる。継続的なストリーミング、ライブ再生、インサイトなどの機能は、監視および運用管理の重要な要素である。
DevOpsツールによる監視は、ユーザー体験の問題に迅速かつ効果的に対応するために役立つ。さらに、開発初期段階へのシフト(Shift Left)を促し、不良コード変更の件数を減少させる。統一された監視ツールは、問題発生時の検知と対応に最適である。
Prometheusは、アラートおよびメトリクス管理のための主要なオープンソース監視ツールで、Go言語で記述され2012年にリリースされた。
強力なクエリと言多次元データモデルを用い、時系列データベースに継続的にメトリクスを記録する。Grafanaユーザーの間では広く知られている。
Prometheusの機能と利点
Nagiosは、システム、アプリ、ネットワークを監視するオープンソースツールで、サービスの健康状態をチェックし、ログ履歴を管理する。また、ダウンタイムや障害原因を報告する。
ホスト毎のアラート抑制、メンテナンスモード、通知設定の変更など、豊富な設定オプションとアラート機能を提供。5,000以上のプラグインにより監視範囲が広がり、カスタムプラグインの開発も可能である。
ただし、Nagiosは若干古いため最新システムとの連携には設定ファイルベースの手間が伴う。
Nagiosの機能と利点
Splunkの先進的なストリーミング解析を用いれば、クラウド規模でシステムのパフォーマンスを継続的に監視できる。
Splunkは、ウェブライクなインターフェースでマシン生成ビッグデータの検索、フィルター、解析を行い、システム、サービス、クラウドのデータを自動収集・解析できる。
Splunkの機能と利点
ELK Stackは、Elasticsearch、Logstash、Kibanaという3つの有名なオープンソースツールの優れた組み合わせである。
これを用いることで、全てのアプリやシステムのログを集約、解析し、インフラやシステム監視、セキュリティ解析、迅速なトラブルシュートに役立つインサイトを得ることができる。
選択肢が多いのは魅力的である反面、あまりに豊富なツール群により圧倒されることもある。統一や自動化が十分でないため、導入や引き継ぎ、学習に際して高いハードルが生じる場合がある。
場合によっては、同じ企業内の組織がツールの比較検討に多くの時間と費用を費やし、結果として無駄が発生する。また、ツールのバージョンが古くなり、統合が旧コードに依存することでセキュリティ問題が拡大し、開発者がツールチェーンの構築と統合作業に疲弊する。
最新情報を購読