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

Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」

Arthur
January 25, 2023

Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」

Mackerel開発チーム エンジニア id:arthur-1

サーバー監視サービス「Mackerel」の開発チームでは定期的に開発合宿を開催しています。その運営を担当し、また、一参加者でもあった立場から、本取り組みがどのようにエンジニアの技術やチームのコラボレーション力、そしてプロダクトの価値を高めているかをご紹介します。

参考:開発合宿で取り組んだプロジェクトについてのブログ

Lambda 新機能の Telemetry API を利用した mackerel-lambda-extension-agent 試作 - Diary of a Perpetual Student

Arthur

January 25, 2023
Tweet

More Decks by Arthur

Other Decks in Technology

Transcript

  1. チームとプロダクトを育てる
    Mackerel 開発合宿
    id:arthur-1
    2023/01/25 Hatena Engineer Seminar #23
    1

    View full-size slide

  2. id:arthur-1
    Mackerel 開発チーム
    アプリケーションエンジニア
    2022年4月新卒入社
    好きなもの:ヒルベルト空間
    「王」と呼ばれつつある
    https://blog.arthur1.dev/
    2

    View full-size slide

  3. 今日の話
    3

    View full-size slide

  4. 夢はありますか?
    4

    View full-size slide

  5. その夢、実現できそうですか?
    5

    View full-size slide

  6. おしながき
    ● Mackerel の開発合宿
    ● なぜやるのか:夢を現実にする場としての合宿
    ● 運営の工夫:実験場としての合宿
    ● 成果発表:lambda-extension-agent 開発
    6

    View full-size slide

  7. Mackerel の開発合宿
    7

    View full-size slide

  8. 開発合宿とは
    チームを組み、3日間集中して課題に取り組む
    「誰かと一緒に、未来に繋がる何かをしよう」
    8

    View full-size slide

  9. 合宿という名前だが
    開催の敷居はそれほど高くない:
    ● 会場はオンライン
    (Google Meet や Miro などを利用)
    ● 平日に通常の業務時間の範囲で取り組む
    9

    View full-size slide

  10. 参加者とチーム
    開発チームのエンジニア・デザイナーはもちろん、CRE や
    セールスチームからも参加している
    予め取り組みたいテーマを挙げてもらい、1テーマ
    3〜5人ほどのチームに参加者を分ける
    10

    View full-size slide

  11. 3日間の流れ
    Day1 / Day2
    ● チームに分かれて開発やワークに取り組む
    Day3
    ● 開発・ワークの続き
    ● 成果発表
    ● 振り返り
    ● 打ち上げ
    11

    View full-size slide

  12. 開発合宿と登場人物
    エンジニア ➡ 技術的挑戦による成長
    チーム ➡ プロジェクトを遂行する力を高める
    プロダクト ➡ アイデアを形にして進化
    12

    View full-size slide

  13. なぜやるのか
    夢を現実にする場としての合宿
    13

    View full-size slide

  14. Mackerel と dogfooding
    サーバー監視 SaaS である Mackerel は、元々社
    内ツールとして生まれた
    dogfooding により信頼性を高めている
    ↳ 自社サービスを自分たちで利用する
    cf.) https://ja.mackerel.io/product/reliability/dogfooding
    14

    View full-size slide

  15. プロダクトへの夢
    Mackerel ユーザーとして夢がある
    15
    Mackerel で
    〇〇 できたら
    良いのになあ
    Mackerel のこの機能
    もっと使いやすく
    ならないかなあ

    View full-size slide

  16. 開発・運用上の夢
    Mackerel の 開発・運用者としても夢がある
    16
    デプロイフロー
    改善したいなあ
    この新しい技術
    使ってみたい!

    View full-size slide

  17. 夢を語る場
    ● Scrapbox
    ○ 「みんなのアイデア帳」というページ
    ○ 各自で「○○の夢」というページも作っている人も
    ● Mackerel 雑談会
    ○ PO と一緒に未来のアイデアを膨らませる会
    17

    View full-size slide

  18. 夢を実現する場
    ● 普段のスクラム開発
    ○ PBI (Product Backlog Item) という形になったもの
    を優先度順に取り組む
    ● ではない会
    ○ 各自がやりたいことをやる時間
    しかし、夢が溜まっていくスピードの方が早い
    18

    View full-size slide

  19. 夢を見ない組織
    夢が叶わぬものだと悟ったとき、
    人は夢を見るのをやめてしまうだろう
    →ユーザーからの信頼に背く結果となる
    19

    View full-size slide

  20. アイデアの爆発
    Mackerel の開発合宿は
    まとまった時間・人を確保して
    夢を現実にする場
    アイデアを爆発させ、形に落とし込む
    20

    View full-size slide

  21. 運営の工夫
    実験場としての合宿
    21

    View full-size slide

  22. 合宿運営の経験
    2022年12月に「Mackerel アゲアゲ合宿」開催
    id:arthur-1 は運営を担当した
    22

    View full-size slide

  23. なぜ👆アゲアゲ👆?
    元々「開発合宿」という名前だったのを改名
    ● セールス・CRE チームに門扉を開いているものの、
    「開発」という名前に敷居の高さを感じていそう
    ● 「開発」という手段ではなく目的にフォーカス
    23

    View full-size slide

  24. 例年のチーム分け
    ● プロジェクト案を募る
    ● 参加者全員集まって希望を聞き、チームを決
    めていく
    ○ 希望者が多い順に PJ をチームとして発足させる
    ○ greedy に決めていくと、最後の方は調整が必要
    24

    View full-size slide

  25. 今回のチーム分け
    準備のために全員が集まる
    時間を減らした
    ● PJ 起案者による説明会を任意参加
    として開催し、録画データを共有
    ● PJ への希望順はフォームで聞き、
    運営が割り振る
    25

    View full-size slide

  26. チーム割り振り
    フォームの結果を元に、arthur-1 が採択 PJ を決め、
    チームを割り振った
    チーム分けの意図(チームへの期待)を文章で共有
    挑戦的な振り分けをしたので:
    ● サブプロデューサーにコードを書かせる
    ● 全員の職種が異なる大きめのチーム
    26

    View full-size slide

  27. 共有したこと
    「プロジェクト」とは
    ● 限られた時間で
    ● 明確な答えのないものに対して
    ● 共通の目標を定め
    ● チームで取り組む
    27

    View full-size slide

  28. 共有したこと
    合宿という機会は、プロジェクトを遂行する力
    を養う純粋な砂場である
    割り込みがなく集中できる
    時間が限られていて、すぐ散会となるチーム
    失敗しても大丈夫
    28

    View full-size slide

  29. 合宿運営もまたプロジェクト
    絶対的な正解の運営はない
    チームの状況は変化するので、それに合ったや
    り方を考えて挑戦する
    良くてもダメでも振り返ろう
    29

    View full-size slide

  30. 成果発表
    lambda-extension-agent 開発
    30

    View full-size slide

  31. Lambda Telemetry API チーム
    2022年12月に行われた合宿で
    id:arthur-1 のチームは
    AWS Lambda 新機能の Telemetry API の活用を模索
    → mackerel-lambda-extension-agent の開発🎉
    31

    View full-size slide

  32. コード・解説エントリ公開してます
    ■ Repository
    mackerelio-labs/mackerel-lambda-extension-agent
    ■ Blog
    Lambda 新機能の Telemetry API を利用した
    mackerel-lambda-extension-agent 試作 - Diary of a
    Perpetual Student
    32

    View full-size slide

  33. Lambda Telemetry API
    AWS Lambda の Telemetry API
    2022年11月にリリース
    元々あった Logs API の進化系
    cf.) AWS Lambda が Telemetry API を導入したことで Lambda 拡張機
    能のモニタリングとオブザーバビリティがさらに向上
    33

    View full-size slide

  34. Telemetry API で取れるもの
    ● Lambda 関数のログ
    ● platform に関するメトリック
    ○ メモリの使用量
    ○ コールドスタートにかかった時間 など……
    ● OpenTelemetry と情報的な互換
    ○ ログに span や trace の ID が付与されている
    これらの情報を実行環境ごと取れる
    = Lambda の中身が見える
    34

    View full-size slide

  35. lambda-extension-agent
    mackerelio-labs/mackerel-lambda-extension-agent
    Lambda Extension として動く、 Telemetry API から得た
    情報を Mackerel に投稿するエージェント
    ● AWS インテグレーションと異なり、実行環境ごとホストと
    して登録
    ● Extension API を利用して自動退役にも対応
    35

    View full-size slide

  36. 実行環境ごとホストとして登録される様子
    36

    View full-size slide

  37. Extension で集計し、mackerel に情報を投げる
    37

    View full-size slide

  38. API の購読
    ① Extension 登録
    Lambda 関数に Layer を追加
    し、Extension API に所定の
    リクエストを投げて拡張とし
    て登録する
    38

    View full-size slide

  39. API の購読
    ② Telemetry API 購読
    Extension 上で HTTP サーバ
    を立て、Telemetry API に
    URL を伝える
    すると、立てたサーバにテレ
    メトリ情報が送られるように
    なる
    39

    View full-size slide

  40. 課題
    Mackerel のメトリックは 1分粒度
    Extension 上で 1分待って rollup している間に
    実行環境がスリープしてしまうことも
    集約は外部に任せた方が良さそう
    40

    View full-size slide

  41. 成果
    ● AWS の新たな機能をキャッチアップできた
    ● AWS Lambda の可観測性を上げられた
    ● production としてリリースしようとしたと
    きの課題も見つかった
    41

    View full-size slide

  42. 新たな技術に触れる合宿
    今回のテーマに限らず、チームでこれまで触れて
    こなかった新たな技術をキャッチアップする場
    として、合宿が利用される
    時間があるので徹底したペアプロが可能
    42

    View full-size slide

  43. 開発合宿と登場人物
    エンジニア ➡ 技術的挑戦による成長
    チーム ➡ プロジェクトを遂行する力を高める
    プロダクト ➡ アイデアを形にして進化
    44

    View full-size slide

  44. 開発合宿
    やってみませんか?
    45

    View full-size slide


  45. ご清聴いただきありがとうございました
    46

    View full-size slide