$30 off During Our Annual Pro Sale. View Details »

Summit後の打ち上げから考える「分散システムにおける耐障害性のある設計」

 Summit後の打ち上げから考える「分散システムにおける耐障害性のある設計」

JAWS-UG初心者支部#56 Systems Manager 入門ハンズオン
https://jawsug-bgnr.connpass.com/event/283554/

でのLT

ShigeruOda

May 27, 2023
Tweet

More Decks by ShigeruOda

Other Decks in Technology

Transcript

  1. Summit後の打ち上げから考
    える「分散システムにおける耐
    障害性のある設計」
    Shigeru Oda

    View Slide

  2. Hello!
    Shigeru Oda
    AWS Community Hero
    AWS Samurai
    @OutputSeq
    2

    View Slide

  3. 4月21日(金) 15:20-16:00(40分) 【AWS-27】
    Everything fails, all the time: 分散システムにおける
    耐障害性のある設計について
    の内容を紹介するLTです。

    View Slide

  4. セッション、Expo
    DeepRacer
    GameDay
    AWS Jam
    打ち上げ

    View Slide

  5. Summit後のグループ討論が楽しかった!!

    View Slide

  6. Pub
    とあるPub

    View Slide

  7. Pub
    グループがスケールする

    View Slide

  8. Pub-A
    Pubが混んできたので、グループが移動
    Pub-B

    View Slide

  9. 店舗は非効率だ、立ち飲みでスケールしよう
    (モノリスは非効率だ、マイクロサービスでスケールしよう)

    View Slide

  10. グループ間の情報連携が出来ない可能性がある

    View Slide

  11. システムでも同じNWがネックになる
    ホテル予約
    ツアー予約
    飛行機予約
    ポイント
    支払い

    View Slide

  12. 各サービスで障害の可能性もあり、考慮が必要
    ホテル予約
    ツアー予約
    飛行機予約
    ポイント
    支払い

    View Slide

  13. リトライ機能
    ホテル予約 飛行機予約
    ・サーバーエラー
    ・タイムアウト
    ・スロットリング
    2s
    2s
    2s

    View Slide

  14. Exponential backoff(指数関数的 後退)
    ホテル予約 飛行機予約
    ・サーバーエラー
    ・タイムアウト
    ・スロットリング
    2^0=1s
    2^1=2s
    2^2=4s
    2^4=8s

    View Slide

  15. NW障害は
    Exponential backoffでも軽減できない
    ホテル予約 飛行機予約
    ホテル予約
    ホテル予約
    ホテル予約
    ホテル予約
    ホテル予約
    ホテル予約
    ホテル予約
    ・サーバーエラー
    ・タイムアウト
    ・スロットリング

    ・AWS障害
    ・AZ障害

    View Slide

  16. Exponential backoff(指数関数的 後退)
    + Jitter(ばらつき)
    ホテル予約 飛行機予約
    ・サーバーエラー
    ・タイムアウト
    ・スロットリング
    Min0 - Max1
    Min0 - Max2
    Min0 - Max4
    Min0 - Max8

    View Slide

  17. ・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(ばらつき)の種類

    View Slide

  18. サーキトブレイカー(遮断機)の導入
    ホテル予約
    ツアー予約
    飛行機予約
    ポイント
    支払い

    View Slide

  19. 通常時
    ホテル予約
    飛行機予約
    DynamoDBにサービス名が登
    録されているかチェック
    登録なし

    View Slide

  20. 通常時 → 異常時
    ホテル予約
    飛行機予約
    DynamoDBにサービス名が登
    録されているかチェック
    登録なし
    レコード登録
    ・Service:飛行機予約
    ・Status:1
    ・TTL:Sysdate + 10分
    Exponetial Backoff And Full Jitter

    View Slide

  21. Lambdaで定期チェック(死活監視)
    飛行機予約
    定期チェック(死活監視)
    レコード登録
    ・Service:飛行機予約
    ・Status:1
    ・TTL:Sysdate + 10分

    View Slide

  22. 異常時 → 異常時
    ・ホテル予約
    ・飛行機予約
    DynamoDBにサービス名が登録されて
    いるかチェック
    登録あり
    ・Service:飛行機予約
    ・Status:1
    ・TTL:Sysdate + 10分

    View Slide

  23. 異常時 →10分経過→ 正常時
    ホテル予約
    飛行機予約
    DynamoDBにサービス名が登
    録されているかチェック
    登録なし

    View Slide

  24. サーキットブレイカーを行うサービス

    View Slide

  25. Polyglot Persitence
    (ポリグロット・パーシステンス)
    ホテル予約
    ツアー予約
    飛行機予約
    ポイント
    支払い
    Document DB
    Relation DB
    Key-Value DB
    Graph DB
    Relation DB

    View Slide

  26. Sagaパターン
    ホテル予約
    飛行機予約
    ポイント
    支払い エラー発生
    ホテル予約(取消)
    飛行機予約(取消)
    ポイント(取消)
    正常系
    正常系
    正常系
    取消
    取消
    取消

    View Slide

  27. Sageパターンの種類
    オーケストレーション
    オーケストレーション
    2.Error
    1.OK
    1.Rollback

    View Slide

  28. Sageパターンの種類
    コレオグラフィ
    メッセージ ブローカー
    1.OK
    Publish
    1.OK
    Subscribe
    2.NG
    Publish
    2.OK
    Subscribe
    1.RollBack
    Publish

    View Slide

  29. 私見:
    マイクロサービスでの耐障害性、取消処理には
    これらの考慮が必要と考えます。

    View Slide

  30. 私見:
    しかし、初期リリースからここまで必要?
    最初から最高のUI/UXが必要なのか?

    View Slide

  31. thank you

    View Slide