Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3複製サーバーを保護する複製を自動化するライトスループロキシで負荷分散を実現するSubversionベースの複製リポジトリアーキテクチャ複製サーバーを保護する前述のとおり、複製サーバーは壊れる可能性があるので大切に扱う必要があります。古いユーザーがこのリポジトリに変更をコミットすることも避けなければなりません。そのためには、ユーザーのアクセス権を厳しく管理することが必要です。具体的には、このリポジトリへの排他的アクセス権を持つ特別なユーザーを作成し、そのユーザーにsyncuserなどの名前を付けます(下記の例でもこの名前を使っています)。この方法を使う場合は、pre-revprop-changeスクリプトにもう少し手を加える必要があります。次に示すスクリプトでは、syncuserというユーザーに対してのみリビジョンプロパティの更新処理を許可しています。1start-commitフックについても同様のスクリプトを記述し、このリポジトリに対してのみ変更をコミットするよう設定する必要があります。最後に、この方法を使って複製プロセスを初期化するときは、次のようにしてsyncuserのユーザー名とパスワードを指定する必要があります。-sync-password=secret複製を自動化する同期処理のセットアップができていれば、このプロセス全体を自動化するのは簡単です。post-commitフックとpost-revprop-changeフックを追加して、変更がコミットされるたびに同期プロセスをバックグラウンドで開始するようにすればよいのです。post-commitスクリプトは次のようになります。2>&1post-revprop-changeフックは次のようになります。/dev/nullこれで、ターゲットリポジトリとメインリポジトリが常に同期するようになります。サーバー間のネットワーク接続に障害が起きた場合でも、次に接続が回復したときにターゲットリポジトリが更新されるので問題はありません。ライトスループロキシで負荷分散を実現するここまでは、Subversionリポジトリをリモートのミラーサーバーにバックアップする方法を説明してきました。1.5とApacheの組み合わせを使えば、もう一歩先に進むことができます。1.5ではライトスループロキシという概念が導入されており、これを利用することで、地理的に分散したチームに適した分散リポジトリアーキテクチャをセットアップできます。ライトスループロキシの概念は、Subversionリポジトリに対する操作のほとんどは読み取り専用であるという観察結果に基づいています。ライトスループロキシアーキテクチャは、中央にある1つのマスターリポジトリと、いくつかの読み取り専用の複製リポジトリから成ります(図1)。それぞれの複製リポジトリはローカル開発チームの近くに設置します。個々の複製リポジトリは、svnsyncに基づく自動プロセスによって中央リポジトリとの同期が保たれます。開発者が読み取り専用の操作(更新など)を実行する場合、その要求はローカルの読み取り専用の複製リポジトリで直接処理されます。読み書き両方を行う操作(コミットなど)は中央のリポジトリに透過的に送信されます。そこで更新が行われると、すべての分散ミラーも更新されます。ライトスループロキシはApacheによって排他的に動作し、これを利用するためには若干のセットアップが必要です。この節の残りの部分ではこれについて説明します。読み取り専用の複製サーバーをセットアップする必要があります。ライトスループロキシの基盤になる複製メカニズムも、やはりsvnsyncを利用しています。そこで、svnsyncを使用できるように複製サーバーの準備をする必要があります(具体的な方法は前述)。次に、複製サーバーがApache上で動作するように設定します。ここで重要なのはLocation要素で、SVNMasterURIという新しいエントリが含まれています。このエントリは、すべての更新要求をhttp://svnrepos上のマスターサーバーに送るようSubversionに指示するものです。複製リポジトリは原則的に読み取り専用です。マスターサーバーと複製リポジトリを同期させるときには、マスターサーバーが複製リポジトリを更新しなければなりません。これを許可するには、マスターサーバーだけが更新できる特殊なアドレスを個々の複製サーバー上に用意します。192.168.1.101</Location>最後に、post-commitフックとpost-revprop-changeフックをセットアップして、更新後に複製リポジトリを同期させるようにします。コミット処理の速度を低下させないために、svnsyncプロセスをバックグラウンドで実行することに注目してください(このやり方はSubversionのドキュメントから採用したものです)。2>&1ここまでできれば、後は実行するだけです。Subversionベースの複製リポジトリアーキテクチャSubversionの複製機能は強力なツールです。リポジトリを確実かつ効率的にバックアップするのに役立つだけでなく、強力で設定の簡単な複製リポジトリアーキテクチャの基盤としても利用できます。エンタープライズ環境でSubversionリポジトリアーキテクチャを構築している場合は、ぜひ複製機能の利用を検討してみてください。1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。Smart)政府機関や企業の国内外の開発チームから成る大規模なJ2EEプロジェクトに数多く携わる。J2EEのアーキテクチャと開発、およびITプロジェクト管理を専門とする。オープンソースのJavaテクノロジの経験も豊富。自らのテクニカルブログを公開中(www.jroller.com/page/wakaleo)。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。