Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

今日の話 3

Slide 4

Slide 4 text

夢はありますか? 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Mackerel の開発合宿 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

まとめ 43

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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