茨城県つくばみらい市から来ました

プログラマーになるために生きています

ミッションクリティカル・ハイパフォーマンスシステムにおける技術統合と運用と勘所

  • こしばとしあき
    • 広告配信サービスにおける(以下略
  • システム
    • スマートフォンむけクリック課金型アドネットワーク
    • Zucks アドネットワーク
  • 2013年7月新システムにフルリプレース
    • ズゴック
      • Zucks
      • Global
      • Online
      • Koukoku
    • リアルタイムレポート
    • 莫大な配信ボリューム
    • 無停止メンテナンス
    • 柔軟な改修対応
  • 3つの軸
  • インフラ
    • ほぼ AWS
    • DNS と CDN は他の業者
      • DNS、CDN は以前から利用している業者を使っている
    • 鉄板の富豪構成パターン
      • Multi Load Balancer
      • Multi Datacenter
      • Multi Server
    • 作業の要素が皆無
      • 手順書だよりの運用になる
    • Stack Deploymentパターン
      • CloudFormation
    • システム開発や運用保守においては、テスト環境はステージング環境を準備するのが一般的である。これらの環境は常時利用するものではないので(ry
    • テンプレート + CLI
    • テンプレから変更が少ないネットワーク部分をまず構築
    • 次に CLI でネットワーク上に置く変更激しいものを設置
    • 富豪構成らくらく実現
    • インフラまとめ
      • 変更怖い
      • テンプレ化で脱手順書
      • クイックな変更の考慮
  • アプリケーション
    • 配信
    • 計測、管理画面
    • 開発環境自慢
      • テストコード
      • Pull Request 運用
      • CI
      • ワンクリックデプロイ
        • Zgok コマンド
        • どの種類の AP サーバでも
          • Zgok stop|start
        • 一発でいい
      • 本番同等検証環境
        • 完備!
    • 夜も寝れない
      • サービス停止
      • 配信できない
      • 計測できない
      • 多少バッチが遅れたりするのは別にかまわん
      • 勘所3つ
        • ぼっちで動く
          • AP にバック(S3)のクリエイティブのデータとかをキャッシュしてる。後ろが死んでもぼっちで動く。
        • レスポンスだけ返す
          • 薄い AP
          • fastcgi_finish_request
          • AP のアクセスログ出力
          • 別プロセスで
            • フロント AP がはいたログをバックが読んで DB に書き込む
            • Fluentd でやってる
          • 事実上リアルタイム処理
          • パフォーマンス調整
          • 自動リトライ
          • 手動リカバリー容易
          • PHP をやめるパターンもあった
            • JVM アプリケーションにしたらレスポンスが3倍早くなった
            • ただし、PHP の良さは全部なくなる
            • 早すぎる最適化にならないように
      • AP に頼らない
        • Optional で富豪的解決
          • スピードは金で買う
          • スケールアウト+スケールアップ
  • モニタリング
    • だいたい鉄板
      • fluentd でログ収集
      • GrowthForecast で可視化
    • Fluentd
      • ログ集約
      • HTTP ステータス集計
    • GF
      • グラフの事前定義が不要
    • Xymon(Hobbit)
      • クライアントからPush
      • Fluentd のデータも扱いたい
      • Xymon でサーバに TCP でメッセージ投げ
      • fluent-plugin-xymon
        • 自分で書いて gem においてあるのでコミュニティが作った体でプロダクションで
    • 手軽に計測
    • 手軽に監視
    • 足らんなら作って公開
  • このようなしすてむで PHP が活躍するのは
    • どこでも
    • あなたがそれで良い選択だと評価できるならば
  • PHP を含めて様々な技術要素をシステムとした場合
    • 自分たちで検討して、動かして、測定して、評価する。
  • 新しい事業を展開
  • もっとシンプルに、もっと高速に、もっと構成要素を少なく
  • 変わり続けることが安定
  • 暁の水平線に勝利を刻め

しつもん

  • AWS のハマりどころ
    • なんか負荷が上がる、なんか遅い時がある
  • zgokコマンドについて, 自分の role はどうやって判断している?
    • プロビジョニングするときに symlink を切り替えている