Slide 1

Slide 1 text

ネットシェア 可 .NET でアクターモデルを OrleansかDaprでやりたい 株式会社ジェイテックジャパン ⾼丘 知央 2024年1⽉11⽇ (⼟曜⽇) .NET Conf 2024 Osaka x Fukuoka #dotnetconf 1

Slide 2

Slide 2 text

ネットシェア可 ⾃⼰紹介 X: @tomohisa Github: @tomohisa Works at : 株式会社ジェイテックジャパン, J-Tech Creations, Inc. JTS Group - 株式会社ジャパンテクニカルソフトウェア 品川 CTO: 中⼩企業向けの受託開発を、モダンな開発スタイルで。 Microsoft MVP for Developer Technologies (Web Development, .NET) new from November 2024 - OSS: Sekiban - Event Sourcing and CQRS Framework ResultBoxes - Railway Oriented Programing Library. ⾼丘 知央 - Tomohisa Takaoka 2 / 14

Slide 3

Slide 3 text

ネットシェア可 .NET でアクターモデルをOrleansかDaprでやりたい セッション概要 ● 1. なぜアクターモデルが必要か? ● 2. .NETでのアクターモデルの選択肢 ○ Orleans ○ Akka.Net ○ Dapr ● 3. OrleansとDaprの違い ● 4. まとめ みなさん、バックエンドで複数サーバーで同じデータを更新しようとして 困ることがありますか? - 僕はあります 3 / 14

Slide 4

Slide 4 text

ネットシェア可 1. なぜアクターモデルが必要か? 4 / x

Slide 5

Slide 5 text

ネットシェア可 1. なぜアクターモデルが必要か? 5 / 14 簡単にいうと、シングルスレッドを複数サーバーで 実現する。 1アクター(グレイン)に1つのメソッドしか同時 実⾏できない。複数の依頼があっても、キューで 待ってくれる 複数サーバーに同じデータを複数持たなくても良 い。システムの⽅でシングルスレッドを実現してく れる

Slide 6

Slide 6 text

ネットシェア可 2. .NETでのアクターモデルの選択肢 6 / x

Slide 7

Slide 7 text

ネットシェア可 2. .NETでのアクターモデルの選択肢 7 / 14

Slide 8

Slide 8 text

ネットシェア可 3. OrleansとDapr、Akka.NETの違い 8 / x

Slide 9

Slide 9 text

ネットシェア可 3. OrleansとDapr、Akka.NETの違い 9 / 14 Akka.NET Akka (java) の流儀に倣ったピュアなアクターモデル(ツリー形式) スピードが速い コントロールのためのコードを書く+アクターの流儀で書かないといけない Orleans Microsoft Researchでアクターモデルをベースにした、仮想アクターモデル。 ツリー管理ではなく(型+ID)で管理するため使いやすい サーバー間通信をするのに、普通の await grain.method(param); みたいにかける サーバー間通信のためにシリアライズが⾛り、少し遅いことがある Dapr Microsoft で開発 2019 Orleansを分散システム向けに作り直した感じのVirtual Actor Model 複数⾔語でかける。C#のアクターとTypescriptのアクター、Goのアクターを混ぜられる ネットワーク通信によるオーバーヘッドが⼼配 Sidecarようのサーバーを⽴てる数が増える

Slide 10

Slide 10 text

ネットシェア可 3. OrleansとDapr、Akka.NETの違い 10 / 14

Slide 11

Slide 11 text

ネットシェア可 3. OrleansとDapr、Akka.NETの違い 11 / 14

Slide 12

Slide 12 text

ネットシェア可 5. まとめ 12 / x

Slide 13

Slide 13 text

ネットシェア可 まとめ 13 / 14 ● ステートの同時書き込みなどを制限するため に、アクターモデルは便利 ● Akka, Orleans, Dapr それぞれいいとこある ● 最近の改善がすごいので、Orleans使って、 Sekiban の分散システム対応を⾏なっていき ます。 ● Orleans組み込みのイベントソーシングは ちょっと古いので、⾃前でイベントソーシン グ連携機能は作っていく

Slide 14

Slide 14 text

Thank You 14 株式会社ジェイテックジャパン https://www.jtechs.com/japan/ Sekiban - イベントソーシング‧CQRSフレームワーク https://github.com/j-tech-japan/sekiban Zenn - ジェイテックジャパンブログ https://zenn.dev/p/jtechjapan_pub