Subversionのホスティングサービス「My Subversion」を新システムに切り替えた


My Redmine

前田です。

ファーエンドテクノロジーが提供しているクラウドサービスと言えばプロジェクト管理のための「My Redmine」を思い浮かべる人が多いかと思いますが、実は My Subversion というサービスも提供しています。

My Subversion ロゴ

1週間前の11月15日、My Subversionのサービス提供用のソフトウェアとインフラを新環境に切り替えました。主な変更点は、リポジトリ管理のインターフェイスを提供するソフトウェアをオープンソースソフトウェアの「Submin」から自社開発の「Repomat」に切り替えたこと、そしてインフラをニフクラからAWSに切り替えたことです。

My Subversionとは

My Subversionとは、バージョン管理システムであるSubversionのリポジトリをインターネット上で作成・共有できるクラウドサービスです。100ユーザーが利用可能でありながら月額2,500円(税込2,750円)からという利用しやすい料金で、ソースコードを複数拠点で効率的に共有できます。

今年10月からは料金を据え置いたままストレージ容量を拡大し、これまで以上にコストパフォーマンスに優れたサービスになりました。

Subversionの環境が必要な方、オンプレミスのSubversionのクラウド化をご検討中の方はぜひご利用をご検討ください。翌月末まで無料お試しもできます。

My Subversion 公式サイト

  スタンダード ミディアム ラージ エクストララージ
月額料金 2,500円
(税込 2,750円)
4,000円
(税込 4,400円)
6,400円
(税込 7,040円)
10,000円
(税込 11,000円)
ストレージ容量 2GB 6GB 12GB 30GB
SVNリポジトリ数 100まで
ユーザー数 100まで

※2024年4月ご利用分からスタンダードプランの料金とストレージ容量をミディアムプラント同じ4,500円(税込4,000円)に改定します。また、2024年3月31日をもってミディアムプランの新規お申し込み受付を終了します。

My Subversionのサービスを開始した理由

SubversionはGitのような分散型システムとは異なる集中型バージョン管理システムです。2000年代半ばから2010年ごろまでは企業やオープンソースプロジェクトで特に広く利用されていました。

そのSubversionのリポジトリをネット上で作成し複数拠点でソースコードを共有できるサービスとして、My Subversionは2010年5月に提供を開始しました。ファーエンドテクノロジーのサービスとしてはMy Redmineに続き2つ目となります。

My Subversionのサービスを構想していた当時、企業におけるクラウドサービスの利用は今ほど活発ではなく、システム開発を行う企業ではオンプレミスで構築したSubversionサーバを使うということがよく行われていました。そのSubversionサーバには社外からはアクセスできず、協力会社とソースコードをやり取りするときにはZIPで圧縮してメールでやりとりするという面倒な手順も珍しくありませんでした。私もソースコード一式を添付したメールをやり取りしながら開発を進めた経験がありますが、かなり面倒だった記憶があります。

My Subversionのサービスを開発した理由の一つは、自らのそのような経験からも気軽にSubversionリポジトリをインターネット上で手軽に共有できる仕組みが欲しいと思っていて、Subversionをサービスとして提供すれば喜ばれるのではと考えたためです。

2つ目の理由は、前年2009年に正式サービスを開始したMy Redmineの価値を高めるためです。当時Redmineをシステム開発で利用する際にはSubversionと組み合わせて使うことが多かったため、My Redmineとセットで使ってもらうためにSubversionが利用できるサービスを揃えておきたいと考えました。

My Subversion提供開始当時のWebサイト
My Subversion提供開始当時のWebサイト

これまでMy Subversionを支えていた技術

11月15日の移行前までのMy Subversionで使われていた技術要素を紹介します。

Nifty Cloud

サービスはNifty Cloud(現・ニフクラ)上に構築しました。ニフクラを採用した最も大きな理由は国内にサーバがあるため、データの移動距離が大きい海外のサーバと比べてレイテンシーが遥かに小さいことです。Subversionは1回の操作で多数のHTTP通信が発生します。このため高レイテンシー環境では通信遅延がHTTP通信の数だけ蓄積して操作完了までの所要時間に顕著に影響するため、国内のお客様にサービスを提供するためには国内サーバの利用が必須でした。なお、AWSの東京リージョンが利用できるようになったのはMy Subversion開始翌年の2011年3月ですので、AWSという選択肢はありませんでした。

AWS東京リージョン開始のアナウンス:
Now Open: AWS Region in Tokyo | Amazon Web Services

Nifty Cloudは安定していて障害が大変少なく、安心して使えるサービスでした。

Submin

お客様がリポジトリやユーザーの作成、アクセス権限の管理を行うための管理インターフェイスとして、オープンソースソフトウェアのSubminを採用しました。画面の文言は英語のみでしたので、サービス提供用には独自に日本語訳したものを使用していました。

Submin公式サイト (Wayback Machine):
Submin: git/subversion web administration

WebSVN

WebSVNはSubversionのリポジトリ内のソースコードや更新履歴を参照できるオープンソースのリポジトリブラウザです。Submin単体ではリポジトリブラウザの機能を持たないため、WebSVNを追加でインストールして提供することとしました。

WebSVN
WebSVN

新システムへの切り替えの動機

新システムへの切り替えた理由は、管理インターフェイスを提供するSubminの開発が数年前に終了したためです。開発終了の正式なアナウンスはありませんが、Subminの配布ページ https://supermind.nl/submin/ が無くなってしまったことから開発が終了したと判断しました。

開発が終了したソフトウェアを使い続けることは、セキュリティ脆弱性が見つかっても修正が行われないこと、プログラミング言語や実行環境のアップデートに追従しないためいずれ動作しなくなるなど、大きなリスクを抱えてサービスを提供することになります。

これを解決するための選択肢としては、Subminの使用を終了して別のソフトウェアに切り替えるか、My Subversionのサービスを終了するかの2つが考えられます。我々は当然前者を選択し、Subminに代わる新しい管理インターフェイスを自前で開発することにしました。

Subversionリポジトリ管理インターフェイス「RepoMat」

開発が終了したSubminを置き換えるために社内で開発したのが「RepoMat」です。SubminはPython 2.6で開発されていましたが、RepoMatはRuby on Railsで開発しました。Subminのコードは使用せずスクラッチからの開発です。

RepoMatの仕様で最も重視されているのがSubminとの互換性です。Subminを使っていたお客様が戸惑うことがないこと、旧システムから新システムへのデータ移行がなるべく簡単な手順で行えることに配慮しています。

お客様が戸惑うことなく使えるよう、画面レイアウトと画面遷移はSubminと近いものになっています。もちろんSubminと全く同じではなく様々な変更・改善が加えられているものの、Subminに慣れている方はどこに何があるのか、ボタンを押した結果何が起こるのか、容易に推測できると思います。機能もSubminと同一であり、SubminでできていたことはRepoMatでも同じように実現できます。

RepoMat
RepoMat

データ移行がスムーズに行えるよう、データ格納ディレクトリ構成と設定ファイルの内容をSubmin 1.2系と揃えました。データベースは使用せず、すべてのデータはSubmin 1.2と同様にauthz、htpasswd、userproperties.confの3つのファイルに格納されています。

Submin 1.2のデータディレクトリの構成:

.
|-- authz                   # Subversionアクセス制御設定
|-- htpasswd                # ユーザーIDとハッシュ化されたパスワード
|-- svn/                    # リポジトリ格納用ディレクトリ
|   |-- repo1/
|   |-- repo2/
|   `-- repo3/
`-- userproperties.conf     # ユーザー情報(Submin固有)

終わりに

オープンソースのSubversionリポジトリ管理ツールであるSubminの開発が終了したことを受けてSubmin互換ツールの開発を行いましたが、これにより管理画面をこれまでより見やすい・分かりやすいものに一新できました。

また、SubminからRepoMatへの切り替えを機にニフクラからAWSへの移行とシステム構成の見直しができ、より堅固かつメンテナンスしやすいシステムが構築できました。

今後も引き続きMy Subversionをお客様に安心してご利用いただける環境が整ったと考えています。

【スタッフ募集中】
弊社ではAWSを活用したソリューションの企画・設計・構築・運用や、Ruby on Rails・JavaScriptフレームワークなどを使用したアプリケーション開発を行うスタッフを募集しています。採用情報の詳細
弊社での勤務に関心をお持ちの方は、知り合いの弊社社員・関係者を通じてご連絡ください。

My Redmine

こちらの記事もオススメです!
AWS上でクラウドネイティブで再構築した「My Redmine Gen.2」リリース!
My Redmine Gen.2をリリース!クラウドへの対応を進めより良いサービスになりました。
RubyWorld Conference 2023 参加レポート
RubyWorld Conference 2023にPlatinumスポンサーとして協賛。ブースではRedmineのクラウドサービス「My Redmine」を紹介。
Google Search Console APIをRubyで利用する
Google Search Console APIにアクセスするRubyのプログラムを作って分析をしています。
ChatGPTを活用してRedmineのデモ用データのCSVを編集してみた
Redmineのデモデータ用のCSVファイルを作成するのにGoogle Colaboratoryを利用しました。
私が過去にRedmineに投稿したパッチを振り返ってみる
Redmineの他の開発者やユーザーからのフィードバックや反応を貰えるのがOSS活動の楽しさの一つであると感じています。
ファーエンドテクノロジーからのお知らせ(2024/05/09更新)
2024年5月11日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催)
ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。
入門Redmine 第6版 出版記念企画セミナー「Redmineのアクセス制御」【2024/5/30開催】
入門Redmine 第6版(2024年3月23日発売)の書籍から「Redmineのアクセス制御」について解説します。
My Redmine 初回ご契約で「入門Redmine 第6版」プレゼントのお知らせ
Redmineのクラウドサービス「My Redmine」を初めてご契約いただいたお客様にRedmine解説書「入門Redmine 第6版」を進呈いたします。
2024年度ブランドパートナーに島根県在住のモデル ユイさんを継続起用
ユイさん(モデルスタジオミューズ所属)をファーエンドテクノロジーの2024年度ブランドパートナーとして継続して起用します。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け