第2回 クラウドデザインパターン勉強会 #jazug (2014/08/20)
で、実際オートスケールって使うの?って話。業務系では正直そんなに使わないんじゃないか?夜中に減らしてコスト削減ってパターンとか?とはいえ、ジャパニーズトラディショナルカムパニーの社畜という、毎月金額が変わるってのがイヤ!という種類のイキモノもいる。 #jazug
2014-08-20 20:37:28イベント直後の分かりやすすぎるアクセス変動を見てる身としては、あの時分にオートスケールがあればな、と痛切している。。 #jazug
2014-08-20 20:40:46パターンに入る前に。AzureのCDPは回答集ではない。課題が整理され、考慮点について記述されている。アプリなどの価値観に合わせて『自分で考えましょう』。 #jazug
2014-08-20 20:54:18『スケーラビリティや性能』のためには『分割』が必要、分割すると『一貫性や整合性』が失われ、スケーラビリティや性能に悪影響を与える、という因果関係がある。 #jazug
2014-08-20 20:55:44パフォーマンスを維持してスケールする。ぶち当たるところは物理的なハードウェアの限界。クラウドはいわば一般的なサーバーを大量に並べる手法なので、CPUだったりメモリだったり、ネットワークだったりの限界に行き着く。で、限界に行き着いたら、分割して対応しましょう、と。 #jazug
2014-08-20 20:57:44パーティション間のトランザクションは高コスト。結果整合性の導入。DBのトランザクションのような「強い整合性」ではなく、「結果整合性」が取れていればいいので、一時的な不整合を許容する。 #jazug
2014-08-20 21:01:39分散環境では結果整合性を選択。トランザクション実行中は整合性がないViewになるケースも。パフォーマンス上欠点も。 #jazug
2014-08-20 21:03:16エラーなどによって、一時的に生じた不整合を解消し、結果整合性を実現するための方法が補正トランザクション。 #jazug
2014-08-20 21:03:30補正トランザクションのロールバックにおいて、他のサービスで変更されていたりもするから、単にトランザクション開始前のデータに書き戻せばいいってのは例外的。一般的にはワークフローを使用してロールバックする。 #jazug
2014-08-20 21:05:46また、補正トランザクション自身が失敗する可能性もある。これを考慮しておく必要がある。ふえええぇぇぇ・・・ #jazug
2014-08-20 21:06:33トランザクションの識別子を時系列で生成し、処理ごとにトランザクションのログデータを生成する。この時、補正トランザクションの対象となる処理(識別子)を知るのがちょっと難しい→だから識別子を時系列に作っておく。 #jazug
2014-08-20 21:09:26補正トランザクションは『元に戻す』ためではない。『整合性が取れている状態に戻す』もの。補正トランザクションの手順は元の逆順でなくても良い。 #jazug
2014-08-20 21:14:24補正トランザクションはめんどうなので、なるべく使わないようにするべき。例えば、リトライ処理を入れるなどして、そもそもトランザクションが失敗しないようにしておく。 #jazug
2014-08-20 21:16:57補正トランザクションの例として、旅行プラン予約の例。複数のフライトとホテルを予約して、1つの旅行プランを予約する。1か所の予約を失敗した場合、補正トランザクションを走らせるのではなく、ユーザー操作で別の予約を行うように促す、なんて方法も。 #jazug
2014-08-20 21:21:32スターバックスは2フェーズコミットを使わない code.google.com/p/gregors-ramb… #jazug
2014-08-20 21:22:59