[戻る]

Java読書会BOF「データ指向アプリケーションデザイン」を読む会 第9回

開催概要

日時

2021年6月26日 10:00 - 17:00

場所

てくのかわさき 第4研修室

出席者(敬称略)

松永、平山、岩室、加藤、遠藤、高橋(徹)

  • 本日は、p.500 11.2.3から読書開始です。

11章 ストリーム処理

11.2.3 イベントソーシング

11.2.3.1 イベントログからの現在の状態の導出

11.2.3.2 コマンドとイベント

11.2.4 状態、ストリーム、イミュータビリティ

11.2.4.1 イミュータブルなイベントの利点

  • イミュータブルの例で書籍では会計処理(台帳)を例に解説しているが、プログラマー的にはバージョン管理の例が分かりやすいかもしれない。

    • 間違ったコミットは次にそれを取り消す差分(逆差分)をコミットする。

11.2.4.2 イベントログからの複数のビューの導出

11.2.4.3 並行性の制御

11.2.4.4 イミュータビリティの限界

11.3 ストリームの処理

11.3.1 ストリーム処理の利用

11.3.1.1 複合イベント処理

11.3.1.2 ストリーム分析

11.3.1.3 マテリアライズドビューの管理

11.3.1.4 ストリームでの検索

11.3.1.5 メッセージパッシングとRPC

11.3.2 時間に関する考察

11.3.2.1 イベントの時刻(event time)と処理の時刻(processing time)

11.3.2.2 準備ができていることの確認

11.3.2.3 結局のところ、どのクロックを使っているの?

11.3.2.4 ウィンドウの種類

11.3.3 ストリームの結合

11.3.3.1 ストリーム - ストリーム結合(ウィンドウ結合)

11.3.3.2 ストリーム - テーブル結合(ストリームのエンリッチ)

11.3.3.3 テーブル - テーブル結合(マテリアライズドビューのメンテナンス)

11.3.3.4 結合の時間に対する依存

11.3.4 耐障害性

11.3.4.1 マイクロバッチ処理とチェックポイント処理

11.3.4.2 アトミックなコミット再び

11.3.4.3 羃等性

11.3.4.4 障害後の状態の再構築

まとめ

12章 データシステムの将来

  • 章頭の引用は、トマス・アクィナス「神学大全」。難解すぎる。

12.1.1 データの導出による特化したツールの組み合わせ

12.1.1.1 データフローについての考慮

12.1.1.2 導出データと分散トランザクション

12.1.1.3 全順序の限界

12.1.1.4 因果律を把握するためのイベントの順序づけ

12.1.2 バッチ処理とストリーム処理

12.1.2.1 導出された状態の管理

12.1.2.2 アプリケーションの進化に伴うデータの再処理

12.1.2.3 ラムダアーキテクチャ

12.1.2.4 バッチ処理とストリーム処理の統合

12.2 データベースを解きほぐす

12.2.1 データストレージ技術の組み合わせ

12.2.1.1 インデックスの生成

12.2.1.2 すべてに関するメタデータベース

12.2.1.3 処理の解体

12.2.1.4 解体されたシステムと結合されたシステム

12.2.1.5 欠けているものは何か?

12.2.2 データフロー中心のアプリケーション設計

12.2.2.1 導出関数としてのアプリケーションコード

12.2.2.2 アプリケーションコードと状態の分離

  • p.554 「Webアプリケーションは、状態を持たないサービスとしてデプロイされます」

    • 業務データは、RDBMSに格納するが、アプリケーションの一時的な情報(セッション情報)は別途Key Valueストアに保存することが多い。

    • Webアプリケーションを記述する言語には、状態を扱うオブジェクト指向言語は不向きでは。

  • p.554 「関数型プログラミングのコミュニティの人々が好むジョークのとおり、『私たちは政教分離の原則を信じている』」が奥深い

    • "the separation of Church and state" で、Churchは Alonzo Churchのこと、stateはミュータブルな状態

12.2.2.3 データフロー:状態の変化とアプリケーションのコードとの相互作用

  • p.555 下5行目から、誤訳:「状態の変化を監視とそれに対して反応するプロセスを観点から分散演算処理を表現することをタプル空間モデルが探求していました」

    • 原文がないので正しい訳の案出せず

12.2.2.4 ストリームプロセッサとサービス

  • マイクロサービスで変更通知をもらうには? Rest APIではどうする?

    • Web Socketかメッセージキュー(MQ)を使うかKafkaを使うか。

    • そうすると、アプリケーションプログラムからは流れを追うのが難しくなる。

本日は、p.558 の 12.2.2.4 まで読みました。 次回は、p.558 の 12.2.3 からです。

[戻る]