|
開発と運用の統合は、ソフトウェア開発に新たな視点をもたらします。DevOpsの実践に不慣れな場合や、既存のプロセスの改善を検討している場合、チームに最適なツールを見つけるのは難しい場合があります。 自動ビルドツールからアプリケーションパフォーマンス監視プラットフォームまで、さまざまなオープンソースツールをリストアップしました。ビルドニーズに最適なツールを的確に判断できるよう、ぜひご活用ください。それでは見ていきましょう。 1. グラドル DevOpsツールスタックには信頼性の高いビルドツールが必要です。長年にわたり、Apache AntとMavenが自動ビルドツール市場を席巻していましたが、2009年にGradleが登場し、それ以来急速に人気が高まっています。 Gradleは、Java、C++、Pythonなどの言語でコードを記述できる非常に汎用性の高いツールです。NetBeans、Eclipse、IntelliJ IDEAといった人気のIDEでもサポートされており、GoogleはAndroid Studioの公式ビルドツールとして採用しています。 MavenとAntは設定にXMLを使用しますが、Gradleはビルドを記述するためのGroovyベースのDSLを導入しました。2016年にはGradleチームがKotlinベースのDSLもリリースしたため、Kotlinでもビルドスクリプトを記述できるようになりました。つまり、GradleはMavenとAntの学習経験の一部を活用していることになります。これは、Groovy、Kotlin、またはその他のJVM言語の経験がある場合に特に役立ちます。 さらに、GradleはMavenのリポジトリ形式を採用しているため、Mavenの使用経験があれば依存関係の管理も容易に行えます。また、AntビルドをGradleにインポートすることも可能です。 Gradleの最大の特徴は、コンパイル時間を大幅に節約できる増分ビルドです。Gradleのパフォーマンス測定によると、Mavenの100倍の速度です。 理由の一部は増分アップデートによるものであり、もう1つの理由はGradleのキャッシュされたビルドプロセスとデーモンプロセスによるものです。キャッシュされた定期的な出力タスクは、ビルド情報をメモリに保存するデーモンプロセスによって処理されます。 要約すると、Gradle を使用すると、より迅速な出荷が可能になり、幅広い構成の可能性が提供されます。 2. ギット Gitは、ソフトウェア業界で最も広く使用されているDevOpsツールの一つです。分散型のSCM(ソースコード管理)ツールであり、リモートチームやオープンソースの貢献者に好まれています。Gitを使用すると、開発作業の進捗状況を追跡できます。ソースコードの異なるバージョンを保存し、必要に応じて以前のバージョンに戻すことができます。また、個別のブランチを作成し、デプロイ前に新機能をマージすることも可能です。 GitをDevOpsワークフローに統合するには、チームの作業をホストするオンラインコードストレージサービスが必要です。現在、最も人気のある2つのオンラインコードホスティングサービスはGitHubとBitbucketです。GitHubの方がよく知られていますが、Bitbucketは小規模チーム(最大5人)向けに無料のプライベートストレージを提供しています。GitHubでは、無料でアクセスできるのはパブリックストレージのみですが、多くのプロジェクトにとって依然として優れたソリューションです。 GitHubとBitbucketはどちらも優れた連携機能を備えています。例えば、Slackと連携すれば、誰かが新しいコミットを行うたびにチーム全員に通知が届くようになります。 3. ジェンキンス Jenkinsは、多くのソフトウェア開発チームにとって頼りになるDevOps自動化ツールです。オープンソースのCI/CDサーバーであり、デリバリープロセスの様々な段階で利用できます。Jenkinsの人気の大きな理由は、プラグインの幅広いエコシステムです。現在、1,000を超えるプラグインが提供されており、DockerからPuppetまで、ほぼすべてのDevOpsツールと連携できます。 Jenkinsを使えば、ニーズに合わせてCI/CDプロセスを構築・カスタマイズできます。Jenkinsのドキュメントで以下の例を見つけました。これはほんの一例ですが、なかなか良さそうですよね? JenkinsはWindows、Mac OS X、Linuxですぐに使えるので、使い始めるのはとても簡単です。Dockerを使って簡単にインストールすることもできます。JenkinsサーバーはWebインターフェースからセットアップと設定が可能です。初めて使用する場合は、一般的なプラグインをインストールすることもできますが、独自のカスタム設定を作成することもできます。 Jenkinsを使えば、新しいコードを迅速に反復処理してデプロイできます。また、プロセスパイプラインの各ステップの成功度を測定することもできます。しかし、Jenkinsのユーザーインターフェースが「見苦しく」、直感的でないと不満を言う人もいます。 4. 竹 BambooはAtlassianのCI/CDサーバーソリューションで、Jenkinsに類似した多くの機能を備えています。どちらもデリバリープロセスのさまざまな段階で使用できる人気のDevOpsツールです。ただし、Jenkinsはオープンソースであるのに対し、Bambooは従量課金制です。したがって、重要な疑問は、「無料の代替手段が存在する場合、プロプライエタリソフトウェアを選択する価値があるかどうか」です。これは、予算と目標によって異なります。 Bamboo には、Jenkins で手動で設定する必要がある多くの組み込み機能があります。そのため、Bamboo のプラグインは比較的少なくなっています(Jenkins の 1000 個以上と比較して 100 個程度)。実際、Bamboo はほとんどの機能がそのまま使えるため、それほど多くのプラグインは必要ありません。 Bamboo は、Jira や Bitbucket などの他の Atlassian 製品とシームレスに連携します。また、Git および Mercurial のブランチワークフローとテスト環境も組み込まれています。つまり、Bamboo は設定にかかる時間を大幅に節約できます。より直感的なユーザーインターフェース、リマインダーツール、自動補完機能、その他の便利な機能も備えています。 5. ドッカー Dockerは2018年に最も主流のコンテナプラットフォームでした。また、最も重要なDevOpsツールの一つとも考えられています。DockerがIT業界で広く普及している主な理由は、分散開発を可能にし、アプリケーションのデプロイメントを自動化できることです。アプリケーションのデプロイメントプロセスの移植性とセキュリティを向上させます。Dockerアプリケーションは、オペレーティングシステムやプラットフォームに依存しません。VirtualBoxなどの仮想マシンの代わりにDockerコンテナを使用できます。 Dockerの一番の魅力は、依存関係の管理を気にする必要がないことです。アプリケーションの依存関係をすべてコンテナにパッケージ化し、全体をスタンドアロンユニットとして送信できます。そうすれば、アプリケーションはあらゆるコンピューターやプラットフォームで実行できます。 DockerはJenkinsやBambooとも連携します。これらの自動化サーバーと併用することで、デリバリーワークフローをさらに改善できます。さらに、Dockerはクラウドコンピューティングにも適しています。近年、AWSやGoogle Cloudなどの主要なクラウドベンダーはすべてDockerのサポートを開始しました。そのため、クラウドへの移行を計画している場合、Dockerはプロセスを簡素化できます。 6. Kubernetes 今年はKubernetesも話題となりました。Kubernetesは、Dockerやその代替技術と連携し、Docker化を新たなレベルに引き上げるコンテナオーケストレーションプラットフォームです。Kubernetesが注目を集めるようになったのはごく最近のことで、最初のバージョンは2015年にリリースされました。Kubernetesは、大規模なコンテナ管理ソリューションを模索していたGoogleのエンジニア数名によって開発されました。Kubernetesを使用すると、コンテナを論理ユニットにグループ化できます。 コンテナが数個しかない場合は、コンテナオーケストレーションプラットフォームは必要ないかもしれません。しかし、ある程度の複雑さに達し、リソースのスケーリングが必要になった場合は、コンテナオーケストレーションプラットフォームが次の論理的なステップとなります。Kubernetesを使用すると、数百個のコンテナの管理を自動化できます。 Kubernetesを使えば、コンテナ化されたアプリケーションを単一のマシンに縛り付ける必要はありません。複数のマシンからなるクラスタ全体にデプロイできます。Kubernetesは、クラスタ全体へのコンテナの配布とスケジューリングを自動化します。 Kubernetesクラスターは、マスターノードと複数のワーカーノードで構成されます。マスターノードは事前定義されたルールを実装し、ワーカーノードにコンテナをデプロイします。Kubernetesはワーカーノードのダウンも認識し、必要に応じてコンテナを再割り当てします。 7. パペット・エンタープライズ Puppet Enterpriseは、クロスプラットフォームの構成管理プラットフォームです。コード内でインフラストラクチャを管理できます。インフラストラクチャ管理を自動化することで、ソフトウェアをより迅速かつ安全に提供できます。Puppetは、小規模プロジェクト向けのオープンソースツールも開発者に提供しています。しかし、より大規模なインフラストラクチャを扱う場合は、Puppet Enterpriseの追加機能も活用できます。例えば、以下のような機能が挙げられます。 ●リアルタイムレポート ● ロールベースのアクセス制御 ●ノード管理 Puppet Enterprise を使えば、複数のチームと数千ものリソースを管理できます。Puppet はインフラストラクチャ内の関係性を自動的に学習し、それらの関係性に基づいて障害を巧みに処理します。設定エラーが発生した場合、関連するすべての設定をスキップします。Puppet の注目すべき点の一つは、5,000 を超えるモジュールを備え、多くの一般的な DevOps ツールと統合できることです。 8. アンシブル Ansibleは、PuppetやChefに似た構成管理ツールです。インフラストラクチャの構成やデプロイメントの自動化に使用できます。他の類似DevOpsツールと比較した際の最大のセールスポイントは、その使いやすさです。AnsibleはPuppetと同じインフラストラクチャコード(IAC)アプローチを採用していますが、非常にシンプルなYAML構文を採用しています。Puppetには独自の宣言型言語があるため、AnsibleではYAMLでタスクを定義できます。 エージェントレスアーキテクチャは、Ansibleのよく話題になる機能の一つです。バックグラウンドでデーモンやエージェントが動作しないため、Ansibleは安全かつ軽量な構成管理自動化ソリューションです。Puppetと同様に、Ansibleにも複数のモジュールが用意されています。 9. ナギオス Nagiosは、無料でオープンソースのDevOps監視ツールの中でも特に優れたツールの一つです。インフラストラクチャ間の関係性を監視し、問題の発見と解決を支援します。Nagiosはタスク、インシデントによる障害、インシデントによる失敗を記録します。また、Nagiosのチャートやレポートで傾向を詳細に監視することもできます。これにより、障害やエラーを予測し、セキュリティ上の脅威を検出できます。 インフラ監視用のDevOpsツールは数多く存在しますが、Nagiosは豊富なプラグインエコシステムで際立っています。IT業界で長年(2002年以来)活躍してきたNagiosには、大規模なコミュニティが存在します。プラグイン以外にも、アドオン、チュートリアル、翻訳、その他優れたリソースを無料で提供しています。 Nagios は 4 つのオープンソース監視ソリューションを提供しています。 ナギオスコア ナギオスXI Nagios ログサーバー ナギオスフュージョン Nagios Coreは、すべての必須機能を備えたコマンドラインツールです。WebベースのGUIと監視ウィザードを備えたNagios XIもご利用いただけます。 Nagios Log Serverを使用すると、ログデータを検索し、潜在的な脅威に関するアラートを設定できます。さらに、Nagios Fusionを使用すると、複数のネットワークを同時に監視できます。 まとめると、NagiosはDevOpsチーム向けのインフラストラクチャ監視ソリューションを提供します。ただし、Nagiosのセットアップと環境への互換性確保には、ある程度の時間がかかります。 10. レイガン Raygunは、業界をリードする監視・レポートプラットフォームです。APMは同社の主力製品です。RaygunのDevOpsツールは、パフォーマンスの問題を診断し、コード、関数、またはAPI呼び出し行まで遡って追跡するのに役立ちます。APMツールは、Raygunの障害管理プロセスにも最適です。例えば、最も優先度の高い問題を自動的に特定し、自動的に問題を作成します。 Raygun APMは、他のDevOpsツールと連携して、問題が発生した場合にバグに関する通知を継続的に受け取ることができるように支援します。Raygunはバグを自動的にソースコードにリンクするため、チーム全体を監視する機能を提供し、開発と運用を円滑に進めることができます。 最適なDevOpsツールを見つけるには、実際に実験とテストを行う必要があります。オープンソースツールのセットアップと設定には、多くの場合、より多くの時間がかかりますが、幸いなことに、ほとんどの商用DevOpsツールは無料トライアルを提供しており、無料でテストと評価を行うことができます。 翻訳者紹介:劉金輝は、Youwei Technologyのシニアソリューションアーキテクトです。以前はAlibaba Mobile Business Groupに勤務し、長年にわたりビジネス運用・保守(O&M)開発の経験を積んでいます。Alibaba Game Center JWSフレームワークをベースとした自動O&Mプラットフォームの開発・構築を担当し、DevOpsの実践においても豊富な経験を有しています。 |