継続的デリバリー読書会 in 新宿 #1
http://connpass.com/event/404/序文
P31表紙に箸を選ぶ理由
P24
1行書いてコミットして反映されしないとCSSを試せない環境。
P73
コンパイルに時間が掛かるものに関して、安定版のバイナリだけをとって管理するのはいけない?
P74
ClearCaseとは?
trunkはSubversionだけの用語?
P78
MavenやIvyとは?
第1章
本・・・価値の流れ、価値のある
P40 チェックインしたら自動でmake test
静的解析
静的検査 findbugs コードのバグ
build スクリプトの整備
LL系なのでUnitテスト
Erlangもコンパイル
build out -> python setup build -> build
構成管理
TODOの数を出してグラフ化
Jenkisではエラーかワーニングか fix meをbuold失敗扱い
カバレッジ
・コミットチェック
分析 文法エラー
・インストーラーのビルド
rpm -> tar ballにした。
・インストーラのShield
インストーラーのテスト→インストールテスト
・受け入れテスト
Selenium
RSec
中身のソースを確認せずに
・キャパシティテスト
キャパシティテストは難しい
サーバーの電源を押すところからスタート。
NICも自動化。仮想スイッチ。
Jmetter
システム
非機能要件・・ パフォーマンス
「機能」か「性能」で分ける
テストデータを作る
→データ生成スクリプト
仕様を理解してvalidationを考えたテスト
シナリオを作るので2週間くらいかかる。
グラフ構造
最大テスト(リレーション、一番重いデータから)
SNSのテストデータ。
友達セットを作っていく。記事を100人いった
データベースのインデックスが負荷
データベースに結局は負荷 シェルスクリプト
データベースの負荷の知識を得る
O/Rマッパー。ロークエリー
O/Rマッパーのバージョンアップが怖い
下位互換が意識されてない
JOINしまくるのは遅い
クラス生成が・・Pythonは遅い。
→Javaは軽い?
データベースからの転送量が
生SQLのメンテナンス?
Railsは書きたいところだけ生でかける
探索的テスト
→自動化、×モンキーテスト
プロがやる
2割くらいは手でテストのは?作りづらい。
ショーケース:ユーザーに対するレビュー、人間が使ってどうなの? P175
A/Bテスト・・Facebok0.1%でテスト
公式リリース(本番)リリースではない。
ショーケースにうまくかける=完了
ファジング・・・テスト技法
クイックチェック・・・Haskellにある。型がある。Integer。戻り値が予定通りの範囲か?
取り敢えず全部やる。Erlangは商用で高い。
1個くらいあったらそこからシュリンク(小さい部分から)
開発・運用・保守チーム 一緒
シェルスクリプトにする
historyをとる
履歴を取る。
読み上げる。
ダブルチェック
お客さんの文化の問題
P44
ステージングと本番は同じスクリプトで
別の方がマニュアルを作る
開発とデプロイが一緒はやめたほうがいい
→hotfixされてしまう(バージョン管理されない)
新人にやらせない
×お客さんのデータセンター
お客さんのデータセンターだけど、自分でDB設定からできる
受託案件(開発はやりやすい。デプロイ、運用は別の会社)
デプロイはべつ&ドキュメントがしっかりしている
デプロイは自分でできるのがいい。
一人でやると、引き継ぎができない。一生やるなら別が。
→ドキュメントはしっかりやる。
馴れ合いでやってしまう。
コードの品質の改善(エンジニアの教育が)、プロセスの改善
→人の品質を上げるための壁がある、楽はしたい
決済
派遣だけの会社はやりにくい
テキトーにやると怠ける
本番Redhat、ステージングはCentOS
SolarisとOpenSolarisはスレッドの動きが違う
ステージング2台、本番5台
OSのパッケージ
yumで最新になること
ネットワーク設定、専任がないと辛い
スナップショットではなくテンプレート化したほうがいい
スクリプト等を共通にしよう
仮想マシン構成
Vagrant
CloudStack(GUIが綺麗)
OpenStack
Zenサーバ タダ
前のワークを保存する
状態を変更すると辛い
ロールバックは手動のほうがいい?
→自動化が失敗もある
P317
ロールバック小さい範囲で
こまめにやりましょう
ロールバックの訓練
隠蔽してはいけない
こけてもコミットする(レイヤーを分ける)
リリースとデベロップブランチ
pull requestでレビューしてもらい直す。
90超えしないとだめ
Jenkinsで2層、3層でテストする。
テストのチェーンにする。
github
コミットメッセージ
ソスにも入る
プレアルファ、アルファ、でなく常にリリースするようなのを維持
Puppet デプロイ
BCFG, Cfengine, Chef, Puppet, SmartFrog. Orchestration Capistrano, ControlTier, Fabric, Func;
Chef・・デプロイ専用DSLをRubyで書ける。Rails
Fabric・・・PythonでDjango
Azure・・・揮発性のストレージしか無い
スナップショット取る必要がない
テンプレート≠スナップショット
会社的に品質が高いと思ってもらう
居心地のいい環境を作るのは自分だけ
偉くなりすぎるの×、現場で”偉くなる”のが一番早い
予算を握っている。
見てもらう
みんなでコミットしていこう
スクラムマスター
直接口で伝える
Jenkinsは自分のために作った
憧れを作る スーパースターを作る(なる?)
技術より、人を見る目
ちょっとした修正翻訳、オープンソース貢献