開発統合プラットフォームとしてのGitLabと今後の展開

## GitレポジトリからCI/CD・コンテナ化を含めた開発統合プラットフォームとしてのGitLabと今後の展開

Takuya Noguchi
@tnir / Tw: @tn961ir
[GitLab Meetup Tokyo #1](https://gitlab-jp.connpass.com/event/52276/) 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](https://cloud.google.com/source-repositories/)

----

## GitLab CE/EEの競合

- GitHub Enterprise
- Bitbucket Server
- [GitBucket](https://github.com/gitbucket/gitbucket)
- [Gogs](https://gogs.io/)


----

## GitLab CE/EE

- Most starred Rails-based app on GitHub until 2016
    - discourse is now No.1

----

<img width="355" alt="201702-gitlab-star-on-github.png" src="https://qiita-image-store.s3.amazonaws.com/0/49113/74859e0d-38a8-f892-f7d3-ebaf8ab174dc.png">
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.
    - https://about.gitlab.com/2015/04/26/gitlab-acquires-githost/
- GitLab managed service
    - upgrade :white_check_mark: 
    - security :white_check_mark: 
    - starts at 80 USD/mo :dollar: 
- 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](http://monitor.gitlab.net/) で確認できる。

----

# Administration

----

## Admin tips

- [omnibus-gitlab](https://gitlab.com/gitlab-org/omnibus-gitlab)が一番手軽なインストール
    - RPM/debパッケージ
    - Dockerもサポート
        - でもまだ巨大コンテナイメージ
    - アップグレードのケアもある
- ソースコードからのインストールは止めたほうがいい

----

## PostgreSQL

- デフォルトのデータベース
- (MySQLで運用されている例も多いと聞く)
- pg 9.2が利用されてきた。pg 9.6へのアップグレードプランを用意
- 来月のGL 9.0で9.6がデフォルトに :tada: 

----

## Redis

- [Update Redis from 2.8.x to 3.2](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1280)
- クラスタ化への道が広がった？

----

## Container Registry

- GitLab Container Registry
    - `docker/distribution`-backed

----

## Monitoring

- かなり改善されたもののまだパフォーマンスの問題は残っている。
    - front: Grafana
    - back: InfluxDB/Prometheus

<img width="500" alt="gitlab-monitoring-ci.png" src="https://qiita-image-store.s3.amazonaws.com/0/49113/0b7f7520-8c6e-0082-7dca-30c8d100f87c.png">
via http://monitor.gitlab.net/dashboard/db/ci

----

## Docs

- ドキュメント大事
- [docs.gitlab.com](https://docs.gitlab.com/)が最近リニューアル
- 改善ポイントあり
- 英語さえできれば貢献できる

----

## 開発

- OSSなので、GitLab.com上でコントリビュート可
- 累計1,500人以上のコミット
- 日本人らしきコントリビュータは少ない
- [GitLab Development Kit](https://gitlab.com/gitlab-org/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 :+1: votesによりCEにやってきた。
    - :+1: 大事

----

## 個人的な野望

- Cloud-native
- Serverless

----

## 実際に250人チームで運用して分かったこと

----


## 前提

- 社員、常駐業務委託、社外パートナー多数
- サーバサイド:iOS/Androidアプリ=50%:50%
- 250 users
- 600 projects
- 100 groups

----

## 分かったこと

- Gitの習熟度が人それぞれ
- (サーバサイド)DockerやRegistryの理解も人それぞれ
- CI/CDについても人それぞれ
- 高品質・均質化のためにトレーニングが効果的
    - GitLab Docsが有効
    - でも日本語訳がない :sob: :sob: :sob:


----

## バグフィックス

- 昼、レポートを受けて起票
- 夜、家で修正・MRを出す
- (繰り返し)

----

## 今後に向けて

- 組織の方針とGitLab Inc.の方針が合致した結果、GitLabに乗ってうまくやってこれた
    - CI/CD
    - Docker/Kubernetes/OpenShift(/Web Terminal)
    - InfluxDB(/Prometheus)
- 組織ごとに主体的な開発戦略が必要

----

## 今日伝えたかったこと

- ネガティブなイメージもあったGitLabはかなり改善されて大規模な導入ケースもでてきた。
- OSSに対して貢献してよりよいツール・プラットフォームを使いましょう。
- 社内パッチはぜひMRの形にしてください。

----

## 宣伝

----

## 宣伝 1

アイリッジはエンジニア(特にSRE/CPE)募集中。

| <img width="802" alt="201703_iridge-rec-sre.png" src="https://qiita-image-store.s3.amazonaws.com/0/49113/8fad69dd-d32e-9311-2b64-b7734703c287.png"> | <img width="804" alt="201703_iridge-rec-cpe.png" src="https://qiita-image-store.s3.amazonaws.com/0/49113/22300b44-4b07-292a-2ae5-3f75b2786277.png"> |
|:----------------------------------------------------------:|:------------------------------------------------------------------:|

- SRE: https://www.wantedly.com/projects/89855
- CPE: https://www.wantedly.com/projects/89861

----

## 宣伝 2: 4/11(火) GitLab Meetup Tokyo #2開催決定

- 於: リクルート 41F アカデミーホール
- https://gitlab-jp.connpass.com/event/52276/
- 今から募集開始
    - トーク 4件
    - LT 5件
    - スポンサー 4社
- 一般参加は~~明日から募集(予定)~~だったけど、会場の熱気に押されて今日から募集開始しました。

----