Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Nulab Inc.
PRO

December 05, 2022
Tweet

More Decks by Nulab Inc.

Other Decks in Technology

Transcript

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

    Rights Reserved.
  2. Copyright Nulab Inc. All Rights Reserved. 立ち位置とSoW 具体的な業務の例 目次 大切にしている流儀

    一週間の仕事の流れ 開発・運用しているシステム 1 2 3 4 5
  3. 自己紹介 Copyright Nulab Inc. All Rights Reserved.

  4. Copyright Nulab Inc. All Rights Reserved. 渡邉 祐一 Yuichi Watanabe

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

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

  7. Copyright Nulab Inc. All Rights Reserved. ・BacklogのGitホスティング機能を全面的に担当。 ・フロントエンド ・バックエンド ・インフラ構築

    ・運用 ・QA ・フルサイクルに近いエンジニアリングチーム。 ・メンバーの数は2022年12月時点で3名。 立ち位置とSoW | 立ち位置とSoW
  8. 具体的な業務の例 Copyright Nulab Inc. All Rights Reserved.

  9. Copyright Nulab Inc. All Rights Reserved. Gitホスティング機能に関する... ・不具合修正、既存機能の改善、新機能の開発 ・各種サーバー、リポジトリを保持するストレージのメンテ ・オンコール

    ・ランニングコストの削減 ・デプロイメントパイプラインの整備 ・サポートチームからエスカレーションされた問題の二次調査 具体的な業務の例 | 具体的な業務の例
  10. 大切にしている流儀 Copyright Nulab Inc. All Rights Reserved.

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

    大切にしている流儀 | 大切にしている流儀
  12. Copyright Nulab Inc. All Rights Reserved. タスクの属人化を減らそう ・メンバー毎に個性(得意・不得意な領域)がある ・それによってチーム内でタスクが属人化させたくない ・システム全体を俯瞰して問題を解決したい

    ・いつでも安心して休暇を取れる環境が大事 ・少しずつ得意な領域以外の部分に触れていく ・ペアプログラミング、ペアオペレーション ・ドキュメントの定期的なアップデート 大切にしている流儀 | タスクの属人化を減らそう
  13. Copyright Nulab Inc. All Rights Reserved. 近い未来を当てにいこう ・実際、遠い未来の計画を当てに行くのは困難 ・近い未来、1スプリントの計画くらいは当てに行けるはず ・1スプリントで完了できるくらいまでタスクを分割

    ・ベロシティを過大評価しない ・自分達のチームのリズムを掴む ・近い未来を当て続ける => 遠い未来のズレを抑える 大切にしている流儀 | 近い未来を当てにいこう
  14. Copyright Nulab Inc. All Rights Reserved. 心理的安全性を高めよう ・チームとして最大のパフォーマンスを発揮するには ・気軽に初歩的な質問ができる ・反対意見を言える

    ・失敗が許される ・アサーティブ・コミュニケーション ・https://amzn.asia/d/dmLtvwv ・ お互いの立場や主張を大切にした、自己主張・自己表現 大切にしている流儀 | 心理的安全性を高めよう
  15. Copyright Nulab Inc. All Rights Reserved. 業務で得た技術や知見を積極的に社外発信しよう ・技術や知見を体系的にまとめることで自信の理解を深める ・まとまったドキュメントはオンボーディングでも活用できる ・まとまったドキュメントは未来の自分達の救いになる

    ・ニッチな技術でも誰かの救いや参考になることはある ・チームとして社内の発信イベントへ積極的に参加する ・ヌーラバーブログリレー2022 冬 ・ヌーラバーブログリレー2022 夏 大切にしている流儀 | 業務で得た技術や知見を積極的に社外発信しよう
  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テストの自動化 大切にしている流儀 | 業務で得た技術や知見を積極的に社外発信しよう
  17. Copyright Nulab Inc. All Rights Reserved. 大切にしている流儀 | まとめ まとめ

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

  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
  20. Copyright Nulab Inc. All Rights Reserved. 一週間の仕事の流れ | 一週間の仕事の流れ Daily

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

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

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

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

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

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

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

  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
  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
  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を介して後段の アプリで実施
  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で処理する
  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を受け取りバックエン ドへ中継する ・レプリケーションのフローの起点となる (詳細は以下のブログで解説しています)
  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を添えて~ から引用
  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デプロイ
  35. 最後に Copyright Nulab Inc. All Rights Reserved.

  36. Copyright Nulab Inc. All Rights Reserved. 最後に | 最後に ・Gitチームの業務内容、流儀、仕事のプロセス、開発運用して

    いるシステム、使用している技術の一部を紹介しました。 ・Backlogに携わるチームについて少しでも知っていただけ れば幸いです。 ・他にもBacklogのエンジニアの話を聞いてみたいと思った方 は、是非「ヌーラバーの話を聞いてみたい」から登録お願い します。 ・ご清聴ありがとうございました!