JJUGナイトセミナー「みんなの小噺」に参加しました。今回はオンライン開催。簡単に所感をまとめます。
所感
Retrofit は割と前からあるみたいだけど、初めて知りました。もともとは Android 向けなんだろうか。Type-safe だし、新しいプロトコルにも対応しているようでなかなかよさそう。
今回、初めて JIG のデモを見ましたが、思ってたよりずっといい感じ。設計と実装のサイクルを回すという考えをしっかりサポートしてるように見えました。DDD の勉強でコード書くときに使ってみようかな。
Dapr は、この前の JSUG で聴いた Spring Cloud Consul の話に似てるような気がした...?同じ目的で作られてるものなんだろうか。あと、組み合わせ問題の話があったけど、そのあたりがイマイチ腹落ちしてない...。
HTTP/gRPCで疎結合にしてると思われるんだけど、ダパーでどういう組み合わせ問題があり得るんだろうか #jjug
— kntmr (@knt_mr) 2020年4月30日
[2020/05/02 追記] YouTube の URL
以下、メモから抜粋。
JavaでHTTP接続してみよう
- JSON は js のオブジェクトをデータ記述に流用したもの
- 標準 API
java.net.Socket
- TCP 接続
- バークレイソケットをラップ
- HTTP プロトコル
java.net.URLConnection
- HTTP で使うときは HttpURLConnection にダウンキャストが必要
- 主にドキュメント取得で使う (POST パラメータ送信は面倒)
- 同期処理のみ
java.net.http.HttpClient
HttpResponse.BodyHandler
でレスポンスのハンドラBodyHandlers#ofLines
でレスポンスを Stream で返せる- HTTP2 に対応
- 非同期でモダンな API
- Retrofit
- フレームワークで用意されているものがあればそっちを使うのがよさそう
RDRA2.0のサンプルをJIGを利用して実装してみたよ
- system-sekkei/library
- RDRA
- 要件定義のためのモデリング手法
- RDRA2.0 ハンドブック
- JIG
- ドメインモデルの実装
- バリエーションダイアグラム
- ビジネスに登場する値/区分(条件)
- 状態モデル
- ビジネスに登場する状態/状態遷移
- 情報モデル
- ビジネスに登場する情報とそれらの関連を表す
- パッケージ構成
- バリエーションダイアグラム
- アプリケーション層の実装
- JIG ドキュメント
- パッケージの依存関係 (深さはファイル名の
-depthN
で見れる?) - ビジネスルールの関連 (クラスの関連)
- クラス間の相互依存が見つけやすい
- 各層の呼び出し関係が分かりやすい
- Controller ⇒ Coordinator
- Coordinator ⇒ Service
- Service ⇒ Repository
- 画面 ⇒ ユースケース
- パッケージの依存関係 (深さはファイル名の
- RDRA ⇔ JIG で図を比較しながら実装する
- サイクルを回す
なぜ僕がDaprを使おうとしているのかという話
- 分散アプリケーションランタイム
- Dapr のコンテナ上でアプリが動くわけではない
- サービス呼び出しやデータストア保存は Dapr のプロセス経由
- サービスディスカバリは Dapr が担う
- クラスタ構成の時は k9s を使う?
- Spring Boot / Spring Cloud でも実現可
- ビジネスロジックとアプリインフラが1プロセス
- 密結合
- Dapr
- バージョンアップ
- Java と Dapr のバージョンアップを別にできる
- Spring のようにフルスタックではない
- 組み合わせ問題が起きるかも?
- https://github.com/cero-t/dapr-trial