狠狠撸

狠狠撸Share a Scribd company logo
YAPC::Hokkaido 2016 SAPPORO
YAPC::Hokkaido 2016 SAPPORO
10年モノ熟成笔别谤濒との付き合い方
2016/12/10
アイランド株式会社
中川 勝樹 (@ikasam_a)
YAPC::Hokkaido 2016 SAPPORO
自己紹介
? 中川 勝樹
? アイランド株式会社 (2016/07/01-)
? @ikasam_a
? github.com/masaki
? metacpan.org/MASAKI
1
YAPC::Hokkaido 2016 SAPPORO
会社紹介
2
www.ai-land.co.jp
YAPC::Hokkaido 2016 SAPPORO
アイランドのライフスタイルメディア
3
「おとりよせネット」
otoriyose.net
「レシピブログ」
recipe-blog.jp
YAPC::Hokkaido 2016 SAPPORO
We’re hiring!
? エンジニア募集しています!
4
https://www.wantedly.com/projects/72445
YAPC::Hokkaido 2016 SAPPORO5
YAPC::Hokkaido 2016 SAPPORO
Food Service Engineers Meetup (ロゴ募集中)
6
YAPC::Hokkaido 2016 SAPPORO7
「おとりよせネット」
otoriyose.net
「レシピブログ」
recipe-blog.jp
13年 11年
YAPC::Hokkaido 2016 SAPPORO8
over 10 years
YAPC::Hokkaido 2016 SAPPORO9
Language < System
YAPC::Hokkaido 2016 SAPPORO
レシピブログのシステム概要
? FastCGI (Perl 5.10 + 独自WAF)
? Apache 2.2
? PostgreSQL 9
? Elasticsearch
? File Cache + memcached (2016/10~)
? CloudFront
10
YAPC::Hokkaido 2016 SAPPORO
おとりよせネットのシステム概要
? CGI (Perl 5.10)
? Apache 2.2
? PostgreSQL 9
? File Cache / Page Cache
? + CloudFront (2016/11~)
11
YAPC::Hokkaido 2016 SAPPORO
技術?設計課題
? 利用技術の陳腐化
? CGI、FastCGI、…
? 開発環境や開発プロセスの停滞
? 「運用でカバー」
? そろそろモノリシックの規模も課題に
12
YAPC::Hokkaido 2016 SAPPORO
熟成した問題
? 独自WAF利用とその聖域化問題
? メンテナンスやアップデートが行き届かず
? 手の入れ方がわからず運用でカバー
? 秘伝のタレ化
? 掃除不足によるゴミ屋敷問題
? 不要なソースコードが残ったまま
? 不要なファイルが残ったまま
? 次第に影響範囲が不明になり消せなくなるパターン
13
YAPC::Hokkaido 2016 SAPPORO
どう向き合うか?
? 背景を理解する
? 事実を把握する
? 改善する
? 革新を起こす
14
YAPC::Hokkaido 2016 SAPPORO
背景理解
? とにかくコードを読む
? (個人的に)Perl でよかった
? 疑問や経緯はわかるまで全部聞く
? 今目の前にある事象は、過去の決定の積み重ね
? 当時は何らかの意図や判断が必ずある
? 「システムに歴史あり」
? ここまで事業を支えてきた事実をリスペクトする
? その上で諦めてきたことを知ろう
15
YAPC::Hokkaido 2016 SAPPORO
事実把握
? ログをどんどん出す
? 手がかりは多く、余れば後で捨てるだけ
? carp, croak → cluck, confess
? $logger->warn($@)
? リソースを監視する
? 推測するな、計測せよ
? CloudForecast 入れるところから始めた
16
YAPC::Hokkaido 2016 SAPPORO
[改善] WAFの改修
? コードを読んだ結果、普通に改修可能になった
? (個人的に)Catalyst ライクな WAF でよかった
? 運用でカバーしていた部分が根本的解決へ
? 結果、コード自体もシンプルでスリムに
17
YAPC::Hokkaido 2016 SAPPORO
[改善] パフォーマンスチューニング
? ログとリソースグラフのおかげ
? ログに DB の max connection エラーを発見
? DB チューニングで max connection 確保
? まだ HTTP リクエストがタイムアウトしてた
? TCP connection / HTTP がある値で頭打ちになってた
? ServerLimit, MaxClients 周りを設定
? 残るは DC 帯域が…(共用なので)
18
YAPC::Hokkaido 2016 SAPPORO
[改善] TV露出の対応
? TV (地上波) で取り上げられると即死(30分落ち)
? 「来週ヒルナンデスに出ます」という死の宣告
? 画像が豊富でページ当たりの転送量が…
? とりあえず CloudFront 載せよう
? アセットが世代管理されてないからキャッシュが…
? mod_ext_filter っぽいのを書いた
? CGI プロセスが膨大に…
? SpeedyCGI (!) を引っ張りだした
? 参照系はことごとく静的に HTML 化
19
YAPC::Hokkaido 2016 SAPPORO
[革新] AWS導入
? 抜本的に環境を変える
? 改善だけじゃ解決しきれない問題もある
? ついでに残った問題も解決する
? ドサクサに紛れて色々仕込む
20
YAPC::Hokkaido 2016 SAPPORO
[革新] システムリプレース
? 抜本的に(ry
? ついでに(ry
21
YAPC::Hokkaido 2016 SAPPORO
なぜ革新なのか
? ワクワク感が出る
? 楽しさはモチベーションの源泉
? 「やるからには面白く、工夫して」? 2016 @ikasam_a
? 本当は色々狙ってる
? 大きな変化を伴わないと解決できない問題に向き合う
? 今ある他の課題も一緒に解決できる方法を考える
? 両立できる施策をしれっと狙う
? 理想(革新)だけ追っても色んな意味で難しい
22
YAPC::Hokkaido 2016 SAPPORO
まとめ
? アイランドではおやつにローストビーフが出ます
? 10年過ぎると色んなところに地雷がありますが、こうなる
に至った当時の判断背景が必ずあります
? ここまで継続させてきた先駆者の実績をリスペクトしま
しょう
? 背景を理解した上で事実を知れば、どうやって対応して
いけばよいのか見えてきます
23

More Related Content

10年モノ熟成笔别谤濒との付き合い方