Enviar búsqueda
Cargar
イベント・ソーシングを知る
•
Descargar como PPTX, PDF
•
41 recomendaciones
•
31,179 vistas
Shuhei Fujita
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 33
Descargar ahora
Recomendados
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
例外設計における大罪
例外設計における大罪
Takuto Wada
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Recomendados
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
例外設計における大罪
例外設計における大罪
Takuto Wada
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
MLOps入門
MLOps入門
Hiro Mura
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Guide To AGPL
Guide To AGPL
Mikiya Okuno
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
Hiroyuki Ohnaka
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
S3をDB利用 ショッピングセンター向けポイントシステム概要
S3をDB利用 ショッピングセンター向けポイントシステム概要
一成 田部井
AWS活用のいままでとこれから -東急ハンズの事例-
AWS活用のいままでとこれから -東急ハンズの事例-
Taiji INOUE
Más contenido relacionado
La actualidad más candente
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
MLOps入門
MLOps入門
Hiro Mura
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Guide To AGPL
Guide To AGPL
Mikiya Okuno
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
Hiroyuki Ohnaka
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
La actualidad más candente
(20)
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
MLOps入門
MLOps入門
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Redisの特徴と活用方法について
Redisの特徴と活用方法について
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Guide To AGPL
Guide To AGPL
Mavenの真実とウソ
Mavenの真実とウソ
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Destacado
S3をDB利用 ショッピングセンター向けポイントシステム概要
S3をDB利用 ショッピングセンター向けポイントシステム概要
一成 田部井
AWS活用のいままでとこれから -東急ハンズの事例-
AWS活用のいままでとこれから -東急ハンズの事例-
Taiji INOUE
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
Scala with DDD
Scala with DDD
潤一 加藤
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
Emanuele DelBono
JAWS FESTA Kyusyu LT_ハンズラボ青木由佳
JAWS FESTA Kyusyu LT_ハンズラボ青木由佳
由佳 青木
Jaws festa 2015 <40歳の開発のpmが未経験でインフラエンジニアになってみて>
Jaws festa 2015 <40歳の開発のpmが未経験でインフラエンジニアになってみて>
Hiroyuki Hiki
JAWSFESTAKyusyu_JAWSで学べることってなぁに_ゆかりんあゆゆ_20151103
JAWSFESTAKyusyu_JAWSで学べることってなぁに_ゆかりんあゆゆ_20151103
由佳 青木
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
de:code 2017
SharePoint Online Communication Sites お手軽サイト作成
SharePoint Online Communication Sites お手軽サイト作成
Hirofumi Ota
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
de:code 2017
マイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャとは何か
Yusuke Suzuki
当たり前を当たり前に:Agile2017レポート
当たり前を当たり前に:Agile2017レポート
LINE Corporation
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
Yusuke Suzuki
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Destacado
(15)
S3をDB利用 ショッピングセンター向けポイントシステム概要
S3をDB利用 ショッピングセンター向けポイントシステム概要
AWS活用のいままでとこれから -東急ハンズの事例-
AWS活用のいままでとこれから -東急ハンズの事例-
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
Scala with DDD
Scala with DDD
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
JAWS FESTA Kyusyu LT_ハンズラボ青木由佳
JAWS FESTA Kyusyu LT_ハンズラボ青木由佳
Jaws festa 2015 <40歳の開発のpmが未経験でインフラエンジニアになってみて>
Jaws festa 2015 <40歳の開発のpmが未経験でインフラエンジニアになってみて>
JAWSFESTAKyusyu_JAWSで学べることってなぁに_ゆかりんあゆゆ_20151103
JAWSFESTAKyusyu_JAWSで学べることってなぁに_ゆかりんあゆゆ_20151103
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
SharePoint Online Communication Sites お手軽サイト作成
SharePoint Online Communication Sites お手軽サイト作成
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
マイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャとは何か
当たり前を当たり前に:Agile2017レポート
当たり前を当たり前に:Agile2017レポート
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
イベント・ソーシングを知る
1.
イベント・ソーシングを知る より価値の高いソフトウェア開発
のために
2.
なんのはなし? • ソフトウェアの設計的な話 • ソフトウェアの情報をどのように永続化
して扱うか(ソーシング, Sourcing) • いつもと少し違うアプローチを紹介しま す
3.
例: 本のレンタルサービス 1.
ユーザが本を登録する 2. 本はユーザなら誰でも借りられる 3. 本を借りた人が本を返す 4. 本がまた借りられるようになる(2に戻る)
4.
「フツーに」考える
5.
たぶんこうなる
本テーブル的なもの タイトル 貸し出し ONE PIECE NARUTO
6.
たぶんこうなる 1. スタンが「HUNTER×HUNTER」を登録
タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER
7.
たぶんこうなる 1. スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる
タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER カイルが借り出し中
8.
たぶんこうなる 1. スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3.
カイルが「HUNTER×HUNTER」を返す タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER
9.
たぶんこうなる 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER ケニーが借り出し中
10.
状態を中心に考える ステート・ソーシング
11.
ステート・ソーシング •
従来の一般的な考え方 • ステート=状態 • 状態中心のソフトウェア設計 • あらゆる情報は状態が永続化される • 最新の状態を常に記憶しておくのが一般 的
12.
フツーですね
13.
見落とされがちな問題 • 現在の状態はわかるが… • 状態が変化した理由や経緯が全て失われ
る • ソフトウェアにとって非常に価値の高い 情報 • 履歴やログで記録をとるのは限界がある
14.
ステート・ソーシングの問題を解決するために イベント・ソーシングとは
15.
イベント中心に捉える • 様々な出来事(イベント)の結果、状態が変
化する • 「状態」はイベントの結果に過ぎず、本 質ではないのではないか(という考え方)
16.
イベントを記録する • ソフトウェアで起こる全てのイベントを
記録する • 記録されたイベントは変更や削除をしな い • 「状態」は記録しません! • 何が起きたかだけを淡々と記録します
17.
ほんとにそのまま記録します 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる このままです タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER ケニーが借り出し中
18.
いやいや、でも状態は必要で
しょ?
19.
イベントを再生する • 記録されたイベントを順に再生すること
で、現在の状態を導出できる • 1つずつイベントを辿れば必ず今の状態に たどり着きます
20.
イベントを再生する順番に辿ります 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる 記録されているイベン タイトル 貸し出し ト ONE PIECE NARUTO
21.
イベントを再生する 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER
22.
イベントを再生する 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER カイルが借り出し中
23.
イベントを再生する 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER
24.
イベントを再生する 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER ケニーが借り出し中
25.
イベントを再生する 1.
スタンが「HUNTER×HUNTER」を登録 2. カイルが「HUNTER×HUNTER」を借りる 3. カイルが「HUNTER×HUNTER」を返す 4. ケニーが「HUNTER×HUNTER」を借りる 最新の状態が再現 タイトル 貸し出し ONE PIECE NARUTO HUNTER×HUNTER ケニーが借り出し中
26.
イベント・ソーシングのすごいと
ころ • ソフトウェアの完全な履歴が手に入る • ソフトウェアの任意の部分あるいは全体 を「ある時点」に簡単に再現できる • 有用な設計と相性が良い – ドメイン駆動設計(DDD) – コマンドクエリ責務分離(CQRS)
27.
イベント・ソーシングすごい!
28.
残念ながら問題点も
29.
パフォーマンス • 「最新の状態」を得るために、毎回膨大
な量のイベントをリプレイしていたら大 変 • 大量のイベントを捌かなければならない • ストレージ容量を多く使用する可能性
30.
バージョニング • 仕様変更が起こったら、過去のイベント
をどう処理するか • 最新の状態のみ影響を考えればよいス テート・ソーシングと違って、大量の過 去のイベントにも影響が出る
31.
実装が複雑 • イベントを記録してリプレイする機構を
実装しないといけない • 様々な問題に対処するために、様々な仕 組みを導入する必要があり、さらに複雑 さに輪をかける – キャッシング – イベントのアップデータ – 参照系の処理への対処
32.
最後に • ステート・ソーシングの問題を認識する –
当たり前すぎて気づかなかったり • イベント・ソーシングの可能性 – いろいろ問題はありますが、ステート・ソー シングでは成し得ない価値の提供ができるの では?
33.
参考 • Greg Young流CQRS
- Mark Nijhof • Why Event Sourcing? • Event Sourcing and CQRS, Let's use it. • state ソーシング、 event ソーシング 【ス タイルの選択肢】 • event とメッセージング 【きっと、良い パターン】
Descargar ahora