開発インフラは分散化しつつある

開発インフラは分散化しつつあると感じている今日この頃です。

開発インフラといえばソース管理、バグ管理、CI、テスト管理といったものがあり、かつてこれらはいずれも集中型でした。

開発者が自分のローカルで編集したものをサーバー上にアップするというやり方です。このやり方は今後も変わらないと思いますが、近年分散化の傾向にあると思います。

一番顕著なのがソース管理。GitやMercurialのような分散バージョン管理ツールがメジャーになってきました。

Team Foundation Serverシェルビング (shelving)やEclipseのローカルヒストリーもそれに近いものがあるでしょう。

いろいろと試行錯誤して開発しているときは中央のリポジトリに影響を与えたくない。しかし変更は管理したい場合というのはあるものです。

その場合ローカルリポジトリへコミットすることによって管理できます。ローカルリポジトリと中央のリポジトリを意識しないといけないという敷居の高さはあれどこれはOSS開発の世界ではとりわけ有用でしょう。

考えてみれば分散バージョン管理ツールがいまほどメジャーになる前にもMavenではライブラリをローカルリポジトリに格納していますし、ローカルにリポジトリを置くというのは古くからあるやり方なのでしょう。

CIでもNetBeans 6.8 6.7(コメント指摘にもとづき修正しました)からHudsonと連携する機能が追加されており、分散CIもどき?を実現することができます。

分散化にはメリットもありますが、複雑になってしまうのは否めません。

しかしそれだけ高度な構成管理が求められる時代になったのかもしれません。

いろいろと調査していきたいものです。