Slide 1

Slide 1 text

© Link and Motivation Group 2023/09/29 SRE NEXT 2023 マルチプロダクト運用における SREのあり方 リンクアンドモチベーション Developer Productivityユニット SREグループ 岸本 直樹・篠原 昂

Slide 2

Slide 2 text

2 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 岸本 直樹(@naoki-lmi) 株式会社リンクアンドモチベーション Developer Productivityユニット SREグループ ● 2019年新卒入社。2020年からSREとして活動。 ● モチベーションクラウドのECS移設から開発メトリクス 向上Pjtで4keysの一つであるデプロイ頻度をMiddleか らHighへ、生産性の高い組織へと牽引。 ● モチベーションクラウドシリーズ全体の生産性向上に 従事 ● 新規プロダクト立ち上げ 自己紹介

Slide 3

Slide 3 text

3 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 篠原 昂(@koh-sh) 株式会社リンクアンドモチベーション Developer Productivityユニット SREグループ ● 2021年7月株式会社リンクアンドモチベーションに SREとして入社。 ● 新規プロダクトであるストレッチクラウドの立ち上げ に従事。 ● 現在はプロダクトや開発組織拡大のためのインフラ改 善を主に担当。 自己紹介

Slide 4

Slide 4 text

4 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 リンクアンドモチベーションについて 327億円(2022年12月時点) (2022年12月時点) 11社

Slide 5

Slide 5 text

5 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 プロダクト紹介 働きがい あふれる社会へ

Slide 6

Slide 6 text

6 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 近い未来に向けた挑戦(with AI) リアルタイム分析 LIVE バイタルやチャット等に 基づく即時分析 予兆検知・予測・予防 FORECAST 未来の組織改善 事前予防 AIアドバイザー データとセオリーを 元に支援 CONSULTANT

Slide 7

Slide 7 text

7 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Generative AIを内包した機能 2023年3月7日 リリース 2023年4月7日 リリース

Slide 8

Slide 8 text

導入企業様 ※2023年1月時点実績(https://www.motivation-cloud.com/)

Slide 9

Slide 9 text

© Link and Motivation Group 9 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 10

Slide 10 text

© Link and Motivation Group 10 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 11

Slide 11 text

11 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 弊社開発組織の歴史 2018 2019 2022 2023 新規プロダクト開発 2020 SRE チームの誕生 弊社の開発組織は誕生して5年目です!

Slide 12

Slide 12 text

12 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 4つのプロダクトから成る、複数のチーム 社員 約80名 + パートナーさん 約20名 + SRE 4名

Slide 13

Slide 13 text

© Link and Motivation Group 13 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 14

Slide 14 text

14 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 課題 その1

Slide 15

Slide 15 text

15 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【課題】運用工数が線形にスケールする プロダクトA プロダクトB プロダクトC 運用 運用 運用 プロダクトA の運用してるよ Bの... Cの運用は特殊で 大変だなぁ...

Slide 16

Slide 16 text

16 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【課題】運用工数が線形にスケールする プロダクトD 運用 運用 運用 時間 プロダクトA プロダクトB プロダクトC 運用 運用 運用 プロダクトが増えれば 運用も増えるのは 当たり前さ... プロダクトE プロダクトF

Slide 17

Slide 17 text

17 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 課題 その2

Slide 18

Slide 18 text

18 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【課題】チーム・組織間の流動性を阻害する プロダクトA プロダクトB プロダクトC 運用 運用 運用 誰が代わりに C の 運用を見れるの? 異動・退職 プロダクトD 運用 運用 運用 プロダクトE プロダクトF

Slide 19

Slide 19 text

19 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【課題】チーム・組織間の流動性を阻害する プロダクトA 開発・運用メニュー (CI・CD) アプリ 開発者 A プロダクトB 開発・運用メニュー (CI・CD) アプリ 開発者 B アプリ 開発者 C アプリ 開発者 B チーム間の異動 普段の開発や 本番のリリースが 違って辛い〜💦 フィーチャーチーム化してても、人材流動の阻害原因になる。 し辛い 💦

Slide 20

Slide 20 text

20 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 課題 その3

Slide 21

Slide 21 text

21 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【課題】新規プロダクトの立ち上げのボトルネックに... 新規プロダクト立ち上げのために0から設計するため、インフラの立ち上げにも時間がかかる アプリ開発がほぼ終わったので テスト用の環境がほしいんですけど... インフラ担当 (SRE 等) 0からインフラ構築してるから ちょっと遅れてしまいそう リリース日が決まって それまでに本番環境を 準備してほしくて... アプリ開発者

Slide 22

Slide 22 text

22 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 課題を解決するには?

Slide 23

Slide 23 text

23 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 解決方法 カスタマイズではなく 標準化された世界へ

Slide 24

Slide 24 text

© Link and Motivation Group 24 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 25

Slide 25 text

25 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 当時の構成 ▷保守工数の増加や流動性低下という課題が起きていた時のアーキテクチャ プロダクトB ECS on Fargate プロダクトA プロダクトC ECS on EC2 EB プロダクトA用CI/CD プロダクトB用CI/CD プロダクトC用CI/CD プロダクトA用IaC プロダクトB用IaC 手動作成

Slide 26

Slide 26 text

26 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 当時の構成 ▷保守工数の増加や流動性低下という課題が起きていた時のアーキテクチャ プロダクトB ECS on Fargate プロダクトA プロダクトC ECS on EC2 EB プロダクトA用CI/CD プロダクトB用CI/CD プロダクトC用CI/CD プロダクトA用IaC プロダクトB用IaC 手動作成 アーキテクチャが異なることで CI/CDやIaC、運用フローがプロダクトの数だけ増える

Slide 27

Slide 27 text

27 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 プロダクト間で標準となるアーキテクチャの検討 ▷なるべくシンプルかつ、各プロダクトの要件に対応しやすい構成やサービスを検討 プロダクトB ECS on Fargate 弊社のケースだとシンプル + 運用負荷の 低さを鑑みてECS on Fargateを採用 プロダクトC ECS on Fargate ECS on Fargate プロダクトA

Slide 28

Slide 28 text

28 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 標準化された結果 ▷アーキテクチャが同じであれば、全プロダクトのCI/CDとIaCが共通化できる プロダクトB ECS on Fargate プロダクトA プロダクトC 全プロダクト共通CI/CD ECS on Fargate ECS on Fargate 共通IaC(Terraform)

Slide 29

Slide 29 text

29 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 標準化された結果 ▷アーキテクチャが同じであれば、全プロダクトのCI/CDとIaCが共通化できる プロダクトB ECS on Fargate プロダクトA プロダクトC 全プロダクト共通CI/CD ECS on Fargate ECS on Fargate 共通IaC(Terraform) 標準化されたアーキテクチャへ刷新することで 共通のCI/CDとIaCで運用できる状態を目指す

Slide 30

Slide 30 text

30 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 標準化を進めるうえでの 課題と解決策

Slide 31

Slide 31 text

31 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 当時の課題感 開発者の環境準備の依頼やミドルウェアアップデー ト作業の時間で改善活動する時間がない・・・ 定常業務や差し込みタスクが多くあり、改善活動が思うように進まなかった

Slide 32

Slide 32 text

32 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 現状の活動時間を可視化 ▷活動時間の60%を定常業務と緊急対応に使っているが判明 LeanとDevOpsの時間の分析 SREチームの時間の使い方 差し込み作業が多く、スイッチングコストが高い = ローパフォーマー

Slide 33

Slide 33 text

33 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 現状の活動時間を可視化 ▷活動時間の60%を定常業務と緊急対応に使っているが判明 LeanとDevOpsの時間の分析 SREチームの時間の使い方 新たな作業割合を50%以上を目標にし、 並行作業(スイッチングコスト)を減らす 差し込み作業が多く、スイッチングコストが高い = ローパフォーマー

Slide 34

Slide 34 text

34 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 ①Toilの撲滅 ▷(当たり前ですが) まず、Toilを洗い出して撲滅する ミドルウェアアップデート自動化 Snapshot RDS スナップショット取得自動化 例えば・・・

Slide 35

Slide 35 text

35 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 ②開発者への作業の委譲 ▷SREが実施せずとも、開発者が自律的に実行可能な業務を一部自動化して渡す SREタスクをアプリ開発者と分担することで、SREの工数を確保 ❏ 環境の構築・更新・削除 ❏ 性能テストのための環境構築 ❏ 環境変数の追加 ❏ etc ❏ データベースの作り直し ❏ 一部サービスのアカウント発行・削除 アプリ開発者 Before SREに依頼しないと 開発できない SREに依頼しなくても 開発ができる After アプリ開発者

Slide 36

Slide 36 text

36 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 結果 LeanとDevOpsの時間の分析 SREチームの時間の使い方 ▷3ヶ月という短い期間で新たな作業の時間を20%増やすことに成功

Slide 37

Slide 37 text

37 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 結果 LeanとDevOpsの時間の分析 SREチームの時間の使い方 ▷3ヶ月という短い期間で新たな作業の時間を20%増やすことに成功 スイッチングコストを減らし、 新たな作業に集中できる時間を確保することが重要

Slide 38

Slide 38 text

© Link and Motivation Group 38 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 39

Slide 39 text

39 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 標準化を進める上で大事なこと 責任範囲の明確化

Slide 40

Slide 40 text

40 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 アプリケーション層 Dockerfile Dockerfile プロダクト差分を吸収する層 Dockerfile 変更管理 変更管理 アプリ 開発者 A プロダクトA 共通化層 terraform-modules プロダクトB プロダクトC terraform -stacks-C terraform -stacks-B terraform -stacks-A 運用者 (SRE, etc…) mod参照 mod参照 mod参照 責任範囲の明確化

Slide 41

Slide 41 text

41 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 プロダクト差分を吸収する層 変更管理 共通化層 terraform-modules terraform -stacks-C terraform -stacks-B terraform -stacks-A 運用者 (SRE, etc…) mod参照 mod参照 mod参照 責任範囲の明確化 アプリケーション層 Dockerfile Dockerfile Dockerfile アプリ 開発者 A プロダクトA プロダクトB プロダクトC Dockerfileよりも上、アプリケーションのランタイム は各プロダクトの開発チームの領域 変更管理

Slide 42

Slide 42 text

42 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 アプリケーション層 Dockerfile Dockerfile プロダクト差分を吸収する層 Dockerfile 変更管理 アプリ 開発者 A プロダクトA プロダクトB プロダクトC terraform -stacks-C terraform -stacks-B terraform -stacks-A mod参照 mod参照 mod参照 責任範囲の明確化 変更管理 共通化層 terraform-modules 運用者 (SRE, etc…) プロダクト間で標準となるインフラリソースはSREの領域

Slide 43

Slide 43 text

43 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 アプリケーション層 Dockerfile Dockerfile Dockerfile 変更管理 変更管理 プロダクトA 共通化層 terraform-modules プロダクトB プロダクトC mod参照 mod参照 mod参照 責任範囲の明確化 プロダクト差分を吸収する層 アプリ 開発者 A terraform -stacks-C terraform -stacks-B terraform -stacks-A 運用者 (SRE, etc…) プロダクト差分を吸収する層はチーム状況に応じて変更。 ※理想はアプリ側で責任を持つ形

Slide 44

Slide 44 text

44 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 標準化を進める上で大事なこと 抽象化と制約

Slide 45

Slide 45 text

45 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 プロダクトB プロダクトC プロダクトA プロダクト差分を吸収する層 共通化層 terraform-modules terraform -stacks-C terraform -stacks-B terraform -stacks-A mod参照 mod参照 mod参照 terraform apply AWS リソース AWS リソース AWS リソース 反映 反映 反映 module の呼び出しと プロダクト依存の定義 全プロダクトで 共通の基盤コード 抽象化と制約

Slide 46

Slide 46 text

46 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 プロダクトB プロダクトC プロダクトA 共通化層 terraform-modules terraform apply AWS リソース AWS リソース AWS リソース 反映 反映 反映 module の呼び出しと プロダクト依存の定義 全プロダクトで 共通の基盤コード 抽象化と制約 プロダクト差分を吸収する層 terraform -stacks-C terraform -stacks-B terraform -stacks-A mod参照 mod参照 mod参照 各プロダクトはmoduleを呼び出すだけで インフラ構築ができる

Slide 47

Slide 47 text

47 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 抽象化と制約 プロダクトごとに可変になる要素をmoduleのパラメータとする プロダクト差分を吸収する層 共通化層 terraform-modules terraform -stacks-C terraform -stacks-B terraform -stacks-A mod参照 mod参照 パラメータ ● ECS task定義 ● 最大 CPU (cgroup) ● Auto scale 台数 ● etc…

Slide 48

Slide 48 text

48 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 抽象化と制約 プロダクトごとに可変になる要素をmoduleのパラメータとする プロダクト差分を吸収する層 共通化層 terraform-modules terraform -stacks-C terraform -stacks-B terraform -stacks-A mod参照 mod参照 パラメータ ● ECS task定義 ● 最大 CPU (cgroup) ● Auto scale 台数 ● etc… 変数化されていない箇所のカスタマイズは 基本的に許容しない

Slide 49

Slide 49 text

49 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Module 参照 terraform-stacks-A terraform- modules terraform-stacks-C terraform-stacks-B それぞれ別々の Github リポジトリに。 Terraform リポジトリ・ディレクトリ構造

Slide 50

Slide 50 text

50 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Terraform リポジトリ・ディレクトリ構造 terraform-stacks-XXX stacks XXX.tfvars stages development.tfvars production.tfvars stacks.tf variables.tf terraform-modules modules variables.tf web variables.tf worker MODULES STACKS Github URL Github URL

Slide 51

Slide 51 text

51 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Terraform リポジトリ・ディレクトリ構造 terraform-stacks-XXX stacks.tf variables.tf terraform-modules modules variables.tf web variables.tf worker MODULES STACKS Github URL Github URL stacks XXX.tfvars stages development.tfvars production.tfvars 【環境ごとのtfvarsを定義】 - stageごとの変数を定義 - development - production - stackごとの変数を定義 - 性能環境 - 自動テスト用 - 〇〇チーム用

Slide 52

Slide 52 text

52 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Terraform リポジトリ・ディレクトリ構造 terraform-stacks-XXX variables.tf terraform-modules modules variables.tf web variables.tf worker MODULES STACKS Github URL stacks XXX.tfvars stages development.tfvars production.tfvars Github URL stacks.tf 【モジュール呼び出しを定義】 プロダクト固有、環境ごとの変数を定義した上で 共通モジュールを呼び出す。 ※ここでリソース定義はしない

Slide 53

Slide 53 text

53 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Terraform リポジトリ・ディレクトリ構造 terraform-stacks-XXX variables.tf terraform-modules modules MODULES STACKS Github URL stacks XXX.tfvars stages development.tfvars production.tfvars Github URL stacks.tf 【実際のAWSリソース定義】 stacksから渡されたパラメータを元に、実際の AWSリソースを構築 - ECS Cluster, Service - ELB - SQS - など variables.tf web variables.tf worker

Slide 54

Slide 54 text

54 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 Terraform リポジトリ・ディレクトリ構造 terraform-stacks-XXX variables.tf terraform-modules modules MODULES STACKS Github URL stacks XXX.tfvars stages development.tfvars production.tfvars Github URL stacks.tf 【実際のAWSリソース定義】 stacksから渡されたパラメータを元に、実際の AWSリソースを構築 - ECS Cluster, Service - ELB - SQS - など variables.tf web variables.tf worker リポジトリ分割とモジュール化によって責任と制約を表す

Slide 55

Slide 55 text

© Link and Motivation Group 55 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 56

Slide 56 text

56 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【効果①】運用工数が最小化 プロダクトA プロダクトB プロダクトC 運用 運用 運用 プロダクトは増えても 標準化された運用だから 簡単だ ▷担当するプロダクトが増えても、運用コストがスケールしない SRE SRE SRE いなくていい いなくていい

Slide 57

Slide 57 text

57 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【効果②】チーム・組織間の流動性がスムーズ プロダクトA 開発・運用メニュー (CI・CD) アプリ 開発者 A プロダクトB 開発・運用メニュー (CI・CD) アプリ 開発者 B アプリ 開発者 C アプリ 開発者 B チーム間の異動 どこでも同じ 開発者体験! ▷開発・リリース運用等、プロセスが同じだと人材流動しやすい。 💡

Slide 58

Slide 58 text

58 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 【効果③】新規プロダクトの立ち上げの初速が上がる 標準化されたIaCを使えば、インフラの構築の工数が大幅に削減 ローカル開発がほぼ終わったので テスト用の環境がほしいんですけど... インフラ担当 (SRE 等) 標準化されたIaCがあるから サクッと作っちゃうね!! CI/CDはこれ使って!! リリース日が決まって それまでに本番環境を 準備してほしくて... アプリ開発者

Slide 59

Slide 59 text

© Link and Motivation Group 59 2023/09/29 SRE NEXT 2023 アジェンダ ▷マルチプロダクトの運用の現状 ▷マルチプロダクトにおける課題 ▷標準化された世界とは? ▷標準化を進める上で大事なこと ▷標準化の効果 ▷まとめ

Slide 60

Slide 60 text

60 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 ● マルチプロダクト運用ではカスタマイズによるサイロ化が課題 ● 改善活動に時間を使うには実態の可視化と地道な改善が重要 ● 標準化を進める上で責任と制約の明確化がポイント まとめ

Slide 61

Slide 61 text

61 © Link and Motivation Group 2023/09/29 SRE NEXT 2023 お知らせ ● エンジニアリングマネージャー ● プロダクトマネージャー ● テックリード ● サーバーサイドエンジニア ● フロントエンドエンジニア ● SRE ● データエンジニア ● CRM ● UXデザイナー 週1でテックブログ更新しています! まずはカジュアルにお話しましょう! ご連絡お待ちしております! 全職種、積極採用中です!