勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

DevOps的な非機能要件(運用要件)リスト

The DevOps Handbookで紹介されていた

を読んだら面白かったというメモ。国内ではあんまり取り上げられていないような気もする(もしくは私が不勉強で知らないだけ?)

The DevOps ハンドブック 理論・原則・実践のすべて

The DevOps ハンドブック 理論・原則・実践のすべて

開発部門が下流の作業の状況をフォローし、本番インシデントの解決の作業に参加すれば、アプリケーションは次第に運用にとってよい設計になっていく。さらに、スピーディなフリーとデプロイのしやすさを正面から意識してコードやアプリケーションを設計するようになると、すべての本番サービスに組み込みたいと思う一連の非機能要件が見つかる。
これらの非機能要件を実装すれば、サービスはデプロイしやすく、本番環境で動き続けるようになる。そして、本番環境では、問題を早い段階で見つけ、解決できるようになり、コンポーネントが故障したときには穏やかにグレードダウンできるようになる。そのような非機能要件の例を挙げておこう。
The DevOps ハンドブック 理論・原則・実践のすべて (20.5 非機能要件を体系化して運用にやさしい設計を実現する、より)

The Top Ten DevOps “Operational Requirements”

というわけで元記事を元にメモ。

  1. Documentation
    • ちゃんとドキュメントを書いてくれ。
      • 俯瞰的な概念図
      • 全ての依存関係
      • 全てのエラーメッセージと詳細
      • すべての設定オプション/スイッチ/フラグ/キーなどの詳細
      • (実行状況)計測機能のエンドポイントと期待値
      • 前提条件、デフォルト値など
  2. Robust Regression Test suite
  3. Automation and “scriptability”
    • 自動化とスクリプト化容易性。未サポートでも将来リリースプロセス等をスクリプト化できるようにしておくこと。
  4. Horizontal Scalability (for all tiers)
    • 全階層における水平方向のスケーラビリティ。
  5. “Feature Flags”
    • フィーチャフラッグ(追加機能をフラグで制御できるようにする)
    • コードベースをロールバックせず、ダウングレードを可能とすること。
  6. Configurability
    • 設定容易性。ハードコードなどもってのほかで、正しく設定できるように構築する。
  7. Backward/Forward Compatibility
    • 後方/前方互換性。これはオンライン中でのアップグレードを行う前提となるため。
  8. Code defensively & degrade gracefully
    • 主にサードパーティサービスに対する防御的な実装と、縮退稼動のサポート。
  9. Keep track of the Dependencies!
    • アプリケーションの依存関係が把握され文書化されていること。
  10. Instrumentation
    • (稼動状況の)計測のサポート。アプリケーションの稼働状況がモニタリングできる方法のサポート。

うん、わかるわかる。

技術書「The Art of Monitoring」ナナメ読み

The DevOps Handbookで紹介されていた「The Art of Monitoring」が面白そうだったのでナナメ読みしたメモ。

The Art of Monitoring (English Edition)

The Art of Monitoring (English Edition)

Web-Scale企業(たとえば、GoogleAmazonFacebook)の運用エンジニアたちが開発し、使っている新しいモニタリングアーキテクチャについては、James Turnbullが著書The Art of Monitoringのなかで説明している。
The DevOps ハンドブック 理論・原則・実践のすべて (14.1 一元的な遠隔測定インフラストラクチャの作り方、より)

The DevOps ハンドブック 理論・原則・実践のすべて

The DevOps ハンドブック 理論・原則・実践のすべて

「The Art of Monitoring」読んだ感想。

当初期待していたのはアプリケーションのモニタリングについての抽象度の高い方法論だったのだけれども 、本書はむしろRiemannを中心とした具体的なHowToである。よってこれから構築するシステム、もしくは構築済だがモニタリング機能は手付かずのシステムで、本書で紹介されているプロダクトセット(Riemann,ELK,collectd etc)を用いた監視基盤を構築するのであれば有用だろう。
一方で抽象的な方法論について読みたければ、The DevOps Handbookに本書をベースとした考え方は十分紹介されているのであえて本書を読む必要はないと思う。The DevOps ハンドブック 理論・原則・実践のすべてを読めば十分な印象がある。

なお本書はSafaribooksonlineに登録されているので、下記の方法を取れば購入しなくても読むことができる(できた)。

「The Art of Monitoring」の目次と各章ナナメ読み読書メモ

  • 1 Introduction
    • 興味深い。モニタリングの昨今のトレンドや類別などについて。
    • 「Manual, user-initiated, or no monitoring」>「Reactive(Monitoring)」>「Proactive(Monitoring)」という流れ。
  • 2 A Monitoring and Measurement Framework
    • モニタリングフレームワークについての抽象度の高い話で、こちらもいろいろ参考になる印象。
  • 3 Managing events and metrics with Riemann
    • Riemannの導入方法など。
  • 4 Introducing Graphite and Grafana
    • GraphiteとGrafanaの導入方法について。
  • 5 Host monitoring
    • サーバのデータ収集をcollectdとRiemannで実施し、Graphiteに送信するところまで。
  • 6 Using collectd events in Riemann
    • 5章の収集データを用いた監視の実装と、Grafanaによるモニタリング。
  • 7 Containers: another kind of host
    • Docker固有のコンテナ監視について。Dockerから取れるメトリック+Docker collectdの構成。
  • 8 Logs and logging
    • ログ監視(syslog)を行う。
    • Elasticsearch - Logstash - Kibanaの構成。
    • Rsyslogを使ってsyslog取得。
    • LogstashからRiemann、Graphiteへのメトリクスとイベントの送信。
  • 9 Building Monitored Applications
    • アプリケーションの監視を行うのに、ログだけじゃなくてモニタリングエンドポイントを追加する方法について。
    • アプリにエンドポイントを追加してStatsDで情報収集。
  • 10 Notifications
    • 通知処理のレベルアップについて。コンテキストの追加、メンテナンスとダウンタイムの考慮、クリティカルではない参考情報の追加。
    • GrafanaのScripted Dashboardの活用。
    • Slack/PagerDutyへの出力。
    • Riemannでのメンテナンスイベントのハンドリング。
  • 11 Monitoring Tornado: a capstone
    • 応用編。アプリケーションスタック全体を管理、測定、通知する方法について。
    • Part1として、仮想アプリケーション「Tornado」のWeb層のモニタリングを設定する。
    • HttroxyやNginxの情報を取り扱う方法。
  • 12 Monitoring Tornado: Application Tier
    • 応用編の続き。仮想アプリケーション「Tornado」のAP層のモニタリングを設定する。
    • JVM監視、ログ収集、アプリ自体のヘルスチェック(APIに仕込む)など。
  • 13 Monitoring Tornado: Data tier
    • 応用編の続き。仮想アプリケーション「Tornado」のDB層のモニタリングを設定する。そして統合ダッシュボードを組む。
    • collectdでmysqlとredisからデータを収集する。
    • Grafanaで「Tornado」ダッシュボードを構築する。
  • 14 An Introduction to Clojure and Functional Programming
    • Riemannのカスタマイズに用いるClojureの説明。

英語技術書を機械翻訳で読みまくる方法

ふとしたキッカケで英語技術書を機械翻訳で読みまくれる環境を整備したら非常に快適になったのでご紹介。要約すると、定額制無制限の書籍サイトに加入して、バルクでGoogle翻訳をかけてざっくりと技術書を読む方法について。

https://www.flickr.com/photos/62277986@N00/2904221707

これまでの英語技術書読書環境の問題点

というわけで原著(洋書)をコピペラブルな状態で購入できないの?
と考えていろいろ調べたところ、予想外に有用な方法が判明したのだった。

SafariBooksOnlineが予想以上に優秀

さて、いろいろと調べてみると現在米オライリーは単品での電子書籍の直販は行っておらず、定額読み放題のサービスをメインとしているようだ。

なるほど。というわけでさっそく SafariBooksOnlineを調べてみると、有料ながら

というわけで超優秀なのである。

費用の問題

ところがSafariBooksOnlineはコンテンツが充実している一方で、お値段は相応である。月額39$、年額399$とちょっとお高い。

が、いろいろ調べてみると様々な学会などの会員サービスとして利用するという裏技があるのである。例えばACMの会員になれば年額99$で無制限にアクセスできる。これは安い!(なお、過去には利用方法に制限があったようだが、現在はフルサービスが利用可能のようだ)

追記:会員特典としてO'Reilly Online Learningが利用できるオプションは2022/7/1からは利用できなくなります

まとめ:英語技術書を機械翻訳で読みまくる

というわけでまとめると

  • ACM会員登録して得点のSafariBooksOnlineアクセス権をゲット
  • Chromeでアクセスして機械翻訳

で、読みまくる環境を実現することができる。これで、PCからでもモバイルからでも好きなだけ最新の技術書を読むことが可能である。
興味を持ったらまずSafariBooksOnlineで無料トライアルを試したあと、そのアカウントは捨ててACM会員登録するのがオススメである。

で、最近何を読んでるかというと

いったん読み終わって

現在はこちらの本を読んでいる

いやあ、良い世の中になったものだ。

Postmortem Culture: Learning from Failure(Site Reliability Engineering Workbookつまみ食い#2)

引き続き、「The Site Reliability Workbook: Practical Ways to Implement SRE」をつまみ食い中。今回は同書の「Chapter 10. Postmortem Culture: Learning from Failure」に関して。ポストモーテムなんて言葉は数年前までまったく聞いたことがなかったのだけれども、自分のまわりでは最近急速に定着しているような気がする。ちなみにポストモーテムとは、障害の事後分析のことである。あるいは検死解剖。

The Site Reliability Workbook: Practical Ways to Implement SRE

The Site Reliability Workbook: Practical Ways to Implement SRE

  • 作者: Betsy Beyer,Niall Richard Murphy,David K. Rensin,Kent Kawahara,Stephen Thorne
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2018/08/04
  • メディア: ペーパーバック
  • この商品を含むブログを見る

ポストモーテムについて

原典はおそらく以下の記事だと思われる

ポストモーテムは、インシデントとそのインパクト、その緩和や解消のために行われたアクション、根本原因(群)、インシデントの再発を避けるためのフォローアップのアクションを記録するために書かれるものです。
SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム 15 章 ポストモーテムの文化:失敗からの学び

他には以下の記事がわかりやすい(原文は英語だけど、postdで翻訳されている)。

The DevOps ハンドブック 理論・原則・実践のすべて」ではポストモーテムは、「非難なしのインシデント後レビュー(blameless post-incident review)」とか「事象発生後のレトロスペクティブ(post-event retrospective)」などとも呼ばれているものである。

蛇足だけど、上記ブログポストの筆者danluuさんがネットで読めるポストモーテム集をgithubに公開しているようだ。

Postmortem Culture: Learning from Failure

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム」ではポストモーテム概論(15章)とポストモーテムの実例1つ(付録D)の記載があるが、「The Site Reliability Workbook: Practical Ways to Implement SRE」では具体的なケーススタディ(悪いポストモーテム、良いポストモーテム例)、具体的に良いポストモーテムを書くためのテンプレートやチェックリストに言及されていてより実践的なものとなっている。

以下、「The Site Reliability Workbook: Practical Ways to Implement SRE」で新たに紹介されている各種リソースが有用そうだったので備忘的にピックアップ。

ACM Professional Membershipの登録

思うところがあって、ACM Professional Membershipに登録したメモ。ACMチューリング賞などで有名な米国の計算機学会。会員になると学会誌Communications of ACM (CACM)が読めたり、論文や様々な情報にアクセスしたり、特典としてSafari Books Online でO’Reillyの書籍(英語)が読み本題になったりする。年会費は99$。

追記:会員特典としてO'Reilly Online Learningが利用できるオプションは2022/7/1からは利用できなくなります

登録方法メモ

  • Association for Computing Machineryから、Join > Online Forms > Professionals
  • 必須項目を中心に入力
    • First Name, Last Name
    • Address関連 (Postal Codeはハイフンを抜いて記入)
    • Contact Information関連(電話番号は+81で登録)
    • Professional Member Profile(年齢、性別、主要な職業、職位Job Title、所属Affiliation)
    • Membership Optionは単純な「Professional Membership」で良い(ACM Digital Libraryはいらないと思う)
  • Continueすると、いろいろオプションを追加できる見積もり画面になるが、特にオプションは追加しないで決済に進む
  • 自分はPaypalを使ったけれど、カード決済もできそう
  • 決済が終わったら登録完了
  • その後、Create Web Accountに進む
    • 先ほど登録したメールアドレスを入力すると、アカウント作成画面になる
    • パスワード等を登録。アカウント名は自動生成されるようだ(もしかしたら好きなIDに変更出来たかも)
    • 登録が終わったら、自分のメールアドレスにConfirmメールが届くので、リンククリックで完了
  • これで完了、アカウント名@acm.orgの転送専用メールアドレスが作成される

Safari Books Onlineの利用

PagerDuty Incident Response Documentationが良さそう(Site Reliability Engineering Workbookつまみ食い#1)

前回の記事で紹介した「The Site Reliability Workbook: Practical Ways to Implement SRE」が気になるので、興味があるところから適当に読んでいる。

The Site Reliability Workbook: Practical Ways to Implement SRE

The Site Reliability Workbook: Practical Ways to Implement SRE

  • 作者: Betsy Beyer,Niall Richard Murphy,David K. Rensin,Kent Kawahara,Stephen Thorne
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2018/07/25
  • メディア: ペーパーバック
  • この商品を含むブログを見る

今回は同書の「Chapter 9 Incident Response(インシデント管理)」を読んだのだけれども、その中で紹介されているPagerDuty Incident Response Documentationがかなり有用そうな印象。

前作「SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム」にも同様の章があったのだけれども、続編となる本書では具体的なケーススタディ(良いものと悪いもの)を中心にまとめられている。ケースは基本的にGoogleの障害だが、4例のうち1例だけ、表題のPagerDutyの事例になっている。加えて同社はなんと、インシデント対応に関する社内教育文書をネットに公開しているというのだ。

というわけでざっと(Chromeの翻訳機能を使いながら)読んだ見たのだけれどもかなり興味深い。ドキュメントのソースもgithubで公開されているので流用することもできそうだ。

蛇足

無料公開されたSite Reliability Engineering Workbookが面白そうなので目次を機械翻訳

SREを実践するための手引きとなる書籍「Site Reliability Engineering Workbook」をGoogleが無料公開、8月23日まで - Publickeyで知ったのだけれども、以前に読んで大変参考になった「SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム」の続編「The Site Reliability Workbook: Practical Ways to Implement SRE」が無料公開中だ。もちろん続編は英語のみ。

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

The Site Reliability Workbook: Practical Ways to Implement SRE

The Site Reliability Workbook: Practical Ways to Implement SRE

  • 作者: Betsy Beyer,Niall Richard Murphy,David K. Rensin,Kent Kawahara,Stephen Thorne
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2018/07/25
  • メディア: ペーパーバック
  • この商品を含むブログを見る

無料なのは大変ありがたいのだけど前作同様に大著でハジから読むのはちょっと骨が折れそう。せめて目次だけでも日本語で読みたいと思ったので少し調べてみたら、Safari Books Onlineで目次は全部公開されていたのでGoogle翻訳にかけてみた。十分読める翻訳になっているようだ。
というわけで、気になる章から読んでみようかと思っている。