はじめに
近年では、開発をする上でGit、GitHubはほぼ必須といっても過言ではない (過言か…?) ようになってきました。
もちろん、会社でも使いたい。ということでGitHub Enterprise(以下GHE)を足元サーバ(VMWare ESXi)で一昨年から去年の1年間運用しており、2.0が出たため、AWSに移行して、さらに1年間運用、合計2年間運用してきました。
そろそろ2年になったので、どんな感じで運用してきたかを共有するためにブログでも書いてみようかな…と思ったのが今回です。
構成
足元サーバのとき
ユーザ数
約300人
ハード構成
CPU | Memory | HDD | Hypervisor | 価格 |
---|---|---|---|---|
Intel Core i7 4930K | DDR3 64GB | 2TB | VMWare ESXi 5.5 | 約20万 |
AWSのとき
ユーザ数
約1,000人
ハード構成
Masterとslave(後述)
Instance Type | EBS(root) | EBS(block) |
---|---|---|
r3.xlarge | 60GiB | 500GiB |
Backup用(後述)
Instance Type | EBS(root) |
---|---|
t2.small | 500GiB |
2.0ではHigh Availability Cluster Configuration が設定できます。Masterが死んでしまっても、大体2-10分程度で復帰することが可能です。しかし、設定はされていますが一度も使ったことはありません。
安定性
極めて安定です。
2年間運用していますが、一度もGHE自体が要因で落ちたことはありません。
落ちたことがないので、本当にそれしかいうことがありません…。
8/30〜9/30のモニタを見たところ、r3.xlargeでもスペック的にはかなり余している状態です。結構アクティビティ自体は有るのですが(具体的な数字は書けない)、すごいですね…。
運用
可用性、障害対応
障害が起きたことがないので、特に何も言うことはないです…。
ホント何のためにブログ書いてるんだか
一応、上記に記載したとおり、HAを設定しているぐらいです。
バージョンのアップデート
これがなかなかトリッキーです。
新しいバージョンが出るとメールが送られてきます。
まずリリースノートのNew Featureの部分を見てテンションを上げた後、必ず Known Issuesを読んで、影響があるかどうかを確かめています。まあ当たり前のことですね。ブログ作成時の最新はこちらです。
その後、アップデートすることになるのですが、私は下記のような順番で行っています。
- メンテナンスモードに移行させユーザを遮断
- バックアップ用インスタンスを上記のスペックで作成
- buckup-utilsを使ってすべてのバックアップを作成
- 新しくMasterとSlaveを作成
- backup-utilsを使って、バックアップからリストア
- メンテナンスモードを解除
- 古いインスタンスを停止
- 数日間特に問題がなければ古いインスタンスとEBSを削除
しかし、最近リポジトリ数が増えてきたので、バックアップにかなりの時間を要することになってきているため、基本的に休日にアップグレードを行っています。
ユーザ/Organization/oauth・外部アプリ連携の管理
勝手にやってもらってます。
ユーザはLDAP連携ができるのでそちらを使ったほうが良さそうです。
GHEと合わせて使っているツール群
Slack, Hubot
主に通知です
JIRA
チケット管理ツールとしてJIRAを使っているプロジェクトでは、Smart Commitsを使っているところがかなりあるようです。
Jenkins
CIは重要ですね
ZenHub Enterprise
最近の個人的なイチオシです。
GitHub.comだけではなく、GHEでも使用可能になりました。
最近困っていること
メール通知問題
PRが出されたり、issueが切られたりするとメールで通知が来ます。しかし、ユーザ数が多くなりすぎるとメールが飛びすぎていろいろな制限に引っかかってしまう可能性があります。
GHE自体にメール送信機能があれば…と思っているところです。
まとめ
GitHub.comで開発をやっていると、しばしばアクセスできなくなったりしてしまうため、やはりGHEは重要な存在だといえるでしょう。
また、普段使い慣れているGitHubのUIがほぼそのままで使え、メンテナンスの手間が殆どなく、くだらない質問にも素早く応えてくれるサポートチームがあるため、他のソリューションを使うよりも少々高くてもGHEを使うのが得策だというのが、現時点での見解です。