JAWS-UG初心者支部#56 Systems Manager 入門ハンズオン https://jawsug-bgnr.connpass.com/event/283554/
でのLT
Summit後の打ち上げから考える「分散システムにおける耐障害性のある設計」Shigeru Oda
View Slide
Hello!Shigeru OdaAWS Community HeroAWS Samurai@OutputSeq2
4月21日(金) 15:20-16:00(40分) 【AWS-27】Everything fails, all the time: 分散システムにおける耐障害性のある設計についての内容を紹介するLTです。
セッション、ExpoDeepRacerGameDayAWS Jam打ち上げ
Summit後のグループ討論が楽しかった!!
PubとあるPub
Pubグループがスケールする
Pub-APubが混んできたので、グループが移動Pub-B
店舗は非効率だ、立ち飲みでスケールしよう(モノリスは非効率だ、マイクロサービスでスケールしよう)
グループ間の情報連携が出来ない可能性がある
システムでも同じNWがネックになるホテル予約ツアー予約飛行機予約ポイント支払い
各サービスで障害の可能性もあり、考慮が必要ホテル予約ツアー予約飛行機予約ポイント支払い
リトライ機能ホテル予約 飛行機予約・サーバーエラー・タイムアウト・スロットリング2s2s2s
Exponential backoff(指数関数的 後退)ホテル予約 飛行機予約・サーバーエラー・タイムアウト・スロットリング2^0=1s2^1=2s2^2=4s2^4=8s
NW障害はExponential backoffでも軽減できないホテル予約 飛行機予約ホテル予約ホテル予約ホテル予約ホテル予約ホテル予約ホテル予約ホテル予約・サーバーエラー・タイムアウト・スロットリング…・AWS障害・AZ障害
Exponential backoff(指数関数的 後退)+ Jitter(ばらつき)ホテル予約 飛行機予約・サーバーエラー・タイムアウト・スロットリングMin0 - Max1Min0 - Max2Min0 - Max4Min0 - Max8
・Exponetial Backoff sleep = min(最大停止時間, 基準睡眠時間 * 2 ** 試行回数)・Exponetial Backoff And Full Jitter sleep = random_between(0,min(最大停止時間, 基準睡眠時間 * 2 ** 試行回数))・Exponetial Backoff And Equal Jitter tmp = min(最大停止時間, 基準睡眠時間 * 2 ** 試行回数) sleep = tmp / 2 + randam_between(0,temp / 2)Exponential backoff(指数関数的 後退)+ Jitter(ばらつき)の種類
サーキトブレイカー(遮断機)の導入ホテル予約ツアー予約飛行機予約ポイント支払い
通常時ホテル予約飛行機予約DynamoDBにサービス名が登録されているかチェック登録なし
通常時 → 異常時ホテル予約飛行機予約DynamoDBにサービス名が登録されているかチェック登録なしレコード登録・Service:飛行機予約・Status:1・TTL:Sysdate + 10分Exponetial Backoff And Full Jitter
Lambdaで定期チェック(死活監視)飛行機予約定期チェック(死活監視)レコード登録・Service:飛行機予約・Status:1・TTL:Sysdate + 10分
異常時 → 異常時・ホテル予約・飛行機予約DynamoDBにサービス名が登録されているかチェック登録あり・Service:飛行機予約・Status:1・TTL:Sysdate + 10分
異常時 →10分経過→ 正常時ホテル予約飛行機予約DynamoDBにサービス名が登録されているかチェック登録なし
サーキットブレイカーを行うサービス
Polyglot Persitence(ポリグロット・パーシステンス)ホテル予約ツアー予約飛行機予約ポイント支払いDocument DBRelation DBKey-Value DBGraph DBRelation DB
Sagaパターンホテル予約飛行機予約ポイント支払い エラー発生ホテル予約(取消)飛行機予約(取消)ポイント(取消)正常系正常系正常系取消取消取消
Sageパターンの種類オーケストレーションオーケストレーション2.Error1.OK1.Rollback
Sageパターンの種類コレオグラフィメッセージ ブローカー1.OKPublish1.OKSubscribe2.NGPublish2.OKSubscribe1.RollBackPublish
私見:マイクロサービスでの耐障害性、取消処理にはこれらの考慮が必要と考えます。
私見:しかし、初期リリースからここまで必要?最初から最高のUI/UXが必要なのか?
thank you