progrhyme's tech blog

主にIT関連の技術メモ

GitLab Meetup Tokyo #7 に行ってきた

4/10にこちらのイベントに行ってきました。

気づいたときには一般参加枠が埋まっていたので、ブログ枠で参加しました。
…ということもあって、こうして記事を書いております。

最近GitLabを使うことが多いのですが、今回はコアな方々の話を聞けたり、今まで知らなかった機能やGitLabの思想にも触れることができて有意義でした。

はじめに

会場はサイボウズさんでした。

f:id:progrhyme:20180411000200j:plain

全体で90名ほどの参加予定でしたが、席はほぼ満席で、活気のある雰囲気でスタートしました。

始めに、GitLab Tokyo / GitLab JPの案内がありました。

Slackはどうやって入るのだろうと思ったのですが、HerokuでSlackinが動いているようですね。 検索すると見つかると思います。

発表スライド

Connpassに上がっているものもありますが、捕捉したものはここにも上げておきます。
(※随時更新します。)

Keynote「GitLabによるComplete DevOps」@shkitayama

LT①「How does GitLab manage git repositories?」@sotayamashita

LT②「GitLabのイシュートラッカー活用術」@jumpyoshi

LT③「GitLab CI & Docker in Docker」@toricls

LT④「カップラボ」@t_nakayama0714

LT⑤「State of Community Contributions to GitLab & GitLab 11.0」@tnir

感想

詳細な聴講メモは記事末尾に載せておきますが、ここでは印象深かった点を中心に簡単に感想を述べます。

@shkitayama さんの発表「GitLabによるComplete DevOps」では、GitLabが目指すビジョンについて知ることができました。
確かに、DevとOpsで別々のツールを使っていたり、様々なツールを使い分けることは弊害や不効率を生みかねない部分はあるでしょう。
全てがGitLabのような単一のツールで完結できたら理想的かもしれません。

また、GitLabに様々な機能が有ることは知っていたのですが、思った以上に更にパワフルになっていることにも気づきました。
CI/CDだけでなく、脆弱性分析やデプロイ後の構成管理、監視なども守備範囲に入っているようです。

@jumpyoshi さんのLT「GitLabのイシュートラッカー活用術」では、見やすいかんばんの画面も紹介されていました。

また、GitLabの内部構造についても知る機会がありました。
@sotayamashita さんのLT「How does GitLab manage git repositories?」は、GitalyというGitをRPCサーバ化したOSSが紹介されていました。
このGitalyがGitLab内でGit操作を行っており、フロントであるRailsとはgRPCで通信しています。

@toriclsさんのLT「GitLab CI & Docker in Docker」では、GitLab CIのExecutorの1つであるDocker-in-Dockerについて解説がありました。

終わりに

まだまだ使いこなせていない機能が色々とあることがわかったので、トライしていきたいと思いました。

懇親会では、スポンサーのクリエーションラインさんのご厚意により、美味しい寿司とビールを楽しむことができました。
ありがとうございました!!

聴講メモ

Keynote「GitLabによるComplete DevOps」

  • 自己紹介
  • アンケート
    • GitLab初めての人 ... 2〜3割
    • 使ってる, CI/CDしてる ... 5割ぐらい
  • 概要
    • GitLab進化してる
  • アジェンダ:
    • GitLab Complete DevOps
    • GitLab Development Lifecycle
    • ...
  • 本を書く上で気をつけていること
    • ツール ... 何かの課題を解決するもの
  • GitLabのビジョン
    • エンタープライズの開発チームがツールチェーンを維持する時間を短縮し、ソフトウェア開発に時間を費やす環境を提供すること
    • これ以外の使い方だと使いづらかったりtoo muchだったりすることもあるだろう
  • Traditional DevOps
    • Developers
    • Operators
    • それぞれツールを開発する
    • 交わるのはごく一部 ... デプロイとか
    • けっこう相容れないものがある
    • コンウェイの法則
      • 組織が分かれていると壁ができてしまう
    • どんなツールを使うか
      • Slack, GitHub, Jenkins, Artifactly, K8s, Ansible, Zabbix
    • 流れ
      • Idea => Plan => SCM => Build => Deploy => Production <= Monitor
  • 最近よくある質問
    • 「DevOpsいっぱいツールあるけどどれ使えばいいの?」
  • Complete DevOps
    • 変更を容易にするためのツールチェーンの管理をなくし、開発者と運用者のコラボレーションを促進するカルチャーシフト
    • それ全部GitLabでできるよ
  • どういう利点があるのか?
    • 可視化 ... real time view across the entire lifecycle
    • 効率化 ... collaborate without waiting
    • 統制化 ... develop and operate w/ confidence
  • Complete DevOps
    • Plan
      • chat ... mattermost(オンプレ版slack clone)
      • issue management
    • Create
      • Version Control
      • Code Review ... Merge Request
    • Verify
      • 静的解析
      • 回帰テスト
      • 脆弱性分析 ★ ... 注力している
        • Docker image ... Clair(OSS)を利用
        • DAST ... OWASP ZAProxy
          • GitLab CIで設定できる
      • パフォーマンス
    • Package
      • artifact ... ソースコードのセット
      • docker image ... こっちを管理しないといけなくなってきた
      • GitLabならdocker imageとソースコードを容易に1対1対応させられる
    • Release
      • K8s, Openstack, VMware連携
      • CD
      • Canary deploy ... Enterprise版
    • Configure
      • リリース後の環境に対して変更作業やデプロイ環境のプロビジョニングを行う活動
      • 単発の変更ではなく、継続的な構成管理の自動化を指す
      • GKEクラスタのconfigureもできる
    • Monitor
      • 性能監視 by Prometheus
        • K8sのメトリクス取れる
  • 今後も機能開発していく
    • Protfolio Mgmt
    • IDE
    • Security Products
    • Binary Repository
    • Logging, ...
  • Cloud Nativeとは
  • Cloud Nativeアプリケーションの利点
    • 開発者の時間を解放する
    • コンテナオーケストレーションを介して、アプリケーションリソースを監視し、スケールすることでコストを節約する
    • リリースサイクルを自動化して高速化できる
    • 顧客体験を向上する
  • GKE統合について
    • CI/CDタブにGoogleログインボタン => GCPK8sを立てる
  • デモ
    • gitlab.comで
    • CI/CD > K8s
    • いくつかアプリケーションをK8sにインストール
      • Helm ... package manager
      • Prometheus ... 監視
      • GitLab Runner ... CI/CD
    • .gitlab-ci.ymlの build > tags でCIを実行するK8sクラスタを選べる
  • Summary
    • GitLab Vision
    • GitLab Components
    • GitLab's Cloud Native Apps
  • GitLabがGitHubをサポート
  • 宣伝

余談: 発表中、@shkitayama さんが「GitLab」を「ギットラブ」と発音していたところ、TLで少々物議を醸していました。

LT①「How does GitLab manage git repositories?」

  • 自己紹介
    • @sotayamashita
    • Locki 共同創業者
    • Node.js, Electron
  • 404ページ
    • たぬきに注意
  • agenda
    • Gitalyについて
    • Gitaly <> Rails サーバ w/ gRPC
    • ロードマップ
    • まとめ、今後
  • Gitalyについて
    • A Git RPC service for handling all the git calls made by GitLab
    • Railsサーバ
    • Gitalyサーバ ... gRPCサーバ
      • Goで書かれている
      • diskにアクセスする
        • NFSレイテンシを下げられる
  • なぜgRPC?
    • 最初はREST APIを考えていたが
    • Protocol Buffers ... 型がある。各種言語に対応
  • gem 'gitaly-proto'
  • Gitalyは愚直にgitコマンドを実行している
  • ロードマップ
    • Gitaly Version 1.0 (Q4 2017)
      • すべてのgit操作をGitalyで統一
    • Gitaly Version 1.1 (Q1 2018)
      • 過去のruggedのコードを削除
    • Gitaly Version 2 (Q2 2018)
      • キャッシュを利用してパフォーマンス向上
  • まとめと今後やりたいこと
    • GitalyをGitサーバとして使う

余談: GitLabのアイコンは狐じゃなくて狸。

LT②「GitLabのイシュートラッカー活用術」

  • 自己紹介
    • @jumpyoshim
    • 新卒2年目
    • スマホアプリのバックエンドをPythonで開発
    • iRidge
      • BackLogも使ってる ... 非エンジニア
  • タスク管理ツールを併用するのはなぜか?
    • 『GitLab実践ガイド』
      • 誰しもが全てのデジタルコンテンツを共有できるようにし、チームが刺激的に協力しあい、より良い成果をより早く達成できるようにすること
    • => GitLabをより使いやすくしよう!
  • Issue Board
    • かんばん
    • イシューの進捗度がわかりやすく
  • Issue Label
    • "suggestion" ラベルでアイディアを出しやすく
  • Slack Notification Service
  • External Issue Tracker
    • 外部のイシュー管理ツールと連携できる

LT③「GitLab CI & Docker in Docker」

  • @toricls
  • GitLab v4あたりから使っている
  • GitLabKit
  • Docker使える
    • shell executor
    • docker-in-docker ★
    • ...
  • runnerの中でdockerビルドする
    • ホストを汚さないで済む
  • .gitlab-ci.ymlの書き方
    • services:
      • docker:dind
    • :
  • デモ

余談: デモでスポットライト型のペンライトを使われていて、TL上で「あのデバイスはなんだ?」とデモ自体の内容よりも盛り上がってる雰囲気でした。

超かっこいいので、知らない人は製品紹介の動画とか見ると良いと思います。

LT④「カップラボ」

  • 無料のGitLab.com&その他で毎日オススメカブを見つけてる話
  • @t_nakayama0714
  • ここ数年思ってること
    • お金を増やしたい
  • マネーキングダム
    • GitLabのクローズドグループ
    • 良さげな株をピックアップしてリスト
  • 仕組み
    • Slack, AWS, GitLab
    • シーケンス:
      1. Hubotのcron
      2. AWSでジョブを実行
      3. 計算
      4. GitLab Pages更新
  • GitLab.comの良いところ
    • GitLab Pagesでページ公開できる
    • GitLab CIがついてる
    • ぐいぐいバージョンが上がって未来的
    • 無料

LT⑤「State of Community Contributions to GitLab & GitLab 11.0」

  • @tnir
    • GitLab Core team
    • Cloud Native Ambassador, CNCF
    • iRidge
    • https://github.com/gitlabhq/gitlabhq ... スターしてね
      • No.2 in Rails app
        • No.1 ... discourse/discourse
      • No.2 in Git SCM Web UI
        • No.1 ... gogits/gogs
    • contribution welcome!
  • GitLab 11.0
    • 6月リリース予定
  • Updates
    • GraphQL
      • Facebookが2015年9月発表
      • REST APIの後継となるか
      • PoCを経て2017年9月
      • Facebook GraphQLライセンス問題により見送り
    • K8s integration
      • まだまだ続く
      • RBAC認証
    • SAST(静的分析)
    • Cloud-native Helm chart
      • omnibus chartからCloud-native chartへ
    • API v3廃止
      • 4ヶ月遅れて廃止
    • その他の予定
      • 公式ページ見てね
  • Promo

スポンサーLT クリエーションラインさん

  • SPEED+ INNOVATION
    • 速く寿司をつくって提供する
  • DevOps
  • Chef, Docker, GitLab
  • GitLab
    • 国内唯一のリセールパートナー
  • MVPに3回選ばれた @hiroponz が4月からjoin
  • GitLab JPコミュニティの支援