生涯未熟

生涯未熟

プログラミングをちょこちょこと。

GCE × squidで立てたForward Proxy ServerのアクセスログをCloud Loggingに流そう

備忘録です。掲題のことをやるための手順を書き残していきます。

どういった構成か?

以下の記事のような構成とほぼ一緒です。

zenn.dev

やること

手順は以下の2点です

  • squidaccess_log 設定の追加
  • Opsエージェントの追加

squidaccess_log 設定の追加

これは /etc/squid/squid.confaccess_log daemon:/var/log/squid/access.log squid を追加。おわり。
反映させるために sudo service squid restart やっておきましょう。

Opsエージェントの追加

吐き出したアクセスログをCloud Loggingに流すために、Opsエージェントをインストールして設定をちょちょいといじりましょう。

cloud.google.com

ペロッと curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh を実行してインストールしてください。

で、インストールが終わったらOpsエージェントの既存構成からアクセスログを参照してCloud Loggingに流すようオーバーライドさせます。

cloud.google.com

/etc/google-cloud-ops-agent/config.yaml のファイルがあると思うので、編集してこんな感じにしてください。

logging:
  receivers:
    syslog:
      type: files
      include_paths:
      - /var/log/squid/access.log
  service:
    pipelines:
      default_pipeline:
        receivers: [syslog]

以上です。これでCloud Loggingにアクセスログが流れるか確認してみてください。

2023 State of DevOps Reportを読んだ

今年もState of DevOps Reportが発表されましたね。ということで、ザザッと全体を読んで気になったところなどピックアップして読み解いてみました。 全文が気になる方は以下からPDFをダウンロードしてみてください。

cloud.google.com

今年の調査主軸

  • 組織の業績
    • 組織は収益だけでなく、顧客のため、さらに広範なコミュニティのために価値を生み出さなければならない
  • チームパフォーマンス
    • アプリケーションまたはサービスチームが価値を創造し、革新し、協力する能力
  • 従業員の幸福
    • 組織やチームが採用する戦略は、従業員にとって有益なものでなければならない。すなわち、燃え尽きを減らし、満足のいく仕事体験を育み、価値あるアウトプット(つまり生産性)を生み出す能力を高めることである。

今回は上記3つの成果達成に対しての調査となった。

調査結果短評

  • 生成的な文化を持つチームは、組織のパフォー マンスが30%高い。
  • ユーザーを重視するチーム は、組織のパフォーマンスが40%高い。
  • コード レビューのスピードが速いチームは、ソフトウェアデリバリーのパフォーマンスが50%高い。
  • 質の高いドキュメントが整備されている場合、質の低いドキュメントが整備されている場合に比べ、組織の業績に与 える影響が12.8倍大きくなる
  • パブリッククラウドを利用す ると、クラウドを利用しない場合と比較して 、インフラの柔軟性が22%向上する。この柔軟性は、柔軟性のないインフラと比較して組織のパフォーマンスを30%向上させる。
  • 組織のパフォーマンスを最大限に発揮するため には、強力なソフトウェア・デリバリー・パ フォーマンスと強力なオペレーション・パフォーマンスの両方が必要
  • 過小評価されていると自認する人、女性、または自分の性別を自己表現することを選択した人は、燃え尽き症候群のレベルが高くなります。
  • 過小評価されていると答えた回答者は、そうでない回答者よりも燃え尽き症候群が 24% 多くなります。
  • 過小評価されていると答えた回答者は、そうでない回答者よりも 29% 多く反復的な作業を行っています。
  • 女性、または自身のジェンダーを自認する人は、男性よりも 40% 多くの反復作業を行っています。

成果アンケート

組織パフォーマンスや、チームパフォーマンスなどどのくらい目標を達成できているのか?といったアンケート。 チームパフォーマンスやSLOなどは高いが、バーンアウト・AI活用・知識共有が低いのが目立っていた。

どう比較する?

グッドハートの法則とは、「計測結果が目標になると、その計測自体が役に立たなくなる」という現象です。

グッドハートの法則を無視して、「すべてのアプリケーションは年末までに『エリート』パフォーマンスを実証しなければならない」などの大まかな発言をすると、チームが指標を利用しようとする可能性が高まります。

つまり指標をハックしようとする、といったことが起こることを指し示しているのかな?

人々は、最も意味のあるものではなく、最も測定しやすいものを測定する傾向がある。

チームはユーザーのためにソフトウェアを構築し、サービスの信頼性と有用性を最終的に判断するのはユーザーです。ユーザーのニーズを重視するチームは、正しいものを構築するのに適している。

アンケート結果から見た様々なチームタイプの特徴

  • ユーザー主軸のチーム
    • ユーザーニーズを第一に置いたチーム。組織パフォーマンスが高い。ただし、バランス型チームよりバーンアウトが多い傾向がある。
  • 機能重視のチーム
    • 機能に重きを置いて、機能のデプロイメントを第一に考える。バーンアウトが最も高く、仕事への満足度やチーム/組織パフォーマンスが最も低い。
  • 開発中心のチーム
    • アプリケーションユーザーのニーズを優先するチーム。小規模組織に多いタイプで、ソフトウェアデリバリー/オペレーションパフォーマンスが低く、バーンアウトも高い傾向にある。
  • バランス型チーム
    • 全体的にバランスの取れたチーム。バーンアウトも低く、全体的な水準も高い傾向にあるが、ユーザーニーズにもう少し傾ける必要があるのかもしれない。

ユーザーを重視することが組織のパフォーマンスを予測する

組織のパフォーマンスはユーザーの理解と調整とフィードバックを繰り返すことで向上する。

ユーザーを重視することの特徴

  • チームがどれだけユーザーのニーズを理解しているか
  • ユーザーのニーズを満たすために、チームがどれだけ連携しているか
  • 仕事の優先順位を決める際に、ユーザーからのフィードバ ックをどのように利用するか

上記はユーザー重視が組織にもたらす影響。流石に盛りすぎ感はあるが、良い効果をもたらすのはあるかもしれない。
→ 少なくとも「その改善、ユーザーにとって嬉しいものですか?ユーザーの為になっていますか?」といったミスマッチは防げるだろう

このチャプターでプラットフォームエンジニアリングについて触れられていた。

プラットフォーム・エンジニアリン グ・チームは、プラットフォームの構築に 「作れば来る」というアプローチを採用するかもしれない。しかし、より成功するアプローチは利用者である開発者を理解し、摩擦となっている問題点の特定/排除を適切に行うことなのかもしれない。

技術力がパフォーマンスを予測する

継続的インテグレーション疎結合アーキテクチャ、コードレビュー速度の向上にリソースと労力を投資することは組織パフォ ーマンスの向上、チームパフォーマンスの向上、ソフトウェアデリバリパフォーマンスの向上、運用パフォーマンスの向上など多くの有益な結果につながる可能性がある。

AIが全然良い影響を及ぼせてないのはまだ過渡期だからだろうか?疎結合アーキテクチャへの取り組みは良い影響を出しまくっている。
次点でコードレビューの高速化も良い影響を及ぼしているが、変更のリードタイムが改善されることでコードレビューをボトルネックにしないことが大事なのか。

ここでも疎結合アーキテクチャとコードレビューの高速化が強い。

疎結合アーキテクチャの場合、変更の影響が小さいとしてもチームの他の開発者とコンフリクトを起こさないようにする必要がある。スモールバッチで作業するチームは、コンフリクトの機会を減らし、各コミットでソフトウェアがビルドされ、自動テストがトリガーされ、開発者に迅速なフィードバックが提供されるようにする。 コードレビューにかかる時間が短いチームは、ソフトウェアデリバリーのパフォーマンスが50%向上する。効率的なコードレビュープロセスはコードの改善、知識の伝達、コードの所有権の共有、チームの所有権、透明性につながる。

AIがあまり上手く作用していない点については、まだ各社がAIツールなどの組み込みに着手したばかりで、結果が出るという段階にまで至っていないだろうと綴られている。

ドキュメンテーションは基礎である

質の高いドキュメンテーションは全体的な組織のパフォーマンス向上やバーンアウト軽減に繋がるという話。

その中で、過小評価されていると自認する人がドキュメンテーションの質とバーンアウトの増加に相関性があるという結果が出た。このグループの中で性別などによる相関性は無かったが、さらなる研究が必要であるという結びになっている。
→ 自己肯定感が薄い人にとって、ドキュメンテーションの質の維持の大変さやある種の報われなさがより辛い作業となっている要因なのだろうか?

信頼性がパフォーマンスを引き出す

SREプラクティスが組織に及ぼすパフォーマンス影響についての話。 本項独特な呼び方として、信頼性成果をオペレーショナル・パフォーマンスと呼ぶみたい。

今までと今回でのアップデートはSREの実践におけるJカーブ。今までのレポートにもあったように実践を行うことで尻上がりに信頼性が上がっていくということだったが、今年は最初は上がって停滞状態があり、また上がっていくといったグラフに変わった。

以前まではかなりSREへ投資しないと効果を得られないといった感じではあったが、少しの投資でも初期はかなりの効果を得られるのではないか?といった観点からこういったグラフになっている。停滞状態になった時点で長期的な信頼性の維持を目指した大きな投資を行うことが肝要。

SREingにおいてオンコール対応や緊急メンテナンスなどで幸福度が減るのではないか?といった懸念はあるが、実際はそれを上回るようにトイルの削減など業務遂行能力を高めていくことによってバーンアウトの低減や仕事の満足度がより高まるといった結果が出ている。

デリバリ・パフォーマンスとオペレーショナル・パフォーマンスは両方が高い水準にあることによって高いチームパフォーマンスと組織パフォーマンスが達成される。片方のみだけではダメ。 オペレーショナル・パフォーマンスを無視してデリバリ・パフォーマンスのみを追い求めたチームは組織全体の成果悪化に繋がったらしい。

[コラム] GoogleでのSRE

SREのスケールについて語られているがスケールについてGoogleで生まれた言葉がこちら

  • SREはユーザー数に対してリニアにスケールしてはならない
  • SRE はユーザー数でリニアにスケールしてはならない
  • SREはクラスタ数でリニアにスケールしてはならない
  • SREはサービス数によってリニアにスケールしてはならない

つまり、何かを基準にスケールするように組織調整してはいけないというお話で、リニアにスケールしないと維持できない場合は成長モデルやコミュニケーション・コラボレーションなどのどこかに問題を抱えている可能性がある。

柔軟なインフラが成功の鍵

インフラの現状についてのアンケート結果が最初にあるが、

机の下が3%も・・・🤔 半数以上はクラウド利用。

クラウドの利用の初期段階ではデリバリ/オペレーショナル・パフォーマンスの低下を招く(新しい環境への適応負担など)が、クラウドを利用することによるインフラの柔軟性の高まりが期待できる。

文化への投資なしには何もかもうまくいかない

Westrumの組織類型という組織文化の分類があるらしい。
ref: https://cloud.google.com/architecture/devops/devops-culture-westrum-organizational-culture?hl=ja

組織の文化的側面を表した一覧はこちら。

  • ウェストラムの組織文化
    • 組織が問題や機会にどのように対応する傾向があるか。文化には3つのタイプがある:生成的、官僚的、病的
  • 組織の安定性
    • 従業員にとってどれだけ安定した環境か、不安定な環境か
  • 雇用の安定
    • 従業員が雇用の安定を心配する頻度
  • 柔軟性
    • どのように働くか、どこで働くか、いつ働くか
  • 知識の共有
    • イデアや情報が組織全体に広がる仕組み。チームメンバーは一度質問に答えれば、その情報を他のメンバーも利用でき、人々は答えを待つ必要がない
  • ユーザー中心主義
    • ソフトウェアを開発する際にエンドユーザーに焦点を当て、ユーザーのニーズや目標を深く理解すること。ユーザーからのシグナルは、製品やサービスをより良いものにするために利用される 仕事の配分
    • チームが負担の大きい仕事をメンバー間で公平に分配するための、正式なプロセスが整備されている

文化的側面で見てもユーザー中心主義な姿勢は良い影響を与えるというのが面白い。また、知識のサイロ化を防ぐ知識共有の文化を築けているチームはデリバリー・パフォーマンスとオペレーショナル・パフォーマンスが向上するらしい。

我々の調査結果は、優れた文化が技術的能力の向上を助けることを示唆している。 文化は実践から生まれ、実践は文化から生まれる。 文化は広範で定義が難しいが、技術的能力は通常範囲が広く、明確に定義されている。このことは、組織内の個人がどのように変化を促進させることができるかに影響を与える。

文化の醸成の成功はリーダーによるインセンティブ構造の作成でも促進させることができる。つまり、上記のような成功する側面を持つ仕組みを取り入れることを、各チームと協力しながら行うことが重要である。

いつ、どのように、そしてなぜあなたが 重要なのか?

「昇進できない仕事とは、組織にとっては重要だが、キャリアアップにはつながらない仕事である。」

こういった仕事は例えば反復的な単純作業だったりである。あまり考えたくないことだが、こういった仕事を女性が頼まれやすい状況にあり、断ることが社会的コストになるため取り掛からざるを得なくなる。
こういったジェンダー差がもたらすキャリアアップに関する問題について、"The No Club"という書籍に詳しく書かれているらしい。
ref: https://www.thenoclub.com/

過小評価されていると答えた回答者について触れていたが、こういった人たちはバーンアウトを経験する可能性が高く、それを防ぐために帰属文化の醸成が必要。何故かというと彼らは「帰属の不確実性」を感じることで過小評価されていると思うためである。
組織の一部であると帰属意識を持つことで価値が見出されていると感じるため、バーンアウトの低減につながるのである。
→ たしかに自分もSESをやっていた時に思っていたが、組織というコミュニティから外れた疎外感を感じるとバーンアウトのような意識を感じることがあった。

感想

今年も読み応えのあるボリュームで、納得感のある結果が多々ありました。SREの文脈ではオンコール対応などで幸福度が下がるかと思いきやトイルの削減などのチームの業務遂行能力を高めていくことが幸福度を上げるというのが面白い結果ではありましたね。(分かる気はする
あとはバーンアウトに関する言及が多く、人間は様々な要因でバーンアウトするということがよく分かりますね。全部のバーンアウト要因を潰すというのはまぁ無理だとは思うので、ちょっとずつでも減らしていくことが出来ればいいですね。難しいけども。

といった感じで、今回取り上げたのはほんの一部ですので是非とも全文読んでみてください〜。

「QAと共に築く、機能性を通じた信頼性担保への取り組み」という発表をしました

SRE NEXT 2023で「QAと共に築く、機能性を通じた信頼性担保への取り組み」というタイトルで登壇させていただきました。

sre-next.dev

今回はQAとのコラボレーションとコミュニケーション・コラボレーションについて、のようなテーマを発表しました。

speakerdeck.com

発表で伝えたかったこと

SRE NEXTでCFPが始まった時に「あまり他の方が発表されてない内容」かつ、「SRE NEXT 2023の価値観に合う内容」にしようと決めました。
これは別に通りやすくするためではなく、単純にあまり発表されていない内容 = もっと界隈で知見を広げなければいけない分野なので、・カンファレンスのテーマに沿わないと折角運営の方々が立てていただいた価値観を蔑ろにしてしまうのでは?と考えたためです。

この2つの柱は外すことがないように肝に銘じて、まず今までに自分が行ったSREプラクティスの実践を改めて整理しました。

※ こんな感じでザザッと整理

で、色々整理していく中で「QAチームとの取り組みとか整理したら話できるんじゃないかな?」など他にも数個テーマを思い付きました。

次に思いついたテーマの中で前者に該当するものがあるかどうかを調べるため、2020/2022のSRE NEXTの全登壇者の資料に目を通しました。
ここで気づいたのが、セキュリティ分野の話が意外と少ないなぁとか組織作りの話はやっぱり人気だなぁなどと発見があったのですが、その中で"開発以外の他チームとのコラボレーション"について触れた発表がそこまでなかったので、ここは価値観のEmpathyにも通じるしやる価値があるなと判断。
結局、自分が思いついたテーマの中で一番合致するのがQAチームとの取り組みの話でした。

前段の話が長くなってしまいましたが、今回の発表の目次は以下のようなものでした。

  • はじめに
  • 機能性から考える信頼性
  • 機能性に対してSREが出来ること
  • 実際に取り組んだこと
    • E2E支援
    • QAテスト支援ツールの作成
  • まとめ

はじめにを除いた目次を一つ一つ解説していきます。

機能性から考える信頼性

まず、今回テーマから具体的な発表の内容を作成していく時に改めて「機能性とは何だろう?」を深掘る必要性を感じました。そこで、SRE本に書いてある信頼性の一節「システムが求められる機能を、定められた条件の下で、定められた期間にわたり、障害を起こすことなく実行する確率」の部分を読んでいると引用文献があることに気付きました。
Practical Reliability Engineeringという本から引用した一節ということで、「これは読んでみないとダメだな」とAmazonを覗いてみるとあらビックリ。1万円を超える書籍でした・・・

まぁ致し方なしと1万円払って読みましたが、発表で触れたように工業製品の信頼性について書かれた本で主な内容は確率算出のための統計手法についての解説となっておりました。とはいえ1割は信頼性とは何か?について書かれていて、信頼性獲得のための優先順位付け・何故障害は起こるのか?・修理について(MTBFなどMTTR周りの話)などなども書かれております。

で、そこから幾つか引用をさせていただきつつQAが信頼性を構成する機能性を担保する重要な要素だよ、というお話をさせてもらいました。

ここまではSREの視点で見た機能性についてだな〜と書きながら思っていて、ちゃんとQAに関わる人の目線からも機能性はどう捉えられているのか?を話さなければと色々と調べました。その中で、ISO/IEC 25010について知ることとなり、これも読まないとなと探してみるとこちらの日本工業規格の25010に辿り着きました。

kikakurui.com

日本にローカライズされたものとはいえ、ほぼほぼ国際標準規格と同じなのでありがたく読ませていただきました。

ここには発表で触れた通り、システムと関わりを持つ様々な人が必要としているテスト観点をモデル化したもので、この中にはそのものズバリな"信頼性"というモデルもありました。正直、この中に信頼性があることに驚き、内容自体もPractical Reliability Engineeringに則した内容になっていたので源流は同じっぽいですね。
機能性については3つのサブモデルから成り立っており、こういった内容でQAがなされることで機能性の担保はされているんだよという触れ方をさせていただきました。やはり、全然知らない分野を調べると新鮮な発見がありますね😊

機能性に対してSREが出来ること

ここでQAチームとのコラボレーションの話に入るわけですが、ここはもうカッコつけてもしょうがないのでコミュニケーションについて失敗した話も交えながらありのままを書かせていただきました。別の登壇でも発表させていただきましたが、コミュニケーション・コラボレーション促進の施策は失敗したものばかりでしたし、QAチームからコラボレーションのお話をさせてもらえなければQAチームに対してSREプラクティスを発揮することもなかったでしょう。この辺は書きながら反省することばかりでした・・・

今回書くことはなかったのですが実際問題コミュニケーションと一括りに言われても単純な雑談から実装などシステムについての突っ込んだ議論など様々かと思います。個人的には「相手の思考に立ってみること」がコミュニケーションだと考えていて、例えば先程の"実装などシステムについての突っ込んだ議論"ではキチンと相手が突っ込んできたことについて「何故相手はそう考えたのか?」「その考え方の根本のベクトルはどこに向かっているのか?」など、相手の思考・視点に立つことが出来ていないとコミュニケーションとは言えないのではないのでしょうか?
単純に「チーム皆でワイワイやりましょうや〜」「飲みニケーションや!」みたいなものも立派なコミュニケーションの一つだとは思いますが(勿論、この考え方が嫌いという人が一定数いることも理解はできます)、それよりももっと根本の部分でコミュニケーションを実践することが肝要かと思います。

ということをノー論理で言われても聴かれる側の方は「それってあなたの感想ですよね?」と思われるんじゃないかと思い、書かなかった次第ではあります。誰か、このあたりのSREが学ぶべきコミュニケーション術みたいな本を出してくれませんかね?(他力本願

実際に取り組んだこと

ここはただやったことを書いても聴いてる方に届かないかな?と思いまして、ちゃんと進め方の部分についても書かせていただきました。エンゲージメントモデル作りは責務をしっかり確定させるものなので、コラボレーションをやる際にはこれはマジで作っておいた方がいいです。問題の解決を急いじゃうとついつい最初に決めたことが疎かになっちゃうので、見返すためにもという意味で。

あとはここで信頼貯金について触れましたが、コラボレーションを抜きにしても仕事をする上で大切な概念で、これを貯めることで様々なムーブがやりやすくなります。例えば、いきなりチームに入った人が「◯◯というベストプラクティスがあります。これを導入することでこのチームはより良くなるので導入しましょう!」と提案し、もしそれが真であってもなかなか進まないでしょう。そういったムーブをかます時に、信頼貯金が物を言うのです。自分がやりたいことの実現のため、他者との協調のためにも信頼貯金を貯めるための行動を心がけていきましょう。
と、ここまで書いておいて「信頼貯金って誰かから教えてもらった概念だが原典あるのかな?」と調べてみたら著名な"7つの習慣"に書いてある概念みたいですね。今度読んでみよう📖

まとめ

正直、今回の一番の肝はここだと考えて力を入れました。
ザザザっと資料作ってまとめまで来た時に「絶対聴く人の中には大したことやってないな〜と感じる人いるんだろうな」と思ってました。そのくらいやっていることは平易で、別にテクニカルなことをやったという自負もないので、そう感じたのならその通りだなと。ただ、そこで落胆を感じたままだとこの後伝えたいことが心にスッと入ってこないかなと危惧して、「大したことやってないな〜と感じませんでした?」と問いかけさせていただきました。

今回、資料を作成するに至って様々な資料・書籍を改めて振り返ったりしたのですが、その時に「著者の方とかのブログとか登壇とかまでリーチしといた方がいいか」とどんどん手を広げて調査していった結果、Niall Murphy氏の素晴らしいブログ記事に辿り着くことができました🙏

blog.relyabilit.ie

ここには先程の「大したことをやっていない」ことに対しての解や、その他様々な発見があり非常に参考になりました。「Googleシリコンバレーの企業の中でも、多くの点で依然として文化的に異端者です」とハッキリ書いてあるのが面白く、他にも他社で働く際の注意点など気を付けた方がいいことなども書いてありますがSREを実践して働く方には刺さる話が多いかと思います。

ここで伝えたかったのは「SREはプロダクトに関わる全ての人が実践し、理想はSREチームが存在しない状況」ということです。今回はSREチームと他チームのコラボレーションということでもう少しマイルドに「プロダクトに関わる人全てにコラボレーションの目を向けていこう」という感じでお伝えしましたが、その先にあるのが先程の理想についてです。

LINEヤフー株式会社でSREチームでリードをやっておられる@maruloopさんがTwitterで仰られていたこの話が自分も凄く感銘を受けていて、これがSREのあるべき姿だと思っています。

というわけで、こういったことの前哨戦としての様々なチームとのコラボレーションという裏の意図がありきのまとめではありました。

最後に宣伝

こういった組織論というかSREの理想やコミュニケーション論などを語ったり聴くのは個人的に凄い好きなので、話したいことがあるぞ〜って人は是非ともゆるSRE勉強会に来てお話してください〜😊 (第2回はかなり埋まってるので第3回に是非!)

yuru-sre.connpass.com

SRE NEXT 2023参加レポート

SRE NEXT 2023に登壇者として参加させていただきました! 大きな舞台で貴重な経験をさせていただいたので、色々と記録に残すためにレポートを書きます。

私とSRE NEXT

SRE NEXTの存在を知ったのはちょうど私がSREを始めて1年経たないくらいの時で、「こんな大きなカンファレンスがあったのか!」と驚きました。
即参加を決めてオンライン視聴しましたが、イベント自体めちゃくちゃ気合いが入っててすげーすげー!言ってました。で、肝心のセッションも弊社の清水さんの発表など非常に胸に刺さるものが多く、特にVTRyoさんの「一人から始めるプロダクトSRE」が今の自分の状況と同じで物凄く感銘を受けたのを覚えています。

youtu.be

そこから、「いつかこんな大きな舞台に立てたら嬉しいな〜頑張らないとな〜」と薄っすらですが考えるようになりました。

SRE NEXT 2023開催!

ずっと薄っすら考えたままでしが、SRE NEXT 2023が開催発表されたことで急に現実感が出てきて「プロポーザルを送るっきゃねぇ!」と気合いだけは一丁前に入ってました。

今回送ったのは2つ

  • 以前弊社テックカンファレンスで発表した「小さなサービスでの SREとの付き合い方」のフル版
  • 今回発表させていただいた「QAと共に築く、機能性を通じた信頼性担保への取り組み」

で、無事後者が採用されたわけですが、正直喜びよりも不安感の方が強かったりしました。
ただ採用されたからにはやるっきゃねぇと頑張らせていただきました🙏

追記:登壇内容についてはこちらに書きました https://syossan.hateblo.jp/entry/2023/10/01/190311

当日

結論から言うとめちゃくちゃ楽しいイベントでした!!!!

最初、どこ行きゃいいのか分からなくてスタッフさんに声かけた時も丁寧に教えていただいたり、登壇時にも様々助けていただいたお陰でTrackAの大きな部屋でも緊張感が和らいだ状態で発表を行うことができました!(聴いてくださった方はありがとうございます!)

セッション以外にもワキヤコーヒーさんにお話伺ってコーヒーを頂いてコーヒー豆購入したり、ブースをチラチラ覗いたりさせていただいたり、来場者アンケートに答えてみたり・・・ 色々やってて時間を持て余す暇がねぇ!って感じでした。

イベントの目玉のセッションについては、気になるものをピックアップして聞かせていただいたのですが、特にマネーフォワードのSREの方の発表がめちゃくちゃ良かったです!!

実際、弊チームではエラーバジェットを導入出来ていなくて、概念については理解しているもののどうやってチームに取り入れていくか?が課題として残ったままになっている状態でありました。
ですが、こちらのセッションを見て「あぁ〜そういう説得材料に落とし込んで導入していけばいいのか〜」とすごい腹落ちすることが多くて、エラーバジェットの導入へ向けてまたアクション取ってみるか!という気持ちにさせてもらえました🙇‍♂

あとは最後の懇親会では初めましての方とお話する機会があってめちゃくちゃ刺激になりました!皆さん、色々なバックボーンからSREの実践をやってらっしゃって、これもまたSRE界隈じゃないと見れない風景なのかなと面白さを感じていました。

運営の方、登壇された方、スポンサーの方、SRE NEXT 2023に関わられた方、皆様お疲れ様でした!!!

ソフトウェアエンジニアと品質保証 SRE、QAの枠にとらわれない新しい視点 参加レポ

参加した時にメモっていた内容になります。自分向けに投稿。

URL:https://offers.connpass.com/event/290685/

みーんなSREとかQAをチームにしとる チームにしていないのお前だけ - toriさん

開発チームがシステムを運用するオーナーシップ 
→ SRE, QAを安易にチーム化しない
→ なぜ?

チーム化の理想は?
専門領域の深掘りを集中的にできる
→ 果ては他チーム・組織全体にまで波及させる
→ 希少な人的ソースを基盤化

但し問題がある
・責務分割からの責任の放棄(あっちのチームがいい感じにやってくれるでしょ
・権限問題(あっちの領分だし
→ 外部からの口出しがしにくくなる
→ (外部から見て)よくわからんがこうなってる

!!学びの機会の損失!!

組織の形によっては「こっちで良しなにやりました、あとはよろしく!」となるのが良いのか悪いのかという論争はある

カミナシでは開発チームではなくサービスチームという立て付けでやっている
→ サービスを提供して初めてユーザーに価値が届く
→ 開発を求めているのではなく、サービス提供を求めているというお気持ち

チーム化による必要なケイパビリティを備える機会を奪うことを避けたい

セキュリティチームはさすがに人いなさすぎてチーム化
→ サービスチームにenablingしていくこと、文化を作っていくことを目標としている

オーナーシップをどこに集結させるのか?というお話だった。

QA;CSとかはチーム化した方がいい?
サービスチームにどこまでオーナーシップを持つのか?による。ビジネス含めて丸っと全部持てたら最強だが、現実的にはそうなっていない。

パネルディスカッション

t-wadaさん -> W
toriさん -> T

テーマ:チームでQAを捉える場合、具体的にどう進めていく?

W;チームにどれくらいQAを理解している人がいるか?にもよる。別チームにQAがいる場合には、時間借りのような形で関わってもらう。
自分ごととしてどこまでチームが範囲を広げられるか?経験者がいない場合には読書会や外部経験者からの助言でまかなっていく。学ぶ姿勢が大事。
機能開発にリソースを全振りするのはダメ。時間があったらやりますは結局やらない。

T:QAうまくいってるかというとそうではない。トライしている最中。QAは外部ベンダーから派遣されていたが、手動テストを減らすなどでエンジニアリングの力で減らしていき、QAは上流工程からどうしていくのか?を助言する立場。
スクラムでやっていると全リソースを機能開発に注ぎがち。そうなると自然に得意分野のタスクしか取らなくなる。業務外で学べ、は違うよね。
チーム全体のスループットが下がっても業務内で学んでいく。

QA:チームを分けない場合での理想状態は、各サービスチームが自律的にやるのか、それともある程度ナレッジシェアリングなどを行いつつ進めたいと考えるとチーム横断のワーキンググループみたいな形でやるのが良いのか、どうお考えでしょうか?

W:横串の知見共有グループを作るのがよい。知識をサイロ化させない、ナレッジシェアリングの場を作ろう。横串チームではなく、横串コミュニティを作る。
T:カミナシは小さい会社なのでまだサイロ化は起こっていない。AWSは↑のコミュニティがあった。横串コミュニティがなぜやっているのか疑問化されないためのカルチャーづくりも大事。

QA:SRE/QAを内包することで、何かチームライフサイクルが変わることがある?

T:例として開発段階でそれぞれのレビュー目線で指摘することができる人が増えること。

テーマ:SREやQAがチームをあえて別チームにすることが効果的な場合はある?

T:評価が難しくなってきたとき。専門領域が多岐に渡ると評価者が判断しかねることがある。サービスチームにはいるが、評価者としては横串チームでやってもらう、みたいな感じも一つ。

QA:SRE/QA/セキュリティなどの専門知識をenablingしていくメンバをチームに配置するとチームの規模が大きくなり過ぎて困ることはないですか。もしくはenablingするメンバを1人配置するほどの規模ではない場合にはどうしていますか。

T:チームサイズの理想は1桁人。2pizzaチームと言いながら前職で30人いるとかはあった。前職ではチーム規模を保つために、オーナーシップを上手く切っていくことをやっていた。
W:逆コンウェイのようなことですよね。つらいところはどこでした?
T:AWSの規模だと急なトラフィック増があるが、スケールするようなチームの切り方をしていた。ボトルネックがチーム間で共有されるような場合には2チームが結局依存する形になったりしていて、そこの解決が難しかった。

QA:QAチームを分けることで一定の品質を担保できるメリットがあると思っています. 開発チーム内で品質を管理しようとすると, どうしても開発優先となり品質の優先度が低くなってしまいがちになってしまうと思いますが, それを防止する方法等がありますでしょうか?

W:品質を下げて開発スピードが上がるという考え方が間違い。品質を担保できていないのは開発が終わっていないと同義。手順を分けると「あとはお願いします脳」になっちゃうので、そうなっている。チームを分ける怖さはここにある。完了の定義を見直そう。
T:スタートアップなどだとスプリント回したあとに、次のスプリントは負債を回収するために動くといった動きもあるっちゃある。

テーマ:ソフトウェアエンジニア一人一人がQAにどう関わっていくことが求められているのか?

T:使いたいものを作ろう!という意識が大事なんじゃないか。降ってきた要件をこなすだけはやめよう。価値提供することをもっとエンジニアの意識の中心に置こう。
W:同意見。自分事として関わることが大事。あとはユーザーとの距離が遠すぎると意識が希薄になっていくので、近づけることも大事。アクセスログを体感するとか、ユーザーの意見を受け取るなど。

QA:品質保証への意識を高める、学ぶためにどのように学んでもらうのが良いでしょうか? また、それは目標設計に含まれる場合、どういう目標設計にするのが良いのでしょうか。

T:仕事の中で学ぶのがオススメ。カミナシではジョブレベル・等級要件の定義に品質についての文言を含んでいたりする。
W:目標設計は事業貢献一辺倒・技術貢献一辺倒でもダメ。どちらの側面からも評価してあげるように設計するのが良い。

質疑応答

QA:QAってすごく多彩な領域があると思います(組織の品質ポリシー、チームのポリシー、チームが目指す(外部)品質モデル、テストのレベル、サイズの定義、テスト分析、設計、自動化、CI、メトリクス、内部品質の選択と担保etcetc... )チームにQAをEnableしていく、ときにどこからはじめると進みやすい、入りやすい、など感触ありますでしょうか?

T:テスト設計を一緒にやっていくことで、こういった観点があるのか!など感動があった。そういったスキルを持った人による新しい観点の導入が感触としてはよかった。
W:仕事を減らす入り方が良い。過剰なテストを減らすようなところから入ってもらうといい。エンジニアはとにかくありったけのテストを詰め込むので、そこを調整してもらうのが最初にやってくれると刺さる。
T:専門知識を持っている人は最高の状態を目指そうとする、ただヨチヨチ歩きの状態からは圧が強すぎるのでここまでにここに行きたいというロードマップを引いてもらえるとよさそう。

QA:定期アップデートの話?(質問見つけれなかった)

T:定期アップデートは当たり前にやることとして、価値観に入れている。(とはいえカミナシのAuroraアップデートはまだやれてない・・・

締めの一言

T:カミナシは仮説を元に実験的に色々やっている。今日話したことが実際に成功したかは今後のカミナシを見ていってくれ!
W:良い会でした