キュアセブン技術ブログ

考えたこと,学んだことを書きます

はてなブログの実例で学ぶ「はてな流」大規模Webサービス開発の勘所

supporterz-seminar.connpass.com

これにきた.はてなのイベントずっと行きたいと思っていたけど今日になった.講師はmasawada(id:masawada)さん

メモ

はてなのサービス

 

社員118人.ブログチームは東京の方が多い

 

企画とキックオフ

企画を仕様に落とし込む

こよみモード

  • ミーティングを重ねて仕様を検討
  • ひとまずデザインモックを作成
  • ドックフーディングをした

最初は手を動かし過ぎない,なるべく小さい工数で

インセプションデッキ:プロジェクトで確認しておくべきことをまとめておくテンプレート.

プロジェクトの方向性の合意を形成する

予想できる問題点を事前に洗い出す

仕様の判断時のコミュニケーションパスを定める.相談する相手を相談する.

  • 我々はなぜここにいるのか:何のためにチームを組むのか,顧客は誰なのか,プロジェクトが始まった理由は何なのか
  • やらないことリストを作る
  • ご近所さんを探せ:顧客以外の関係者を事前に見定める,仕様を決めるときに相談すべき相手.
  • 夜も眠れなくなる問題は何だろう
  • 期限を見極める
  • 何を諦めるかをはっきりさせる:トレードオフスライダーを書く,スコープ,予算,時間,品質の4点のどれを優先するか

開発

  • 梅案(必要最低限),竹案(いい感じの中間点),松案(作り込みが最大の仕様)を用意する.機能を追加するのは簡単,減らすのは難しい.ひとまず梅,竹を追加する.
  • リリースできる時間を決める:アクセスが多い時間にリリースしない.
  • テストとデプロイをシンプルに,素早くする.:なるべく自動化する.自動化できない場所は手順書を自動生成する.デプロイを高速化し障害の時間を短くする.はてなは結構な頻度でデプロイしている.「はてなブログ デプロイ」で検索
  • リリースアンチパターン:開発の全てを1つのプルリクで作業する,リリース大会場ブランチを作って細かく作業して,最後にマージ
  • リリースパターン:UI以外の部分かr作ってちまちまmasterにマージ,UIをページごと隠して作っておいて最後に動線をだす,HTMLの一部分だけユーザーに隠して開発を行う
  • 常にタスクを分割できないか考える,1日1プルリクくらいまでは細かくできるといい.
  • 撤退は大変.ライブラリなどは撤退が予期できるので見ておく.

KPT(keep problem try)で振り返ろう

アクションプランを立てる会.月に1度全員京都に集合.スプレッドシートで. +をつけて行き多かったものについて議論する.

YWT(やったこと わかったこと 次にやりたいこと)もある.

PGUでサービスの変異を察知する

なぜやるのか:アプリケーションの以上を察知するため.システムの限界を予想するため.障害などの振り返り

1ヶ月ごとに開催.WebアプリケーションエンジニアとWebオペレーションエンジニア.司会は持ち回り.

 

Mackerelおもしろ活用術

サーバー管理.監視ツール.

  • デプロイにかかった時間
  • Pull Request数:エンジニアの忙しさがわかる
  • アップデートが必要なnpmモジュールの数

 

内定承諾も終えて,実際にチームWebアプリケーションプログラミングに生かす気持ちで聞けた.