Upgrade to Pro — share decks privately, control downloads, hide ads and more …

形式手法による分散システムの検証 〜S3 の一貫性モデルを例として〜 #ourdevday2023 / Our DevDay 2023

形式手法による分散システムの検証 〜S3 の一貫性モデルを例として〜 #ourdevday2023 / Our DevDay 2023

俺たちの本当にやりたかった DevDay で使用したスライドです。

AWS Dev Day 2023 Tokyo の RejectCon としての位置付けで、以下は本家 AWS DevDay の CFP 応募時のプロポーザルです。講演時間が 45 分から 20 分に短縮されたことに伴い、一部内容を変更しています。

みなさん、分散システムを「正しく」開発してますか? 2020 年、Amazon S3 の一貫性モデルが見直され、オブジェクトに対する更新がラグなしに読み取れるようになりました。この際、巨大な分散システムである S3 に対して新しい同期プロトコルの「正しさ」を保証するために選ばれたツールこそが、形式手法の一種、P 言語です。本講演では、分散システムを愛しそして苦しむ全てのエンジニアのために、S3 を単純化したトイモデルを段階的に設計・検証する流れを追体験し、形式手法の威力と魅力を感じてもらいます。

イベント概要:https://connpass.com/event/282059/
プロポーザル:https://github.com/aws-events/aws-dev-day-tokyo-2023-cfp/issues/107

y_taka_23

June 21, 2023
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

  1. #ourdevday2023 2 1 4 1 2 3 4 3 2

    4 1 3 = × 仕様:◯ >= □ グラフ探索に帰着 □ ◯ ◯ □
  2. #ourdevday2023 0 incr decr 1 decr send "decr" send "incr"

    状態の更新 他のアクターたち
  3. #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) {...} } }