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

Other Decks in Technology

Transcript

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

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

  3. 今日の話 3

  4. 夢はありますか? 4

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

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

    開発 6
  7. Mackerel の開発合宿 7

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

  9. 合宿という名前だが 開催の敷居はそれほど高くない: • 会場はオンライン (Google Meet や Miro などを利用) •

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

  11. 3日間の流れ Day1 / Day2 • チームに分かれて開発やワークに取り組む Day3 • 開発・ワークの続き •

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

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

  14. Mackerel と dogfooding サーバー監視 SaaS である Mackerel は、元々社 内ツールとして生まれた dogfooding

    により信頼性を高めている ↳ 自社サービスを自分たちで利用する cf.) https://ja.mackerel.io/product/reliability/dogfooding 14
  15. プロダクトへの夢 Mackerel ユーザーとして夢がある 15 Mackerel で 〇〇 できたら 良いのになあ Mackerel

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

  17. 夢を語る場 • Scrapbox ◦ 「みんなのアイデア帳」というページ ◦ 各自で「◦◦の夢」というページも作っている人も • Mackerel 雑談会

    ◦ PO と一緒に未来のアイデアを膨らませる会 17
  18. 夢を実現する場 • 普段のスクラム開発 ◦ PBI (Product Backlog Item) という形になったもの を優先度順に取り組む

    • ではない会 ◦ 各自がやりたいことをやる時間 しかし、夢が溜まっていくスピードの方が早い 18
  19. 夢を見ない組織 夢が叶わぬものだと悟ったとき、 人は夢を見るのをやめてしまうだろう →ユーザーからの信頼に背く結果となる 19

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

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

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

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

  24. 例年のチーム分け • プロジェクト案を募る • 参加者全員集まって希望を聞き、チームを決 めていく ◦ 希望者が多い順に PJ をチームとして発足させる

    ◦ greedy に決めていくと、最後の方は調整が必要 24
  25. 今回のチーム分け 準備のために全員が集まる 時間を減らした • PJ 起案者による説明会を任意参加 として開催し、録画データを共有 • PJ への希望順はフォームで聞き、

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

    • 全員の職種が異なる大きめのチーム 26
  27. 共有したこと 「プロジェクト」とは • 限られた時間で • 明確な答えのないものに対して • 共通の目標を定め • チームで取り組む

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

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

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

  31. Lambda Telemetry API チーム 2022年12月に行われた合宿で id:arthur-1 のチームは AWS Lambda 新機能の

    Telemetry API の活用を模索 → mackerel-lambda-extension-agent の開発🎉 31
  32. コード・解説エントリ公開してます ▪ Repository mackerelio-labs/mackerel-lambda-extension-agent ▪ Blog Lambda 新機能の Telemetry API

    を利用した mackerel-lambda-extension-agent 試作 - Diary of a Perpetual Student 32
  33. Lambda Telemetry API AWS Lambda の Telemetry API 2022年11月にリリース 元々あった

    Logs API の進化系 cf.) AWS Lambda が Telemetry API を導入したことで Lambda 拡張機 能のモニタリングとオブザーバビリティがさらに向上 33
  34. Telemetry API で取れるもの • Lambda 関数のログ • platform に関するメトリック ◦

    メモリの使用量 ◦ コールドスタートにかかった時間 など…… • OpenTelemetry と情報的な互換 ◦ ログに span や trace の ID が付与されている これらの情報を実行環境ごと取れる = Lambda の中身が見える 34
  35. lambda-extension-agent mackerelio-labs/mackerel-lambda-extension-agent Lambda Extension として動く、 Telemetry API から得た 情報を Mackerel

    に投稿するエージェント • AWS インテグレーションと異なり、実行環境ごとホストと して登録 • Extension API を利用して自動退役にも対応 35
  36. 実行環境ごとホストとして登録される様子 36

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

  38. API の購読 ① Extension 登録 Lambda 関数に Layer を追加 し、Extension

    API に所定の リクエストを投げて拡張とし て登録する 38
  39. API の購読 ② Telemetry API 購読 Extension 上で HTTP サーバ

    を立て、Telemetry API に URL を伝える すると、立てたサーバにテレ メトリ情報が送られるように なる 39
  40. 課題 Mackerel のメトリックは 1分粒度 Extension 上で 1分待って rollup している間に 実行環境がスリープしてしまうことも

    集約は外部に任せた方が良さそう 40
  41. 成果 • AWS の新たな機能をキャッチアップできた • AWS Lambda の可観測性を上げられた • production

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

  43. まとめ 43

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

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

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