単にプログラムが動けばいいってもんじゃないと、痛感[reading]

Release It! 本番用ソフトウェア製品の設計とデプロイのために

Release It! 本番用ソフトウェア製品の設計とデプロイのために

理解度:★★☆☆☆
重要度:★★★★★

この本は、いい。とてもいい。

本番に望む前に、心得ておかないといけない知識が多く載っていた。
この本の内容を習得すれば、単に動くソフトから、運用にきちんと乗ることができる素晴らしいソフトが作れるようになるんじゃないかと思った。
理解できていない項目が多々あるが、定期的に見直して、よりよいソフトを作ることが出きるようにしたい

なかなか仕事では全部活かすには、能力もだけど、時間が足りないのが悩みどころだとは思った。。。

読書メモ

メモを書き留めたが、まったく体系的にまとめられていない。

  • まずは、第15勝を読め。設計する前に押さえておかないといけないことが、よくまとまっている。
  • Threadは,難しい
    • 信頼されているlibraryを使うこと
    • テストがやりにくいからできるだけ使わない。
  • Do the simplest thing that well work
  • SLA
    • Service Level Agreement
    • 自社の技術能力と契約がバランスされているか?
  • アンチパターン
    • DBから取得する時に、無制限の結果を取得しないように気をつける
    • SELECTで、TOPやLIMITを活用すること
  • 安定性
    • ログのローテートを忘れないように
  • 不具合発生時の代価手段を準備しておくこと
    • カードリーダが読み取れないなら、キーボードで入力できるようにとか
  • QAから本番へ移行するときのリストをつくろう
    • ホスト名、ポート番号、URL、DB接続のパラメータ、ログファイルの場所の設置
  • JVMの仕組みを押さえる
    • Eden領域
    • Survivor領域
      • New領域
      • Old領域
    • Permanent領域
      • 実際のクラス・メソッド定義
  • Ajaxのレスポンス
  • CSSで色々頑張れよ。table使うなと。
  • Javaでキャッシュを使うときは、SoftReferenceを利用しよう。
    • メモリが少なくなって着たら、GCが回収してくれる。
  • オブジェクトプール
    • オブジェクトの生成の方が早いことが多い。
    • 外部接続とスレッド以外は、GCにまかせてしまおう。
  • 負荷分散のテクニック
    • DNSラウンドロビン
      • アクセスを複数のwebサーバにわけることで、分散されるが、サーバの状態を見ながら負荷分散するわけではないので、微妙。
    • リバースプロキシ
    • ハードウェアロードバランサ
  • システムには透明性を。
    • システムの歴史的傾向が分かるようにする
    • 現在の状態・時間的なステータス・将来の予測ができる
    • DBへの記録(OpeDB)
  • 適応
    • システムの依存関係を小さくする
      • 統合DBは避けよ
      • DBをwebでラッパーするとか代価手段はあるよ。
  • 様々なフィードバックプロセスがある
    • Plan - Do -Check - Act
    • Observe(観測) - Orient(判断) - Decide(決心) - Act(行動)
  • ログファイル
    • 人が読みやすいフォーマットにする
    • ロギングのレベル
      • WARNING:ビジネスのロジックエラー ユーザ入力のエラーなど
      • ERROR : システムの重大なエラー、単にnullをERRORにするな