ビジネスとIT活用に役立つブログBlog


「GitLab」を導入して開発プロセスを見直してみた ~導入検討編~

これまで、アーティスでは多数のプロダクトやサービスを開発しており、そのコード管理にGitを使ってきました。
開発者がローカルのGitリポジトリで作業を終えてコミットした後、リモートのGitリポジトリにPushして共有するスタイルです。

長らくこの開発スタイルでしたが、いくつかの不満があり、それらを解決するために「GitLab」を導入してみました。
今回は「GitLab」導入に至るプロセスについてご紹介したいと思います。

既存の開発スタイルへの不満

  1. リモートサーバーに接続して直接ディレクトリの中を見てみないと、どんなリポジトリがあるのかわからない。
  2. リポジトリの中のコードを、cloneしないと確認できない。(–bareなため)
  3. PullRequest、MergeRequestができない。
  4. リポジトリとCI(継続的インテグレーション)機能を統合したい。
  5. GitHub使いたい!

最初の2つは、開発者自身が関わっていないプロダクトやコードに興味を持つ機会を減らしている可能性がありました。
他のプロダクトに興味を持つことで、技術的な共有ができるメリットはもちろん、同じようなプロダクトやモジュールを再開発してしまうことを防ぐことが重要だと考えました。
また、用途や利用状況がわからないリポジトリの墓場化することも可視化することである程度防げると考えました。

3つ目は、主にコードレビューのハードルを下げる狙いです。
コードレビューは、開発者にとっては負担が大きい作業です。コマンドラインでのGit操作なしに、ウェブベースで変更点の確認とコメントを書けるようになれば、レビューする開発者の負担を軽減させることができると考えました。

4つ目は、CIを行うにはGitとは別のJenkinsのようなCIツールが必要で、これを管理するにもコストがかかります。
リポジトリと統合されていると、Pushした時のテストやデプロイもいい感じに設定できて、管理コストも軽減されるのではないかと考えました。

最後の5つ目は、私の個人的な意見です。
プライベートなプロジェクトでGitHubを使っており、その便利さを知っているので仕事でも使いたい・・・と思いました。

「GitHub」導入への課題

アーティスが開発するプロダクトの多くはオープンソースではないので、GitHubを利用するとなるとプライベートリポジトリが必要になります。
プライベートリポジトリを利用するには料金がかかりますが、それほど高額ではないので大きな導入の障壁にはなりません。

では、どこが一番の障壁となったのかと言いますと・・・。

GitHubが落ちる状態(アクセスできない状態)が発生する可能性があることです。

GitHubに依存していると、GitHubが使えなくなった時に仕事に支障をきたします。
Twitterでも話題になりましたが、「GitHubが落ちたから今日は帰ろう」という状態になってしまいます。これは、GitHubがクラウド型のサービスである事に起因します。

よって、急な不具合対応が必要な場合に、GitHubが落ちていてデプロイできないリスクは回避したいと考えました。
実際には「GitHubが落ちているから今日は帰ろう」なんて事は通用しないのですから・・・。

「GitHub」のクローンである「GitLab」の導入を検討する

GitLabはGitHubのクローンで、GitHubのようなサービスをプライベートなサーバーで運用することができます。
これなら、社内サーバー内にサービスを立てることが出来るので完全にプライベートで運用できます。

しかし、私がGitLabの導入を検討しているとき、同僚から一つの疑問が投げかけられました。
「GitHubが運用するサーバーの安定性と、地方のIT企業が用意したサーバーとで比較した場合どちらが安定しているのか?」という疑問です。

この質問に対する答えは簡単で、GitHubに軍配が上がると思います。
ですが、 自分たちでメンテナンス、復旧させることができるので、復旧の目安を計算しやすいという所にGitLabを選択するメリットがあると考えました。 (冗長化も自分たちでできます。自分たちでするしかないとも言えますが・・・。)

GitLabのリポジトリ自体は、普通のディレクトリになっているので、データを取り出すだけならGitHubよりも迅速に対応できるかもしれません。

また、外部ネットワークの影響を受けない所も大きいと考えました。(可動部が少ないほうが安定する。)

このような理由から、総合的に考えて最終的に「GitLab」を導入することにしました。

まとめ

今回、アーティスではGitLabを導入しましたが、他の企業だとGitHubのほうが親和性が高いケースもあると思います。
扱うコードがオープンソースかどうか、ダウンタイムが発生した場合に、どのくらいクリティカルになるかが判断基準となりそうです。

最後にGitHubとGitLabを利用する上でのメリットを簡単にまとめておきます。

 GitHubを利用するメリット

  • 利用者数が多く、情報が多い。
  • クラウドサービスなのでどこからでもリポジトリにアクセスできる。
  • サーバーやサービスの運用を気にしなくてよい。

GitLabを利用するメリット

  • プライベートなサーバーで運用できる。
  • 自分たちで冗長化、メンテナンス、復旧作業ができる。(コマンドラインで作業できる。)
  • 普及までの時間の見通しをつけやすい。
The following two tabs change content below.
アーティス

アーティス

創造性を最大限に発揮するとともに、インターネットに代表されるITを活用し、みんなの生活が便利で、豊かで、楽しいものになるようなサービスやコンテンツを考え、創り出し提供しています。
この記事のカテゴリ:

SNSで最新の情報を
受け取ることができます!