GitレポジトリからCI/CD・コンテナ化を含めた開発統合プラットフォームとしてのGitLabと今後の展開
Takuya Noguchi
@tnir / Tw: @tn961ir
GitLab Meetup Tokyo #1 2017-03-02
@tnir: gitlab.com/tnir
- 20y+ Software Engineer (Digital Transformation)
- 2006-: Git user
- 2008-: GitHub/Bitbucket user
- 2013-: GitLab CE user
- 2014-: GitLab CE admin
- 2015-: GitLab.com user/GitLab contributor
なぜ今GitLab Meetup?
なぜ今GitLab Meetupを開くのか
- 日本語の情報がなかったから
- あっても古い
なぜ今GitLab Meetupを開くのか
- 日本語の情報がなかったから
- GitLab.comが話題になったから
なぜ今GitLab Meetupを開くのか
- 日本語の情報がなかったから
GitLab.comが話題になったから- (準備していたらGitLab.com事件が起きた)
- 2016年3月のDocker MeetupでGitLabを使ったワークフローが思った以上に反応あったから
GitLab.JP
- 2016年11月に仙台で発足
- 2015年12月/2016年12月にもGitLab/GitLab.com 勉強会が開催されている
- 東京でもJPイベントをやろう!→今回
Contents
- 製品の位置付け
- エディション
- 歴史
- 最近のトピック
- 管理
- ドキュメント
- 開発
- 管理者やってみた
- 今後のコミュニティ
GitLab
よく聞くGitLabのイメージ
- インストールが大変
よく聞くGitLabのイメージ
- インストールが大変
- ウェブアプリが遅い
よく聞くGitLabのイメージ
- インストールが大変
- ウェブアプリが遅い
- 2017年1月にGitLab.comでデータロストが発生した
GitLabの歴史
- Git: 2005
- GitHub: 2008
- Bitbucket (Git support): 2010
- GitLab: 2011
- GitLab.com: 2012
GitLab.comの競合
- GitHub + it's ecosystem (CI, linter etc.)
- Bitbucket + it's ecosystem
- AWS CodeCommit (+α)
- MS Visual Studio Team Services (VSTS)
- GCP Source Repositories
GitLab CE/EEの競合
GitLab CE/EE
- Most starred Rails-based app on GitHub until 2016
- discourse is now No.1
via https://goo.gl/58haC1
4種のGitLab
- GitLab Community Edition (CE)
- GitLab Enterprise Edition (EE)
- GitLab.com
- GitHost.io
GitHost
- GitHost is acquired by GitLab Inc. in 2015.
- GitLab managed service
- upgrade
- security
- starts at 80 USD/mo
- PoC中...
GitLab CE/EEマイルストーン 1
- 1.0: 2011-10
- 2.0: 2011-12
- 3.0: 2012-10
- 4.0: 2012-12
- 5.0: 2013-03
- 6.0: 2013-08
GitLab CE/EEマイルストーン 2
- 6.0: 2013-08
- 7.0: 2014-06
- (raised $0.12M)
- (raised $1.5M)
- 8.0: 2015-09
- (raised $4M)
- (raised $20M)
- 9.0: 2017-03 (plan)
GitLab CE Q1 '16
2016年、12個のメジャーリリース(8.4-8.15)
- ビルドアーティファクトブラウザ, ファイルファインダ
- TODO
- シークレットイシュー, ラベル購読
GitLab CE Q2 '16
- LICENSEテンプレート, 期日(Due Date), cherry-picking
- CIのPipeline対応, GitLab Container Registry, .gitignoreテンプレート
- Environments, 優先的ラベル, ナビゲーションデザイン, U2F
GitLab CE Q3 '16
- ワイルドカードbranch保護, マニュアルCI実行
- Issue Board(kanban), Merge Conflict修正UI, MR Dicsussion解決済みフラグ, Pipelineグラフ, Slashコマンド, Koding統合
- Cycle Analytics, Merge Requestバージョン管理
GitLab CE Q4 '16
- Merge Conflict修正エディタ
- 工数管理, ChatOps w/Mattermost, Review Apps
- Auto Deploy (oc), Web Terminal (Kubernetes), LaTeX support in Markdown
パフォーマンス
- 2014年後半/2015年くらいからパフォーマンス劣化が著しくなってきた。
- 2016年1月にInfluxDBを利用したPerformance Monitoringが導入された。
- 2016年はかなりパフォーマンスが改善した。
- 2016年後半: Prometheus導入。
- .comのメトリクスは monitor.gitlab.net で確認できる。
Administration
Admin tips
-
omnibus-gitlabが一番手軽なインストール
- RPM/debパッケージ
- Dockerもサポート
- でもまだ巨大コンテナイメージ
- アップグレードのケアもある
- ソースコードからのインストールは止めたほうがいい
PostgreSQL
- デフォルトのデータベース
- (MySQLで運用されている例も多いと聞く)
- pg 9.2が利用されてきた。pg 9.6へのアップグレードプランを用意
- 来月のGL 9.0で9.6がデフォルトに
Redis
- Update Redis from 2.8.x to 3.2
- クラスタ化への道が広がった?
Container Registry
- GitLab Container Registry
-
docker/distribution
-backed
-
Monitoring
- かなり改善されたもののまだパフォーマンスの問題は残っている。
- front: Grafana
- back: InfluxDB/Prometheus
Docs
- ドキュメント大事
- docs.gitlab.comが最近リニューアル
- 改善ポイントあり
- 英語さえできれば貢献できる
開発
- OSSなので、GitLab.com上でコントリビュート可
- 累計1,500人以上のコミット
- 日本人らしきコントリビュータは少ない
- GitLab Development Kitで簡単に環境構築できる
開発 (2) App/Backend
- 普通のRailsアプリ
- 一部Go
- Ruby/Goエンジニアなら貢献できる
開発 (3) Front-end
- 歴史の長い一般的なRailsアプリケーションの通り、JSはjQueryも数多く残るが、ES2015ify、Vue.jsへの移行もどんどん進んでいる
- テスト: Jasmine+Karma
- あとは普通にSCSS, HAML
- 今Vue.js乗せ換えたい人に特にオススメ
開発 (4) UI/UX/Design
- 資金調達後かなりデザイナー/UI/UXエンジニアが増えて改善が進んだ
- GL社員がちょっと多すぎ感も否めない
開発 (5) Packaging/Middleware
- パッケージングはchef/omnibusパッケージを利用
- ChefエンジニアやDevOpsエンジニアなら貢献できる
コミットしない貢献方法
GitLab Pagesの例
- プライベート版GitHub Pagesが構築可能
- (GitLab.comでは以前から提供中)
- EEのみで導入されたが、100 votesによりCEにやってきた。
- 大事
個人的な野望
- Cloud-native
- Serverless
実際に250人チームで運用して分かったこと
前提
- 社員、常駐業務委託、社外パートナー多数
- サーバサイド:iOS/Androidアプリ=50%:50%
- 250 users
- 600 projects
- 100 groups
分かったこと
- Gitの習熟度が人それぞれ
- (サーバサイド)DockerやRegistryの理解も人それぞれ
- CI/CDについても人それぞれ
- 高品質・均質化のためにトレーニングが効果的
- GitLab Docsが有効
- でも日本語訳がない
バグフィックス
- 昼、レポートを受けて起票
- 夜、家で修正・MRを出す
- (繰り返し)
今後に向けて
- 組織の方針とGitLab Inc.の方針が合致した結果、GitLabに乗ってうまくやってこれた
- CI/CD
- Docker/Kubernetes/OpenShift(/Web Terminal)
- InfluxDB(/Prometheus)
- 組織ごとに主体的な開発戦略が必要
今日伝えたかったこと
- ネガティブなイメージもあったGitLabはかなり改善されて大規模な導入ケースもでてきた。
- OSSに対して貢献してよりよいツール・プラットフォームを使いましょう。
- 社内パッチはぜひMRの形にしてください。
宣伝
宣伝 1
アイリッジはエンジニア(特にSRE/CPE)募集中。
宣伝 2: 4/11(火) GitLab Meetup Tokyo #2開催決定
- 於: リクルート 41F アカデミーホール
- https://gitlab-jp.connpass.com/event/52276/
- 今から募集開始
- トーク 4件
- LT 5件
- スポンサー 4社
- 一般参加は~~明日から募集(予定)~~だったけど、会場の熱気に押されて今日から募集開始しました。