SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Principles of Transaction Processing
                     Second Edition
                           7章 1, 2節	
  




          筑波⼤大学	
  ⼤大学院	
  ビジネス科学研究科	
  経営システム科学専攻
                                             斎藤	
  祐⼀一郎	
  
7.1 異常発⽣生時	
  

                        pp.185   188	
  




2	
     Yuichiro Saito	
  
7.1 システム異常発⽣生 - 1	
  
    ⾼高可⽤用性が求められるシステム … 24 by 7
     (⽇日本だと、24-365等と⾔言います)
    可⽤用性を左右する2つの要因
         MTBF – 平均故障間隔
         MTTR – 平均回復時間
         可⽤用性の指標(稼働率) = MTBF / (MTBF+MTTR)
          ※これが99.9%だったら、99.999%だったら…と。
    SLA, 応答時間, スループット	
  を満たせば充分という
     訳ではない。障害をいかに回復させるかに焦点を当
     てて議論する。


 3	
                         Yuichiro Saito	
  
7.1 システム異常発⽣生 - 2	
  
    障害の要因は、次のように分類できる。
         環境: 電⼒力力・通信・空調・⽕火災・洪⽔水などの取り巻く物理
          的環境からの影響。
         システム管理: システムを運⽤用し、問題に対して予防保守
          をしていくために、どのようにすべきか。
         ハードウェア: CPU, RAM, I/O, ストレージ等。
         ソストウェア: OS, 通信, DB, TPM, その他システムソフ
          トウェア, およびアプリケーションソフトウェア。

    時間があったら実例を話します。



 4	
                        Yuichiro Saito	
  
7.1 物理環境 -1	
  
       通信 – 回線の多重化で対処
       電源 – バッテリバックアップ(UPS), 発電機
            UPSにより、短時間の障害を無停⽌止で切り抜けられる。
            UPSにより、突然のシャットダウンからシステムを守り、安全な
             休⽌止とその後の復帰を迅速にする。
            発電機を⽤用いれば、⻑⾧長時間の電源障害からも保護できる。なお、
             発電機起動時の中継ぎとしてUPSを使⽤用する。
            おまけ: 発電機がつながっている電源で、停電時に⾃自⼒力力で中継ぎ
             をしなければならない電源をB電源、そうする必要がない物をA電
             源ということがあります(これらはNTT⽤用語みたいです)。
       空調 – 完全空調が前提の場合、冗⻑⾧長化が必要。
       地震 – 耐震, 犯罪 – 不正侵⼊入防⽌止, ⽴立立地 – ⾏行行き来・防衛コスト
        のバランス
       ミッションクリティカルなシステム – ⾦金金融, 運送業などは、並
        外れた⽔水準で適⽤用。航空会社のシステムは地下室にある(らし
        い)。	
  	
  

     5	
                       Yuichiro Saito	
  
7.1 物理環境 - 2	
  
    理想は、システムのレプリカを作る(Disaster
     Recovery – DR)ことである。
         カリフォルニアの銀⾏行行では、サンアンドレアス断層が元
          となる災害が起き、ロスかシスコのどちらかで事業継続
          が出来る。
         おまけ1: ⽇日本だと、地震によるDRは30km離れていれば
          ば充分なので、東京と横浜・⼩小⼭山という形にしている所
          があります。ただし、電⼒力力問題は別。
         おまけ2: 業務⾃自体がDRできていないと、システムだけ
          DRしても意味はありません。これがDRP。
         データレプリケーションについては、9章で詳解。	
  



 6	
                      Yuichiro Saito	
  
7.1 システム管理	
  
       優秀なシステム管理者であっても、システム障害をたまに起
        こしてしまう。
       管理の⾃自動化。
            メンテナンスをそもそもやらなくてもよいようにする。
            予防保守が、ダウンタイム発⽣生の元となる事がある。
       保守⼿手順の簡略化も有効。
            ソフトウェアのインストールは、多くの場合失敗の元である。再
             起動を要しない⼿手順は、信頼性を向上させる⼀一つの⽅方法(Windows
             を使わないとか :-p)。
       多くの操作エラーは、システム再構成時に起きる。
            事前にテストシステムでテストする事で、確認する。
            元に戻せる⼿手順を作っておくこと。
       24-365である必要がない場合、停⽌止時間に作業をスケジュー
        リングする。
       しかし、ダウンタイムが必要となるシステムは、ベンダーの
        視点から⾒見見ると、顧客を絞ってしまう。
     7	
                        Yuichiro Saito	
  
7.1 ハードウェア	
  
    ハード障害には、⼀一時的な物と恒久的な物がある。
    たいていは⼀一時的な物。再試⾏行行の機会があるから、
     リカバリ⼿手順を作成し復帰させればよい。
         OSに起因するディスクI/Oエラー
         ネットワーク通信
    永続的な障害により、最も深刻なのがシステム全体
     がダウンする事である。
         再起動で戻る場合もある。
         ダメな時は、ディスク障害の事がほとんど。
         それでもダメな時は、修理。	
  



 8	
                     Yuichiro Saito	
  
7.1 ソフトウェア - 1	
  
       最も深刻な物はOSのクラッシュ。
       たいていは⼀一過性だから、再起動すれば済む。再起動は
        次のものも同時に再起動される。
            分散システム内の他のシステムとの通信セッションの回復
            アプリケーションプログラムの再起動
            不整合が発⽣生したディスクの修復
       こういったものは、MTTR低下をもたらす。早くできる
        ようになる事がよい。
            OSベンダーは、90年代に⾼高速な回復のためにファイルシステ
             ムリカバリ⼿手順を組み込んだ。
       ⼀一部のOSは⾼高速起動に慎重を期した設計をしている。
            ⾼高可⽤用性の通信システムは、最悪でも分単位で回復。
       究極的には、回復時間は0なのなら、ユーザはその事を
        関知する必要は無い。

     9	
                     Yuichiro Saito	
  
7.1 ソフトウェア - 2	
  
    ⼀一部のソフトウェアの障害は、それは問題が発⽣生し
     たのではなく、性能低下を意味する事がある。
         リモートサービスへのアクセスの例。
         (雑に作れば?)通信機能は使えないが、慎重に設計してい
          れば他の機能はまだ動作するかもしれない。その状態が
          システムの性能低下を意味する。
         事例 - DWHのシステムがミッションクリティカルではな
          かった→失敗時に、全システムがデータを利⽤用できなく
          なり損失を被った。
    アプリケーションやデータベースに障害が発⽣生する
     か、検出して回復できるようにしておく必要がある。
     TP固有技術が関与する所である。	
  

 10	
                    Yuichiro Saito	
  
7.2 システムリカバリのためのモデル	
  


                                     pp.188   194	
  




11	
                 Yuichiro Saito	
  
7.2 プロセス異常発⽣生を捉える - 1	
  
      OSとアプリケーションのプロセスは分離・保護されている。
       そのため、プロセス障害のみを回復すればよいので、多くの
       TPシステムは多数のプロセスから成っている。
      問題が発⽣生したとき、プロセスを再作成するようにしなけれ
       ばならない。それはOS, DB, またはTPMによって⾏行行われる。
      これらの多くは、プロセスが失敗した時の追跡または監視の
       プロセスを持っている。これには次の3つの⼿手法がある。
             Fig7.1: 各プロセスは、監視プロセスに対し定期的に⽣生存通信を
              ⾏行行う(keepalive, heartbeat)。これが無いとき、可能な限り障害で
              あると警告する。
             監視プロセスが、各プロセスに⽣生存確認を求めるメッセージを発
              し、ポーリングする(heartbeat)。
             ロックと関連し、プロセスが失敗した時にOSの監視プロセスから
              発せられるメッセージを受理し、ロックと関連したプロセスを解
              放する。
      MTTRを最⼩小化する⽅方法を選択する事が重要。	
  


     12	
                            Yuichiro Saito	
  
7.2 プロセス異常発⽣生を捉える - 2	
  
    しかし、この検出⽅方法は実際に失敗したかの確認を
     保証する物ではない。
         Keepalive の⽅方法では、単に応答が遅いだけかも。
         ロックの⽅方法では、動作可能なロックをリリースしてい
          るだけかも。
    同じOS上で監視していると、誤検知しやすくなる。
     が、本章ではこの件は正しいと仮定して議論する。
    監視プロセスが別のマシンで動いている分散システ
     ムでは、障害現象は通信障害ではなくプロセス障害
     である事が原因である事が⾼高くなる。これは8,9章
     で議論する。

 13	
                     Yuichiro Saito	
  
7.2 プロセス異常発⽣生を捉える - 3	
  
    プロセスは不正な値を返す事で失敗する事がある。
         メモリ障害
         通信障害
         アプリバグ
    今回は、このようなエラーは考慮しない。⼀一般的な
     システムのメカニズムを使⽤用して、これらは排除す
     る事が出来ない。ソフトウェア⼯工学に譲る。
    プロセス障害検知時、⼀一部エージェントではプロセ
     ス再作成を⾏行行う必要がある。OSは基本的にそう⾔言う
     事はやってくれない。	
  


 14	
               Yuichiro Saito	
  
7.2 クライアントのリカバリ - 1	
  
      クラサバでは、クライアントがサーバとそれに紐づく
       ネットワーク・ディスクを⽤用いてやり取りをしている
       (Fig 7.2)。
      このシステムに置ける障害点
             クライアント
             通信
             サーバ
             サーバリソースの接続
             リソース
      復帰⽅方法は、たいてい再試⾏行行・再接続。復帰には次の事
       項を決定する必要がある。
             失敗時、未処理だった呼び出しは何か?
             通信できなかった事によって起こる事は何か?
             新規呼び出しを⾏行行う前に、事前に何をすれば適切な状態に持っ
              て⾏行行けるのか?

     15	
                     Yuichiro Saito	
  
7.2 クライアントのリカバリ - 2	
  
    この話題は、4章で説明した「キュートランザク
     ションの処理」に通づる。
         サーバ・クライアントに永続的キューがある場合、どこ
          まで処理したかをシリアル番号ベースで照らし合わせ、
          処理できなかった所から再開する。
    残りの問題は、次節に。




 16	
                  Yuichiro Saito	
  
7.2 サーバのリカバリ	
  
      サーバが再作成された後、新しいコールを始める前にリ
       カバリ処理を⾏行行う。初回起動なら初期化処理のみだが、
       そうでない場合はどうするか。
             サーバは直列処理である…トランザクションは無い。単に要求
              を受信し、結果を返す。これが失敗した時に、それはサーバの
              呼び出しの途中だったとも考えられる。
             その状況を判断できるのはクライアント次第である。
             残念な事に、サーバが冪等とならない処理をしている場合があ
              るため、常にうまく⾏行行くとは限らない。従って、⾮非冪等となる
              処理は実⾏行行しないようにしなくてはならない。
      部分的に実⾏行行される、呼び出しの回復処理は複雑であり、
       ⼀一般的にトランザクションをサポートされるシステムで
       は⽤用いられない。
      トランザクションが利⽤用可能である場合はとても簡単に
       できるのだが、そうでない場合はどういった場合がある
       か、調べてみましょう。
     17	
                     Yuichiro Saito	
  
7.2 チェックポイントを⽤用いたリカバリ	
  
      サーバがクライアントからの呼び出しを実⾏行行し、失敗し
       たと仮定。
      多重呼び出し時に冪等性が担保される操作を実⾏行行出来る
       とすると、復旧時は単に最初のメッセージから全て再実
       ⾏行行すればよい。
      冪等性が担保されない場合、⾮非冪等となる操作まで処理
       を回復させなければならない。
             こう⾔言った処理を実⾏行行する前に、状態を不揮発性記憶装置に保
              存する。そうすれば、回復時に状態を再作成できる(Fig 7.3)。
              これがチェックポイント。
             しかし、毎度毎度やると処理コストは安くない。それを容易に
              するのがトランザクション。
             サーバ回復時、最後に成功した処理までチェックポイントを復
              元(Fig 7.4)。すなわち、⾮非冪等操作が実⾏行行されているかどうか
              を確認する必要がある。


     18	
                        Yuichiro Saito	
  
7.2 トランザクションベースサーバのリカバリ	
  
      トランザクションは、サーバの復旧を簡素化する。
      トランザクションをサポートするサーバに障害が発⽣生し、
       その後に回復した場合、その内容には障害発⽣生時に稼働
       していた全てのトランザクションの効果(内容)が含まれ
       ている。
      ⾮非トランザクションサーバ…チェックポイントとの⽐比較。
             チェックポイントを常にコミットしているような感じ。
             リカバリ⼿手順は未完のトランザクションを破棄している。
             すなわち、回復時は失敗として扱われ、回復出来ないとダメ。
      これなら、⾮非冪等である場合でも、やり直しても問題は
       出ない。チェックポイントベースのリカバリ⽅方法の問題
       はこれで解決可能。

     19	
                    Yuichiro Saito	
  
7.2 トランザクションベースサーバのリカバリ	
  
      しかし、どうしても冪等性を担保できない物がある。
             ⼩小切⼿手の印刷
             お⾦金金の送⾦金金
             まあ、物理的な作業を伴うものはほとんどでしょう。
      こう⾔言った物はキューイングで処理する。4.4節の技を
       うまく使ってやること。
      トランザクションのみでは復旧は簡素化しないが迅速に
       はする。メモリチェックポイントは⾼高価だが、トランザ
       クションは安価である。
             このトリックはメモリにバルクコピーを避けてログファイルに
              蓄積している事である。
             障害時、ログを使⽤用してディスクからメモリの状態を再構築す
              る。
             All or Nothing という形にはしない。⼀一時的な障害にも耐えう
              る構造である。

     20	
                         Yuichiro Saito	
  
7.2 ステートレスなサーバ - 1	
  
      トランザクションを使⽤用している場合、2タイプにサーバ
       は分かれる(Fig 7.5)。
             要求を受け取る→トランザクション開始→アプリケーションプ
              ロセスが処理実⾏行行→トランザクションリソースマネージャに
              メッセージ送信
                  直接DBは叩かない。回復可能なキュー等で共有されている。
             リソースマネージャは先節で解説したトランザクションサーバ
              と同じ動きをする。
             アプリケーションプロセスはステートレスであり、復帰時には
              「状態」を持っていない。従って、復帰後は「さら」から実⾏行行
              する形でかまわない。復帰のためのプログラムを書く必要も無
              い。
             トランザクションリソースマネージャが、状態を持つ。
      しかし、最後に実⾏行行した状態をどのように扱うかは曖昧
       なままである。
             そこでキューの出番。キューとして処理すれば、解決する。	
  

     21	
                          Yuichiro Saito	
  
おわり	
  




22	
     Yuichiro Saito	
  

Weitere ähnliche Inhalte

Andere mochten auch (19)

Ретроника
РетроникаРетроника
Ретроника
 
2012.07.02新聞剪報
2012.07.02新聞剪報2012.07.02新聞剪報
2012.07.02新聞剪報
 
Ступени
СтупениСтупени
Ступени
 
Tajna je razotkrivena: trovanja GMO hranom
Tajna je razotkrivena: trovanja GMO hranomTajna je razotkrivena: trovanja GMO hranom
Tajna je razotkrivena: trovanja GMO hranom
 
necoze自己紹介2012@ネコ御殿HCD×Game LT大会?
necoze自己紹介2012@ネコ御殿HCD×Game LT大会?necoze自己紹介2012@ネコ御殿HCD×Game LT大会?
necoze自己紹介2012@ネコ御殿HCD×Game LT大会?
 
자료구조 Project5
자료구조 Project5자료구조 Project5
자료구조 Project5
 
Α2 Τα Ολύμπια
Α2 Τα ΟλύμπιαΑ2 Τα Ολύμπια
Α2 Τα Ολύμπια
 
Cinco novas atualizações do facebook que as organizações sem fins lucrativos ...
Cinco novas atualizações do facebook que as organizações sem fins lucrativos ...Cinco novas atualizações do facebook que as organizações sem fins lucrativos ...
Cinco novas atualizações do facebook que as organizações sem fins lucrativos ...
 
Oceanic bliss
Oceanic blissOceanic bliss
Oceanic bliss
 
ფრენბურთი მაიკო
ფრენბურთი მაიკოფრენბურთი მაიკო
ფრენბურთი მაიკო
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4
 
Rodolfo Fücher
Rodolfo FücherRodolfo Fücher
Rodolfo Fücher
 
Zaragoza
Zaragoza Zaragoza
Zaragoza
 
Segundo paso instructivo1
Segundo paso instructivo1Segundo paso instructivo1
Segundo paso instructivo1
 
Taller fotografia - Grup Laia 4t A
Taller fotografia - Grup Laia 4t ATaller fotografia - Grup Laia 4t A
Taller fotografia - Grup Laia 4t A
 
E-book MBV 3
E-book MBV 3E-book MBV 3
E-book MBV 3
 
Ling
LingLing
Ling
 
E-book MBV 2
E-book MBV 2E-book MBV 2
E-book MBV 2
 
Módulo 1 - O Trabalho Voluntário
Módulo 1 - O Trabalho VoluntárioMódulo 1 - O Trabalho Voluntário
Módulo 1 - O Trabalho Voluntário
 

Ähnlich wie Principles of Transaction Processing Second Edition 7章 1, 2節

オープンソース統合運用管理ツール『Hinemos』 --- その利便性及びインシデント管理について ---
オープンソース統合運用管理ツール『Hinemos』  --- その利便性及びインシデント管理について ---オープンソース統合運用管理ツール『Hinemos』  --- その利便性及びインシデント管理について ---
オープンソース統合運用管理ツール『Hinemos』 --- その利便性及びインシデント管理について ---Open Source Software Association of Japan
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 sandai
 
レガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターンレガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターンKent Ishizawa
 
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方Project ICHIGAN
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化Hiroshi Watanabe
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)iret, Inc.
 
バッチ高速化のあゆみ
バッチ高速化のあゆみバッチ高速化のあゆみ
バッチ高速化のあゆみdcubeio
 
継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt継続的デリバリー第11章.Ppt
継続的デリバリー第11章.PptYusuke HIDESHIMA
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1Yusuke HIDESHIMA
 
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはGUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはNozomi Ito
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
Principles of Transaction Processing Second Edition 4章 5~9節
Principles of Transaction Processing Second Edition 4章 5~9節Principles of Transaction Processing Second Edition 4章 5~9節
Principles of Transaction Processing Second Edition 4章 5~9節Yuichiro Saito
 
バックアップ時の問題から学んだDBエンジニアに必要なスキルとは
バックアップ時の問題から学んだDBエンジニアに必要なスキルとはバックアップ時の問題から学んだDBエンジニアに必要なスキルとは
バックアップ時の問題から学んだDBエンジニアに必要なスキルとはTakeshiYamamoto2049
 
Read daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanRead daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanshinaisan
 
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティング
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティングサポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティング
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティングCitrix Systems Japan
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOpsHiromasa Oka
 
Myfirst cloudfoundry intro_20161201
Myfirst cloudfoundry intro_20161201Myfirst cloudfoundry intro_20161201
Myfirst cloudfoundry intro_20161201Tomohiro Ichimura
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御Yuto Takei
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)Daichi Egawa
 

Ähnlich wie Principles of Transaction Processing Second Edition 7章 1, 2節 (20)

オープンソース統合運用管理ツール『Hinemos』 --- その利便性及びインシデント管理について ---
オープンソース統合運用管理ツール『Hinemos』  --- その利便性及びインシデント管理について ---オープンソース統合運用管理ツール『Hinemos』  --- その利便性及びインシデント管理について ---
オープンソース統合運用管理ツール『Hinemos』 --- その利便性及びインシデント管理について ---
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
 
レガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターンレガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターン
 
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方
【16-E-3】 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
 
バッチ高速化のあゆみ
バッチ高速化のあゆみバッチ高速化のあゆみ
バッチ高速化のあゆみ
 
継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
 
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはGUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
Principles of Transaction Processing Second Edition 4章 5~9節
Principles of Transaction Processing Second Edition 4章 5~9節Principles of Transaction Processing Second Edition 4章 5~9節
Principles of Transaction Processing Second Edition 4章 5~9節
 
バックアップ時の問題から学んだDBエンジニアに必要なスキルとは
バックアップ時の問題から学んだDBエンジニアに必要なスキルとはバックアップ時の問題から学んだDBエンジニアに必要なスキルとは
バックアップ時の問題から学んだDBエンジニアに必要なスキルとは
 
Read daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanRead daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisan
 
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティング
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティングサポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティング
サポートスペシャリストが語るXenDesktop / XenApp環境での最速トラブルシューティング
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
Myfirst cloudfoundry intro_20161201
Myfirst cloudfoundry intro_20161201Myfirst cloudfoundry intro_20161201
Myfirst cloudfoundry intro_20161201
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 

Mehr von Yuichiro Saito

ワークショップ FinTech アーキテクチャ
ワークショップFinTech アーキテクチャワークショップFinTech アーキテクチャ
ワークショップ FinTech アーキテクチャYuichiro Saito
 
FinTech スタートアップの セキュリティチェックシートとの向き合い方
FinTech スタートアップのセキュリティチェックシートとの向き合い方FinTech スタートアップのセキュリティチェックシートとの向き合い方
FinTech スタートアップの セキュリティチェックシートとの向き合い方Yuichiro Saito
 
クラウドを積極活用した サービスの開発のために
クラウドを積極活用したサービスの開発のためにクラウドを積極活用したサービスの開発のために
クラウドを積極活用した サービスの開発のためにYuichiro Saito
 
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationYuichiro Saito
 
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...Yuichiro Saito
 
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)Yuichiro Saito
 
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)ある現役エンジニアからの提案 (高専生向け進路指導関連講演)
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)Yuichiro Saito
 
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_autohb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_autoYuichiro Saito
 
春らんまん!カメラ女子・男子をはじめよう
春らんまん!カメラ女子・男子をはじめよう春らんまん!カメラ女子・男子をはじめよう
春らんまん!カメラ女子・男子をはじめようYuichiro Saito
 
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究Yuichiro Saito
 
SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章Yuichiro Saito
 
SCENARIOS, STORIES, USE CASES 1章, 2章
SCENARIOS, STORIES, USE CASES 1章, 2章SCENARIOS, STORIES, USE CASES 1章, 2章
SCENARIOS, STORIES, USE CASES 1章, 2章Yuichiro Saito
 
写真で見るGPGPUサーバの選び方 (hbstudy#18)
写真で見るGPGPUサーバの選び方 (hbstudy#18)写真で見るGPGPUサーバの選び方 (hbstudy#18)
写真で見るGPGPUサーバの選び方 (hbstudy#18)Yuichiro Saito
 
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)Yuichiro Saito
 
言語処理を用いた (株式銘柄)相関関係取得の紹介
言語処理を用いた (株式銘柄)相関関係取得の紹介言語処理を用いた (株式銘柄)相関関係取得の紹介
言語処理を用いた (株式銘柄)相関関係取得の紹介Yuichiro Saito
 

Mehr von Yuichiro Saito (16)

ワークショップ FinTech アーキテクチャ
ワークショップFinTech アーキテクチャワークショップFinTech アーキテクチャ
ワークショップ FinTech アーキテクチャ
 
FinTech スタートアップの セキュリティチェックシートとの向き合い方
FinTech スタートアップのセキュリティチェックシートとの向き合い方FinTech スタートアップのセキュリティチェックシートとの向き合い方
FinTech スタートアップの セキュリティチェックシートとの向き合い方
 
クラウドを積極活用した サービスの開発のために
クラウドを積極活用したサービスの開発のためにクラウドを積極活用したサービスの開発のために
クラウドを積極活用した サービスの開発のために
 
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
 
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...
Simple steps and tips to improve IT infrastructure operations #yapcasia #yapc...
 
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)
我が家の運用環境 - (第1回 IT × 家事育児 LT大会&交流会 LT資料)
 
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)ある現役エンジニアからの提案 (高専生向け進路指導関連講演)
ある現役エンジニアからの提案 (高専生向け進路指導関連講演)
 
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_autohb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
 
春らんまん!カメラ女子・男子をはじめよう
春らんまん!カメラ女子・男子をはじめよう春らんまん!カメラ女子・男子をはじめよう
春らんまん!カメラ女子・男子をはじめよう
 
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
 
SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章SCENARIOS, STORIES, USE CASES 10章
SCENARIOS, STORIES, USE CASES 10章
 
SCENARIOS, STORIES, USE CASES 1章, 2章
SCENARIOS, STORIES, USE CASES 1章, 2章SCENARIOS, STORIES, USE CASES 1章, 2章
SCENARIOS, STORIES, USE CASES 1章, 2章
 
写真で見るGPGPUサーバの選び方 (hbstudy#18)
写真で見るGPGPUサーバの選び方 (hbstudy#18)写真で見るGPGPUサーバの選び方 (hbstudy#18)
写真で見るGPGPUサーバの選び方 (hbstudy#18)
 
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
 
進路比較表
進路比較表進路比較表
進路比較表
 
言語処理を用いた (株式銘柄)相関関係取得の紹介
言語処理を用いた (株式銘柄)相関関係取得の紹介言語処理を用いた (株式銘柄)相関関係取得の紹介
言語処理を用いた (株式銘柄)相関関係取得の紹介
 

Principles of Transaction Processing Second Edition 7章 1, 2節

  • 1. Principles of Transaction Processing Second Edition 7章 1, 2節   筑波⼤大学  ⼤大学院  ビジネス科学研究科  経営システム科学専攻 斎藤  祐⼀一郎  
  • 2. 7.1 異常発⽣生時   pp.185 188   2   Yuichiro Saito  
  • 3. 7.1 システム異常発⽣生 - 1     ⾼高可⽤用性が求められるシステム … 24 by 7 (⽇日本だと、24-365等と⾔言います)   可⽤用性を左右する2つの要因   MTBF – 平均故障間隔   MTTR – 平均回復時間   可⽤用性の指標(稼働率) = MTBF / (MTBF+MTTR) ※これが99.9%だったら、99.999%だったら…と。   SLA, 応答時間, スループット  を満たせば充分という 訳ではない。障害をいかに回復させるかに焦点を当 てて議論する。 3   Yuichiro Saito  
  • 4. 7.1 システム異常発⽣生 - 2     障害の要因は、次のように分類できる。   環境: 電⼒力力・通信・空調・⽕火災・洪⽔水などの取り巻く物理 的環境からの影響。   システム管理: システムを運⽤用し、問題に対して予防保守 をしていくために、どのようにすべきか。   ハードウェア: CPU, RAM, I/O, ストレージ等。   ソストウェア: OS, 通信, DB, TPM, その他システムソフ トウェア, およびアプリケーションソフトウェア。   時間があったら実例を話します。 4   Yuichiro Saito  
  • 5. 7.1 物理環境 -1     通信 – 回線の多重化で対処   電源 – バッテリバックアップ(UPS), 発電機   UPSにより、短時間の障害を無停⽌止で切り抜けられる。   UPSにより、突然のシャットダウンからシステムを守り、安全な 休⽌止とその後の復帰を迅速にする。   発電機を⽤用いれば、⻑⾧長時間の電源障害からも保護できる。なお、 発電機起動時の中継ぎとしてUPSを使⽤用する。   おまけ: 発電機がつながっている電源で、停電時に⾃自⼒力力で中継ぎ をしなければならない電源をB電源、そうする必要がない物をA電 源ということがあります(これらはNTT⽤用語みたいです)。   空調 – 完全空調が前提の場合、冗⻑⾧長化が必要。   地震 – 耐震, 犯罪 – 不正侵⼊入防⽌止, ⽴立立地 – ⾏行行き来・防衛コスト のバランス   ミッションクリティカルなシステム – ⾦金金融, 運送業などは、並 外れた⽔水準で適⽤用。航空会社のシステムは地下室にある(らし い)。     5   Yuichiro Saito  
  • 6. 7.1 物理環境 - 2     理想は、システムのレプリカを作る(Disaster Recovery – DR)ことである。   カリフォルニアの銀⾏行行では、サンアンドレアス断層が元 となる災害が起き、ロスかシスコのどちらかで事業継続 が出来る。   おまけ1: ⽇日本だと、地震によるDRは30km離れていれば ば充分なので、東京と横浜・⼩小⼭山という形にしている所 があります。ただし、電⼒力力問題は別。   おまけ2: 業務⾃自体がDRできていないと、システムだけ DRしても意味はありません。これがDRP。   データレプリケーションについては、9章で詳解。   6   Yuichiro Saito  
  • 7. 7.1 システム管理     優秀なシステム管理者であっても、システム障害をたまに起 こしてしまう。   管理の⾃自動化。   メンテナンスをそもそもやらなくてもよいようにする。   予防保守が、ダウンタイム発⽣生の元となる事がある。   保守⼿手順の簡略化も有効。   ソフトウェアのインストールは、多くの場合失敗の元である。再 起動を要しない⼿手順は、信頼性を向上させる⼀一つの⽅方法(Windows を使わないとか :-p)。   多くの操作エラーは、システム再構成時に起きる。   事前にテストシステムでテストする事で、確認する。   元に戻せる⼿手順を作っておくこと。   24-365である必要がない場合、停⽌止時間に作業をスケジュー リングする。   しかし、ダウンタイムが必要となるシステムは、ベンダーの 視点から⾒見見ると、顧客を絞ってしまう。 7   Yuichiro Saito  
  • 8. 7.1 ハードウェア     ハード障害には、⼀一時的な物と恒久的な物がある。   たいていは⼀一時的な物。再試⾏行行の機会があるから、 リカバリ⼿手順を作成し復帰させればよい。   OSに起因するディスクI/Oエラー   ネットワーク通信   永続的な障害により、最も深刻なのがシステム全体 がダウンする事である。   再起動で戻る場合もある。   ダメな時は、ディスク障害の事がほとんど。   それでもダメな時は、修理。   8   Yuichiro Saito  
  • 9. 7.1 ソフトウェア - 1     最も深刻な物はOSのクラッシュ。   たいていは⼀一過性だから、再起動すれば済む。再起動は 次のものも同時に再起動される。   分散システム内の他のシステムとの通信セッションの回復   アプリケーションプログラムの再起動   不整合が発⽣生したディスクの修復   こういったものは、MTTR低下をもたらす。早くできる ようになる事がよい。   OSベンダーは、90年代に⾼高速な回復のためにファイルシステ ムリカバリ⼿手順を組み込んだ。   ⼀一部のOSは⾼高速起動に慎重を期した設計をしている。   ⾼高可⽤用性の通信システムは、最悪でも分単位で回復。   究極的には、回復時間は0なのなら、ユーザはその事を 関知する必要は無い。 9   Yuichiro Saito  
  • 10. 7.1 ソフトウェア - 2     ⼀一部のソフトウェアの障害は、それは問題が発⽣生し たのではなく、性能低下を意味する事がある。   リモートサービスへのアクセスの例。   (雑に作れば?)通信機能は使えないが、慎重に設計してい れば他の機能はまだ動作するかもしれない。その状態が システムの性能低下を意味する。   事例 - DWHのシステムがミッションクリティカルではな かった→失敗時に、全システムがデータを利⽤用できなく なり損失を被った。   アプリケーションやデータベースに障害が発⽣生する か、検出して回復できるようにしておく必要がある。 TP固有技術が関与する所である。   10   Yuichiro Saito  
  • 11. 7.2 システムリカバリのためのモデル   pp.188 194   11   Yuichiro Saito  
  • 12. 7.2 プロセス異常発⽣生を捉える - 1     OSとアプリケーションのプロセスは分離・保護されている。 そのため、プロセス障害のみを回復すればよいので、多くの TPシステムは多数のプロセスから成っている。   問題が発⽣生したとき、プロセスを再作成するようにしなけれ ばならない。それはOS, DB, またはTPMによって⾏行行われる。   これらの多くは、プロセスが失敗した時の追跡または監視の プロセスを持っている。これには次の3つの⼿手法がある。   Fig7.1: 各プロセスは、監視プロセスに対し定期的に⽣生存通信を ⾏行行う(keepalive, heartbeat)。これが無いとき、可能な限り障害で あると警告する。   監視プロセスが、各プロセスに⽣生存確認を求めるメッセージを発 し、ポーリングする(heartbeat)。   ロックと関連し、プロセスが失敗した時にOSの監視プロセスから 発せられるメッセージを受理し、ロックと関連したプロセスを解 放する。   MTTRを最⼩小化する⽅方法を選択する事が重要。   12   Yuichiro Saito  
  • 13. 7.2 プロセス異常発⽣生を捉える - 2     しかし、この検出⽅方法は実際に失敗したかの確認を 保証する物ではない。   Keepalive の⽅方法では、単に応答が遅いだけかも。   ロックの⽅方法では、動作可能なロックをリリースしてい るだけかも。   同じOS上で監視していると、誤検知しやすくなる。 が、本章ではこの件は正しいと仮定して議論する。   監視プロセスが別のマシンで動いている分散システ ムでは、障害現象は通信障害ではなくプロセス障害 である事が原因である事が⾼高くなる。これは8,9章 で議論する。 13   Yuichiro Saito  
  • 14. 7.2 プロセス異常発⽣生を捉える - 3     プロセスは不正な値を返す事で失敗する事がある。   メモリ障害   通信障害   アプリバグ   今回は、このようなエラーは考慮しない。⼀一般的な システムのメカニズムを使⽤用して、これらは排除す る事が出来ない。ソフトウェア⼯工学に譲る。   プロセス障害検知時、⼀一部エージェントではプロセ ス再作成を⾏行行う必要がある。OSは基本的にそう⾔言う 事はやってくれない。   14   Yuichiro Saito  
  • 15. 7.2 クライアントのリカバリ - 1     クラサバでは、クライアントがサーバとそれに紐づく ネットワーク・ディスクを⽤用いてやり取りをしている (Fig 7.2)。   このシステムに置ける障害点   クライアント   通信   サーバ   サーバリソースの接続   リソース   復帰⽅方法は、たいてい再試⾏行行・再接続。復帰には次の事 項を決定する必要がある。   失敗時、未処理だった呼び出しは何か?   通信できなかった事によって起こる事は何か?   新規呼び出しを⾏行行う前に、事前に何をすれば適切な状態に持っ て⾏行行けるのか? 15   Yuichiro Saito  
  • 16. 7.2 クライアントのリカバリ - 2     この話題は、4章で説明した「キュートランザク ションの処理」に通づる。   サーバ・クライアントに永続的キューがある場合、どこ まで処理したかをシリアル番号ベースで照らし合わせ、 処理できなかった所から再開する。   残りの問題は、次節に。 16   Yuichiro Saito  
  • 17. 7.2 サーバのリカバリ     サーバが再作成された後、新しいコールを始める前にリ カバリ処理を⾏行行う。初回起動なら初期化処理のみだが、 そうでない場合はどうするか。   サーバは直列処理である…トランザクションは無い。単に要求 を受信し、結果を返す。これが失敗した時に、それはサーバの 呼び出しの途中だったとも考えられる。   その状況を判断できるのはクライアント次第である。   残念な事に、サーバが冪等とならない処理をしている場合があ るため、常にうまく⾏行行くとは限らない。従って、⾮非冪等となる 処理は実⾏行行しないようにしなくてはならない。   部分的に実⾏行行される、呼び出しの回復処理は複雑であり、 ⼀一般的にトランザクションをサポートされるシステムで は⽤用いられない。   トランザクションが利⽤用可能である場合はとても簡単に できるのだが、そうでない場合はどういった場合がある か、調べてみましょう。 17   Yuichiro Saito  
  • 18. 7.2 チェックポイントを⽤用いたリカバリ     サーバがクライアントからの呼び出しを実⾏行行し、失敗し たと仮定。   多重呼び出し時に冪等性が担保される操作を実⾏行行出来る とすると、復旧時は単に最初のメッセージから全て再実 ⾏行行すればよい。   冪等性が担保されない場合、⾮非冪等となる操作まで処理 を回復させなければならない。   こう⾔言った処理を実⾏行行する前に、状態を不揮発性記憶装置に保 存する。そうすれば、回復時に状態を再作成できる(Fig 7.3)。 これがチェックポイント。   しかし、毎度毎度やると処理コストは安くない。それを容易に するのがトランザクション。   サーバ回復時、最後に成功した処理までチェックポイントを復 元(Fig 7.4)。すなわち、⾮非冪等操作が実⾏行行されているかどうか を確認する必要がある。 18   Yuichiro Saito  
  • 19. 7.2 トランザクションベースサーバのリカバリ     トランザクションは、サーバの復旧を簡素化する。   トランザクションをサポートするサーバに障害が発⽣生し、 その後に回復した場合、その内容には障害発⽣生時に稼働 していた全てのトランザクションの効果(内容)が含まれ ている。   ⾮非トランザクションサーバ…チェックポイントとの⽐比較。   チェックポイントを常にコミットしているような感じ。   リカバリ⼿手順は未完のトランザクションを破棄している。   すなわち、回復時は失敗として扱われ、回復出来ないとダメ。   これなら、⾮非冪等である場合でも、やり直しても問題は 出ない。チェックポイントベースのリカバリ⽅方法の問題 はこれで解決可能。 19   Yuichiro Saito  
  • 20. 7.2 トランザクションベースサーバのリカバリ     しかし、どうしても冪等性を担保できない物がある。   ⼩小切⼿手の印刷   お⾦金金の送⾦金金   まあ、物理的な作業を伴うものはほとんどでしょう。   こう⾔言った物はキューイングで処理する。4.4節の技を うまく使ってやること。   トランザクションのみでは復旧は簡素化しないが迅速に はする。メモリチェックポイントは⾼高価だが、トランザ クションは安価である。   このトリックはメモリにバルクコピーを避けてログファイルに 蓄積している事である。   障害時、ログを使⽤用してディスクからメモリの状態を再構築す る。   All or Nothing という形にはしない。⼀一時的な障害にも耐えう る構造である。 20   Yuichiro Saito  
  • 21. 7.2 ステートレスなサーバ - 1     トランザクションを使⽤用している場合、2タイプにサーバ は分かれる(Fig 7.5)。   要求を受け取る→トランザクション開始→アプリケーションプ ロセスが処理実⾏行行→トランザクションリソースマネージャに メッセージ送信   直接DBは叩かない。回復可能なキュー等で共有されている。   リソースマネージャは先節で解説したトランザクションサーバ と同じ動きをする。   アプリケーションプロセスはステートレスであり、復帰時には 「状態」を持っていない。従って、復帰後は「さら」から実⾏行行 する形でかまわない。復帰のためのプログラムを書く必要も無 い。   トランザクションリソースマネージャが、状態を持つ。   しかし、最後に実⾏行行した状態をどのように扱うかは曖昧 なままである。   そこでキューの出番。キューとして処理すれば、解決する。   21   Yuichiro Saito  
  • 22. おわり   22   Yuichiro Saito