DevOpsツール10選
2021年3月21日
0 分で読めます最新のソフトウェア開発プロセスでは、機能を迅速にリリースし、バグを修正するためにCI/CDパイプラインが欠かせません。開発と運用を統合するDevOpsでは、自動化が中心的な役割を果たします。こうした取り組みを支えるにはツールが必要であり、利用できるツールの数は増え続けています。
これらのツールは、次のような繰り返し発生するタスクに活用できます。
コードをスキャンして、バグやセキュリティの脆弱性を検出する
テストを実行する
デプロイ用アーティファクトをビルドしてパッケージ化する
インフラにデプロイする
こうした新しいリリースを常に把握しておくのは簡単ではありません。特に、あなたの仕事はアプリケーションの改善であり、DevOpsツールを探して導入することではないのですから。
DevOpsでは、ツールと同じくらい企業文化が重要です。ソフトウェア開発と運用に対する基本的な考え方の一部でなければなりません。チームは、デプロイ作業を手作業で解決しようと時間を費やすのではなく、自動化の構築と改善に時間を投資する必要があります。手作業には常にヒューマンエラーが起こる可能性があり、バグやセキュリティ上の問題につながるためです。
DevOpsツール10選
適切な考え方を持っていても、それを支えるツールがなければ成果を上げることはできません。そこで、この記事ではツールに焦点を当てます。複数のチームや開発者が関わる複雑なプロジェクトで、迅速かつ効率的なソフトウェア開発を実現するDevOpsツール10選をご紹介します。
1. Snyk
DevSecOps分野の先駆者であるSnykは、セキュリティの脆弱性をスキャンする、クラウドネイティブのマネージドセキュリティプラットフォームです。次の領域を支援し、アーキテクチャ全体を悪意ある侵入者から守ります。
コード内のセキュリティ上の問題
オープンソースの依存関係とサードパーティ製ソフトウェア
インフラの設定ミス
脆弱性のあるコンテナイメージ
Snykはオープンソースプロジェクト向けに無料で利用でき、任意のCI/CDパイプラインで実行できます。また、検出した問題に優先順位を付けます。
セキュリティは、あらゆるソフトウェアプロジェクトにおける重要な課題です。早い段階で対処しなければ、リリースサイクルの大きな障害になりかねません。すべての作業が完了した後でセキュリティアドバイザーが現れ、暗号化が基準を満たしていないと指摘した場合、修正が済むまでデプロイを数日、場合によっては数週間延期することになりかねません。
Snykを使えば、コードをスキャンし、インフラを自動で監視できるため、開発を素早く繰り返しながら機能の構築に集中できます。このDevOpsセキュリティテストツールは、パイプラインの早い段階で潜在的な問題を通知するので、すぐに修正できます。すべてを実装した後でコードを書き直す必要はありません。
2. AWS CodeStar
CodeStarはAWSの主要なDevOpsサービスです。Jenkinsに相当するAWSのサービスで、他のAWS「Code」サービス(CodeCommitやCodeBuildなど)、マネージドコードリポジトリサービス、そしてマネージドDevOps CI/CDパイプラインサービスのCodePipelineと連携します。
CodeStarは、機械学習を活用したコード分析ツールAWS CodeGuruとも連携します。コードリポジトリをスキャンし、人気のオープンソースリポジトリやAmazonのリポジトリで採用されているセキュリティのベストプラクティスに照らして評価します。
AWSを利用する際は、その上にセキュリティレイヤーを追加することが重要です。SnykのAWS脆弱性スキャンは、コードをスキャンしサービスを監視することで、AWSインフラのセキュリティを強化します。
3. Docker
Dockerは、コンテナイメージ形式とコンテナ実行環境で構成されるDevOpsデプロイツールです。コードをDockerイメージと呼ばれるファイルにパッケージ化し、異なるホスト上で仮想マシンのように実行できます。クラウドの「パッケージ形式」とも言えるでしょう。Dockerを使えば、プログラミング言語に依存することなく、すべてのコードと依存関係をローカルでテストし、リモートにデプロイできます。Dockerでアプリケーションをデプロイする場合は、次のDockerセキュリティのベストプラクティスに従いましょう。
Dockerイメージ自体は安全とは限りませんが、Docker Content Trustを使うと、デジタル署名によってイメージの配布元を検証できます。イメージはサードパーティが運営するレジストリにアップロードされ、利用者はそこからダウンロードします。Docker Content Trustは、転送中にイメージが改ざんされていないことを保証します。また、ソフトウェアサプライチェーンでは、「クローズドソースコードはオープンソースより安全」という前提からの転換も進んでいます。広く利用されているオープンソースコードは透明性が高く、クローズドソースコードよりもセキュリティの脆弱性を迅速に修正できます。
SnykのDockerセキュリティスキャンを使えば、イメージを安全にアップグレードしたり、別のイメージに置き換えたりできます。アプリケーションをカプセル化し、許可されていないホストマシンのリソースにアクセスできないようにすることも可能です。多くのイメージには、セキュリティのベストプラクティスがあらかじめ組み込まれています。
4. Podman
Red Hatが開発した、軽量なDocker代替ツールです。Podmanは追加のデーモンプロセスなしで動作し、コンテナをrootとして実行する必要もありません。また、Dockerと同じCLIコマンドを使用するため、そのまま置き換えて利用できます。
Dockerはクライアント・サーバーモデルでコンテナを起動し、異なるUIDを使ってコンテナを実行します。一方、Podmanはfork/execモデルでコンテナを起動します。これにより、Linuxの監査ログに記録されるUIDが正確になり、問題発生時に後から確認できます。
Dockerのオープンソースコミュニティでは、ローカル開発に使える代替コンテナランタイムが強く求められていました。Podmanはそのニーズに応えています。複数のベンダーがランタイムを提供することで、この分野では今後さらにイノベーションが進むでしょう。
5. Prometheus & Grafana
Prometheusは、Cloud Native Computing Foundationが管理するKubernetesクラスター向けのDevOps監視ツールです。Grafanaは、Prometheusが収集した監視データを可視化するツールです。どちらもオープンソースで、自社インフラにデプロイでき、高度なカスタマイズが可能です。
6. GitHub Actions
Microsoft傘下のGitHubは、最も広く利用されているマネージドGitリポジトリホスティングサービスです。さまざまなツールやサービスと連携できます。最近ではGitHub Actionsなど、多くの新機能が追加されました。GitHub Actionsを使うと、プッシュやプルリクエストなど、リポジトリ上のイベントに応じてタスクを実行できます。
GitHub Codespacesを使えば、GitHubでホストされているリポジトリ用のブラウザベースのIDEを起動し、すぐにコーディングを始めることもできます。
GitHubリポジトリにパスワードを追加してしまうという典型的なミスを避ける方法など、GitHubセキュリティのベストプラクティスについて詳しく見てみましょう。
CI/CDパイプラインにセキュリティを組み込む
Snykはお使いのCI/CDパイプラインで動作し、優先度の高い脆弱性の修正を支援します。
7. Selenium
Seleniumは、UIテスト向けのオープンソーステストランナーです。UI上のクリック操作を自動化し、システム上で実際のユーザー操作をシミュレートできます。修正済みのバグが再発していないか確認するうえで、特に役立ちます。
Seleniumは主要なブラウザーやCI/CDツールと連携します。ブラウザープラグインでアプリケーション上のクリック操作を記録し、今後のUI変更に対応しやすくなるよう、記録したスクリプトを編集できます。
8. Sentry
Sentryは、フロントエンドやモバイルアプリケーション向けのマネージド監視サービスです。数行のコードで連携でき、アプリの利用中に顧客が遭遇したバグを把握できます。ビデオゲームの監視に対応する新しいベータ機能もあります。
9. Slack
Slackは、業界標準とも言えるマネージドチャットツールです。カスタマイズ用のAPIやボットを提供しており、DevOpsで使われるさまざまなCI/CDツールと連携できます。
これによりシステムを継続的に監視できるため、問題が発生した場合にも、できるだけ迅速に対処できます。
10. GitLab
GitLabはGitHubのオープンソース代替として登場し、現在では広く利用されているDevOpsソリューションです。Gitリポジトリ、課題、CI/CDパイプラインを一元管理できます。
2019年には、GitLabも次のようなDevSecOps機能をアプリケーションに統合し始めました。
静的アプリケーションセキュリティテスト(SAST)
動的アプリケーションセキュリティテスト(DAST)
コンテナスキャン
依存関係のスキャン
これらの機能の一部は、無料プランでも利用できます。
GitLabは自社サーバーでホストできるほか、自社でサーバーを運用したくない場合はマネージドサービスも利用できます。
まとめ
ソフトウェア業界にはDevOpsツールがあふれており、DevSecOpsに対応する機能を備えたものも数多くあります。自社インフラでホストできるオープンソースツールもあれば、面倒な運用を外部に任せられるマネージドサービスもあります。CI/CDパイプラインの各段階はもちろん、パイプライン自体にもさまざまな代替ツールがあります。どのツールが適切かは、IT戦略によっても異なります。この記事で紹介したツールは汎用的なものが中心ですが、たとえばNode.js DevOpsのオープンソースプロジェクト向けなど、より専門的なDevSecOpsツールもあります。
