$30 off During Our Annual Pro Sale. View Details »

BacklogのGitを支えるGitチームの紹介2022

 BacklogのGitを支えるGitチームの紹介2022

Twitter : https://twitter.com/vvvatanabe
GitHub : https://github.com/vvatanabe
アサーティブ・コミュニケーション (日経文庫) : https://amzn.asia/d/dmLtvwv
ヌーラバーブログリレー2022夏 : https://nulab.com/ja/blog/nulab/nulaber-blog-relay-2022-summer/
ヌーラバーブログリレー2022冬 : https://adventar.org/calendars/7996

株式会社ヌーラボ
PRO

December 05, 2022
Tweet

More Decks by 株式会社ヌーラボ

Other Decks in Technology

Transcript

  1. BacklogのGitを支えるGitチームの紹介2022
    株式会社ヌーラボ サービス開発部 Backlog課
    Yuichi Watanabe
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  2. Copyright Nulab Inc. All Rights Reserved.
    立ち位置とSoW
    具体的な業務の例
    目次
    大切にしている流儀
    一週間の仕事の流れ
    開発・運用しているシステム
    1
    2
    3
    4
    5

    View Slide

  3. 自己紹介
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  4. Copyright Nulab Inc. All Rights Reserved.
    渡邉 祐一
    Yuichi Watanabe
    自己紹介 | 自己紹介
    株式会社ヌーラボ サービス開発部Backlog課
    ・BacklogのGitホスティング領域を担当
    ・四人家族の父、妻と息子(5才)と娘(3才)
    ・社会人学生
    ・Twitter: https://twitter.com/vvvatanabe
    ・GitHub: https://github.com/vvatanabe

    View Slide

  5. 立ち位置とSoW
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  6. Copyright Nulab Inc. All Rights Reserved.
    立ち位置とSoW | 立ち位置とSoW

    View Slide

  7. Copyright Nulab Inc. All Rights Reserved.
    ・BacklogのGitホスティング機能を全面的に担当。
    ・フロントエンド
    ・バックエンド
    ・インフラ構築
    ・運用
    ・QA
    ・フルサイクルに近いエンジニアリングチーム。
    ・メンバーの数は2022年12月時点で3名。
    立ち位置とSoW | 立ち位置とSoW

    View Slide

  8. 具体的な業務の例
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  9. Copyright Nulab Inc. All Rights Reserved.
    Gitホスティング機能に関する...
    ・不具合修正、既存機能の改善、新機能の開発
    ・各種サーバー、リポジトリを保持するストレージのメンテ
    ・オンコール
    ・ランニングコストの削減
    ・デプロイメントパイプラインの整備
    ・サポートチームからエスカレーションされた問題の二次調査
    具体的な業務の例 | 具体的な業務の例

    View Slide

  10. 大切にしている流儀
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  11. Copyright Nulab Inc. All Rights Reserved.
    ・タスクの属人化を減らそう。
    ・近い未来を当てにいこう。
    ・心理的安全性を高めよう。
    ・業務で得た技術や知見を積極的に社外発信しよう。
    大切にしている流儀 | 大切にしている流儀

    View Slide

  12. Copyright Nulab Inc. All Rights Reserved.
    タスクの属人化を減らそう
    ・メンバー毎に個性(得意・不得意な領域)がある
    ・それによってチーム内でタスクが属人化させたくない
    ・システム全体を俯瞰して問題を解決したい
    ・いつでも安心して休暇を取れる環境が大事
    ・少しずつ得意な領域以外の部分に触れていく
    ・ペアプログラミング、ペアオペレーション
    ・ドキュメントの定期的なアップデート
    大切にしている流儀 | タスクの属人化を減らそう

    View Slide

  13. Copyright Nulab Inc. All Rights Reserved.
    近い未来を当てにいこう
    ・実際、遠い未来の計画を当てに行くのは困難
    ・近い未来、1スプリントの計画くらいは当てに行けるはず
    ・1スプリントで完了できるくらいまでタスクを分割
    ・ベロシティを過大評価しない
    ・自分達のチームのリズムを掴む
    ・近い未来を当て続ける => 遠い未来のズレを抑える
    大切にしている流儀 | 近い未来を当てにいこう

    View Slide

  14. Copyright Nulab Inc. All Rights Reserved.
    心理的安全性を高めよう
    ・チームとして最大のパフォーマンスを発揮するには
    ・気軽に初歩的な質問ができる
    ・反対意見を言える
    ・失敗が許される
    ・アサーティブ・コミュニケーション
    ・https://amzn.asia/d/dmLtvwv
    ・ お互いの立場や主張を大切にした、自己主張・自己表現
    大切にしている流儀 | 心理的安全性を高めよう

    View Slide

  15. Copyright Nulab Inc. All Rights Reserved.
    業務で得た技術や知見を積極的に社外発信しよう
    ・技術や知見を体系的にまとめることで自信の理解を深める
    ・まとまったドキュメントはオンボーディングでも活用できる
    ・まとまったドキュメントは未来の自分達の救いになる
    ・ニッチな技術でも誰かの救いや参考になることはある
    ・チームとして社内の発信イベントへ積極的に参加する
    ・ヌーラバーブログリレー2022 冬
    ・ヌーラバーブログリレー2022 夏
    大切にしている流儀 | 業務で得た技術や知見を積極的に社外発信しよう

    View Slide

  16. Copyright Nulab Inc. All Rights Reserved.
    業務で得た技術や知見を積極的に社外発信しよう
    ・ECS Fargate+Mackerelにおける監視費用を削減するまでの話
    ・インフラのテストに VPC Reachability Analyzer は外せないという話
    ・複数のアプリケーションを横断する処理のボトルネックを追跡し改善した話
    ・大容量のストレージを持つサーバーの奇妙なメモリ使用量の増加原因を究明した話
    ・OpenSSHのプロトコル拡張「UpdateHostKeys」の仕組みと実装
    ・チームでサービスの運用をうまく支えていくための取り組みについて ~SREを添えて~
    ・僕たちとECSとデプロイとその改善
    ・BacklogのGitホスティングにおける冗長化と負荷分散の仕組み
    ・OpenSSHがSHA-1を使用したRSA署名を廃止、BacklogのGitで発生した問題と解決にいたるまでの道のり
    ・スモールチームにおけるAutifyを用いた効率的なE2Eテストの自動化
    大切にしている流儀 | 業務で得た技術や知見を積極的に社外発信しよう

    View Slide

  17. Copyright Nulab Inc. All Rights Reserved.
    大切にしている流儀 | まとめ
    まとめ
    ・各メンバーが強いオーナーシップを持ち、開発したものが運用まで
    行う働き方で、システムやプロセス全体を俯瞰して問題の最適な解
    を探す。
    ・お互いの立場や主張を大切にした心理的安全な環境下で、ペアプ
    ロ・ペアオペを適切に活用して、タスクの属人性を抑え、デリバリス
    ピードを安定させる。

    View Slide

  18. 一週間の仕事の流れ
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  19. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Daily Scrum
    Mon Tue Wed Tha Fri
    Scrum Ceremony
    ・Sprint Review
    ・Retrospective
    ・Sprint Planning
    Win Session
    Promotion MTG
    社外発信MTG
    Developer MTG
    Daily
    Weekly
    Weekly
    Weekly
    Fortnightly
    Fortnightly
    Product Sharing MTG
    Monthly

    View Slide

  20. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Daily Scrum(30min)
    ・毎朝、Gitチーム全員
    ・スプリントプランニングで立てた計画をもとに
    ・今日やることを確認
    ・進捗状況を確認
    ・業務のちょっとした相談
    ・前日のメトリクスの確認

    View Slide

  21. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Scrum Ceremony(2.5hour)
    ・毎週、Gitチーム全員
    ・+スクラムマスター(他チームの@jue_no58に依頼)
    ・Gitチームはスクラムの知識が豊富なわけではない
    ・スクラムの知識が豊富な人にサポートしてもらう
    ・チームが本質的な議論に集中できるように
    ・進行、スクラム的に正しいかチェック、客観的な意見

    View Slide

  22. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Scrum Ceremony - Sprint Review
    ・+PdM(@Shiroaki0)
    ・目標としていた機能(ユーザーストーリー)のデモ
    ・デモの準備を怠らない
    ・準備を怠るとグダりやすい
    ・デモ担当者はリハーサル

    View Slide

  23. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Scrum Ceremony - Retrospective
    ・次回のスプリントが今回のスプリントよりうまくいくために
    できることを考える
    ・なにがうまくいったか
    ・どのような問題が発生したか
    ・その問題がどのように解決されたか(されなかったか)
    ・次回のスプリントでやること(Action Item)を決める

    View Slide

  24. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Scrum Ceremony - Sprint Planning
    ・チームが次のスプリントでどれだけ稼働できるのか把握
    ・次のスプリントでやるべき機能開発以外のタスクを確認
    ・システムの運用作業、他チームからの調査依頼...
    ・ユーザーストーリ一の一覧から優先順位に沿って選択
    ・スプリントバックログに細分化
    ・現実性のある計画に調整
    ・直近2スプリントのベロシティをもとに

    View Slide

  25. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    技術発信MTG(30min)
    ・隔週、Gitチーム全員
    ・普段の業務をもとにどんな技術的アウトプットができるか
    話し合う
    ・アウトプットのネタを社外発信管理シートに記録する
    Win Session(30min)
    ・Backlogに関わる全社員(任意)
    ・各チームで1週間の成果を共有し承認・賞賛する

    View Slide

  26. Copyright Nulab Inc. All Rights Reserved.
    一週間の仕事の流れ | 一週間の仕事の流れ
    Developer MTG(<= 1hour)
    ・毎週、Backlogのエンジニア全員(任意)
    ・エンジニアへの情報共有、開発状況の確認
    Product Sharing MTG(<= 1hour)
    ・毎月、Backlogの各チームの代表とPdM
    ・各チームの進捗状況をPdMと共有する
    Promotion MTG(<= 1 hour)
    ・隔週、Backlogの開発チームの代表とマーケティングチーム
    ・プロモーションに関連する情報共有

    View Slide

  27. 開発・運用しているシステム
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  28. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | Gitホスティング機能のシステムの概観
    AWS Cloud
    EC2
    EC2
    ECS Fargate
    web api
    git-ssh
    git-proxy
    git-http
    SQS
    S3
    gRPC
    Read & Write Read Only
    EKS
    git-lfs
    S3
    OpenSearch Service
    Kinesis
    Firehose
    git-rpc
    (primary)
    git-rpc
    (replica)
    some
    workers
    Backlog
    Autify
    Mackerel
    Jenkins
    CodeDeploy

    View Slide

  29. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | よく使用する技術
    AWS Cloud
    EC2
    EC2
    ECS Fargate
    web api
    git-ssh
    git-proxy
    git-http
    SQS
    S3
    gRPC
    Read & Write Read Only
    EKS
    git-lfs
    S3
    OpenSearch Service
    Kinesis
    Firehose
    git-rpc
    (primary)
    git-rpc
    (replica)
    some
    workers
    Backlog
    Autify
    Mackerel
    Jenkins
    CodeDeploy
    Backend Frontend Infrastructure
    Scala
    Play Framework
    Go / CGO
    Perl
    Git
    gRPC
    Haxe
    Knockout.js
    AWS
    Jenkins
    Terraform
    Ansible
    Mackerel
    PagerDuty
    Tool
    Backlog
    Cacoo
    Typetalk
    Google Meet
    Autify
    Grafana
    Redash

    View Slide

  30. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | ステートレスなフロントエンド
    EC2
    EC2
    ECS Fargate
    web api
    git-ssh
    git-proxy
    git-http
    Read & Write Read Only
    EKS
    git-lfs
    git-rpc
    (primary)
    git-rpc
    (replica)
    some
    workers
    ステートレスなフロントエンド
    ・リクエストの種類によって分割されたアプリ
    ・ブラウザからのリクエスト(web)
    ・APIからのリクエスト(api)
    ・Gitからリクエスト(git-http, git-ssh)
    ・Git LFSからのリクエスト(git-lfs)
    ・アプリごとに適切な認証・認可を行う
    ・ストレージを持たない、ステートレス
    ・リポジトリの読み書きはgRPCを介して後段の
    アプリで実施

    View Slide

  31. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | ステートフルなバックエンド
    EC2
    EC2
    ECS Fargate
    web api
    git-ssh
    git-proxy
    git-http
    Read & Write Read Only
    EKS
    git-lfs
    git-rpc
    (primary)
    git-rpc
    (replica)
    some
    workers
    ステートフルなバックエンド
    ・システムの後段に配備されるアプリ
    ・ストレージにリポジトリを保持する(ステートフル)
    ・gRPCを介してフロントエンドからリクエストを受け取
    りリポジトリの読み書きを行う
    ・Active/ActiveなPrimary/Replica構成
    ・ReplicaはPrimaryを正とした複製
    ・Write系のRPCはPrimaryで処理する
    ・Read系のRPCはPrimaryとReplicaで処理する

    View Slide

  32. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | フロントエンドとバックエンドを繋ぐプロキシ
    EC2
    EC2
    ECS Fargate
    web api
    git-ssh
    git-proxy
    git-http
    Read & Write Read Only
    EKS
    git-lfs
    git-rpc
    (primary)
    git-rpc
    (replica)
    some
    workers
    フロントエンドとバックエンドを繋ぐプロキシ
    ・中央に配備されているアプリ(git-proxy)
    ・フロントエンドから全てのgRPCを受け取りバックエン
    ドへ中継する
    ・レプリケーションのフローの起点となる
    (詳細は以下のブログで解説しています)

    View Slide

  33. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | Elasticsearchを用いたログ基盤
    Elasticsearchを用いたログ基盤
    ・Elasticsearch+Kibana(Amazon OpenSearch Service)を利用
    ・ECS Fargateのコンテナで稼働するアプリ
    ・fluentbit(sidecar) -> Kinesis Firehose -> Elasticsearch
    ・EC2 で稼働するアプリ
    ・fluentd -> Elasticsearch
    チームでサービスの運用をうまく支えていくための取り組みについて ~SREを添えて~ から引用

    View Slide

  34. Copyright Nulab Inc. All Rights Reserved.
    開発・運用しているシステム | ECSのデプロイメント
    AWS Cloud
    ECS Fargate
    git-ssh
    git-proxy
    git-http some
    workers
    Backlog
    Jenkins
    CodeDeploy
    僕たちとECSとデプロイとその改善 から引用
    ECSのデプロイメント
    ・BacklogのコードはBacklogで管理している
    ・各アプリのデプロイの情報を記したjsonを一つのリポ
    ジトリに集約している
    ・デプロイの流れ
    ・任意のアプリのデプロイ設定のjsonを修正
    ・プルリクエストでレビュー後にマージ
    ・GitのwebhookでJenkinsへ通知
    ・JenkinsはjsonをもとにCodeDeployを実行
    ・CodeDeployがBlue/Greenデプロイ

    View Slide

  35. 最後に
    Copyright Nulab Inc. All Rights Reserved.

    View Slide

  36. Copyright Nulab Inc. All Rights Reserved.
    最後に | 最後に
    ・Gitチームの業務内容、流儀、仕事のプロセス、開発運用して
    いるシステム、使用している技術の一部を紹介しました。
    ・Backlogに携わるチームについて少しでも知っていただけ
    れば幸いです。
    ・他にもBacklogのエンジニアの話を聞いてみたいと思った方
    は、是非「ヌーラバーの話を聞いてみたい」から登録お願い
    します。
    ・ご清聴ありがとうございました!

    View Slide