Slide 1

Slide 1 text

#ourdevday2023 形式手法による分散システムの検証 〜S3 の一貫性モデルを例として〜 チェシャ猫 (@y_taka_23) 俺たちの本当にやりたかった DevDay (21st Jun. 2023)

Slide 2

Slide 2 text

#ourdevday2023 99.999999999 %

Slide 3

Slide 3 text

#ourdevday2023 Client A AZ AZ AZ S3

Slide 4

Slide 4 text

#ourdevday2023 Read-After-Write (Dec. 2020)

Slide 5

Slide 5 text

#ourdevday2023 Client A v1 AZ v1 AZ v1 AZ v1 S3 Client B v2

Slide 6

Slide 6 text

#ourdevday2023 Client A Client B S3 PUT v1 PUT v2 Get = v2 Get = v2

Slide 7

Slide 7 text

#ourdevday2023 Client A Client B S3 PUT v1 PUT v2 Get = v2 Get = v2

Slide 8

Slide 8 text

#ourdevday2023 Client A Client B S3 PUT v1 PUT v2 Get = v1 Get = v2

Slide 9

Slide 9 text

#ourdevday2023 Client A Client B S3 PUT v1 PUT v2 Get = v2 Get = v2

Slide 10

Slide 10 text

#ourdevday2023 Client A Client B S3 PUT v1 PUT v2 Get = v1 Get = v1

Slide 11

Slide 11 text

#ourdevday2023 2-クライアントの PUT → GET のパターンは?

Slide 12

Slide 12 text

#ourdevday2023 8C4 = 70 通り

Slide 13

Slide 13 text

#ourdevday2023 カオス エンジニアリング Shift-right Shift-left ? 開発 設計 運用

Slide 14

Slide 14 text

#ourdevday2023 #ourdevday2023 形式手法

Slide 15

Slide 15 text

#ourdevday2023 #ourdevday2023 “システマティックな探索”

Slide 16

Slide 16 text

#ourdevday2023 2 1 4 1 2 3 4 3 2 4 1 3 = × 仕様:◯ >= □ グラフ探索に帰着 □ ◯ ◯ □

Slide 17

Slide 17 text

#ourdevday2023 P

Slide 18

Slide 18 text

#ourdevday2023 アクターモデル

Slide 19

Slide 19 text

#ourdevday2023 メッセージ キュー 状態

Slide 20

Slide 20 text

#ourdevday2023 0 incr decr 1 decr send "decr" send "incr" 状態の更新 他のアクターたち

Slide 21

Slide 21 text

#ourdevday2023 machine Counter { var localCount: int; state WaitForOpration { on eIncrReq do (req: tIncrReq) { localCount += req.count; assert localCount > 0, "count should be positive!"; goto WaitForOperation; } on eDecrReq do (req: tDecrReq) {...} } }

Slide 22

Slide 22 text

#ourdevday2023 安全性 (safety):悪いことが決して起こらない 活性 (liveness):良いことがいつか起こる

Slide 23

Slide 23 text

#ourdevday2023 0 3 1 2 活性仕様:1 の後にはいつか 3 が来る Msg 1 Msg 2 Msg 3 Msg 0 cold Msg 0 hot Msg 1 Msg 3

Slide 24

Slide 24 text

#ourdevday2023 From “Probably” Correct to “Provably” Correct! Presented by チェシャ猫 (@y_taka_23)