SCMツール(Ansible、Puppet、Chefなど)は何を提供しますか?


8

ソフトウェア構成管理(インターネットとSWEBOKについて)についてはかなり読みましたが、SCMツールの目的が明確ではありません。または、より良い言い方をすると、これらのツールは他のツールが提供しないものを何が提供するかです。

次のツールを備えた環境があるとします。

  • 継続的な統合のためのJenkins。
  • ビルドツールとしてのAnt。
  • バージョン管理システムとしてのGit。
  • Gitリポジトリ管理および問題追跡のためのGitLab。
  • ソナーやJUnitなどのソースコード分析およびテストツール。

それで、私の質問は、それらのSCMツールは何を提供するのでしょうか?それらはどのように役立ちますか?

回答:


10

言及したすべてのツール(Jenkins、ant、git)は、実際にアーティファクトを構築してテストするのに役立ちます。通常、Javaの世界では、これはwar、ear、または内部のアプリケーションでのzipです。複雑なアプリケーションでは、1つ以上のアーティファクトになる場合があります。他のプログラミングプラットフォームでは、DLL、複数の異なるプラットフォーム用のバイナリなどが異なる場合があります。

アプリケーションをデプロイしたいとしましょう。サーバーが1台の場合は、手動で、または独自のスクリプトを使用して実行できます。ここまでは順調ですね :)

しかし、多数のファーム(マシンのグループ)がある場合、ファームごとに異なる構成(データベース、地理的な場所)で展開する必要があります。ファームに新しいノードをいくつか追加するようにアプリケーションを水平方向に拡張できる場合はどうでしょうか。ささいな仕事。QAチームはテストを実行するために新しい環境を要求するだけかもしれません。パフォーマンスチームは新しい環境を要求するか、ファームにノードを追加してストレステストを実行できます。今、これらすべてのものを管理することは複雑なようです。ここで、ansible、chef、salt、puppetなどのツールが使用されます。

これらは実際に展開の自動化に役立ちます。展開のレシピを提供したり、不足している依存関係をインストールしたりできます(プロジェクトを実行するには、特定のバージョンのjre、tomcat、および静的コンテンツのnginxが必要になる場合があります)。これらすべてが農場レベルで。

私は答えが一般的すぎて、Java開発者にはわかりにくいかもしれません(私はその1つです)。しかし、システムや開発者のチームがいる場合は、これらのツールのメリットをすぐに指摘する必要があります。


ご回答有難うございます。開発者とQA&Performanceテスターのオールインワン(私の場合)で、開発と本番のマシンが2つだけの場合、これらのSCMツールの使用をお勧めしますか?私はあなたの要点を理解していますが、私がそのような状況に行ったことがないので、私がすべてを理解してその状況に身を置くことは困難です。
Julen、2015年

2
戦争だけを展開している場合は、おそらくこれらのツールを使用するべきではありません。もちろん、試してみることもできます(おそらくansibleかsaltがうまくいきます)。新しいことを学び、これらのツールで私の人生が楽になるかどうかを確かめるために、彼らに試してみるでしょう:)
Mark Bramnik

1
それが私がやろうとしていることだと思います、本当にありがとう。
Julen、2015年

将来のある時点で、現在の容量を超えて拡張するか、既存のハードウェアをより最新のキットに置き換える必要があります。SCMを使用して垂直方向に(より大きなマシン)スケーリングするか水平方向に(より多くのWebを使用してWebをdbから分離する)スケーリングすると、最終的な移行が簡素化され、移動中に何も壊さないことをテストしやすくなります。環境がシンプルなときに今すぐ実験を開始することを決定するのは賢明な選択です。これらのツールを使用することもできます(そのシンプルさとすべてのボックスへのエージェントのインストールへの依存の欠如から、私はAnsibleを好みます)。Devシステムをプロビジョニングすることもできます)。
ブライアン 'BJ'ホフパウアーJr.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.