第10回 Microservices Patterns 読書会

参加してきました。

 

今回のトピックは「8.3 API ゲートウェイパターンの実装」と、「9. マイクロサービスのテストその1」でした。

 

こちらは休憩時間にいただいた甘いものたち。(各自がいろいろなお菓子を持ち寄るので参加者が増えると大量になる)


f:id:yujiorama:20190928225528j:image

 

 

8.3 API ゲートウェイパターンの実装

APIゲートウェイの役割にAPIコンポジションを含めているのはどうなの、とか、マイクロフロントエンドとの関係はどうなの、とか、普段は BFF でやりますね、とかそういう会話をしてました。(実際に仕事で扱っている人の意見は参考になるなぁ)

マイクロフロントエンドについてはEJB時代のポートレットと同じじゃね?といった感想もあり、技術要素のトレンドを感じました。

書籍化するまでの期間よりサービスのアップデートの方が早くて、ALB のデメリットとして挙げられていたエッジ機能(認証)がないことは過去の話になってしまっているのは残念ポイント。

 

Spring Cloud Gateway によるゲートウェイの実装では、Reactor の抽象の Mono と CompletableFuture の違いはなんだろう、とかそういう会話をしてました。

私は、Mono はリアクティブプログラミングのための抽象で、並行プログラミングの要素も含んでいるのに対して、CompletableFuture は並行プログラミングのためのAPIでより低レベルの抽象と考えています。 

 

GraphQL によるゲートウェイの実装では、どの辺がグラフ構造なんだろう、とか、クライアントが自由すぎてサーバー側は負荷対策できないんじゃないか、とかそういう会話をしてました。

Facebook では友達の友達や友達の友達が所属するグループといった情報へのアクセスを効率化する必要があったため、クエリドキュメントの type のフィールドに並べた type を再帰的に問い合わせるような仕様のことをグラフと見立てているのではないか、という話をしました。

クライアントがクエリを少し変更しただけで、サーバーサイドで発生する問い合わせ数が大きく変化する場合がありそうで、そんな構成で負荷対策は不可能だ、とか、経験的にクライアント側でそんなやばいことをすることはなかった、とか、クライアント側ではサーバーサイドのSLAを気にするくらいがせいぜい、とか、そういう話をしてました。(参加者それぞれが経験的な話をしてくれてるので、とても参考になる)

 

9. マイクロサービスのテストその1

その1ではテストの考え方、ユニットテストを紹介し、その2でインテグレーションテスト以降を紹介することになっています。

 

早くデリバリーするには効率よくテストする必要があり、それはテスト自動化によって実現する、という考え方でした。

テスト自動化の導入状況の市場調査が紹介されていたけど、著者の見解は悲観的すぎるんじゃないかと思いました。

2018年のSauce Labs Testing Trendsレポートは、テスト自動化の状態のかなり暗い絵を描いている(https://saucelabs.com/resources/white-papers/testing-trends-for-2018) 組織の26%はほとんど自動化されておらず、わずか3%だけが完全に自動化されていることを説明している。

自動テストの説明では xUnit Test Patterns の考え方を踏襲していました。嬉しい。

ただ、わざわざ Exercise を Execute と置き換えているのが気になりました。何か嫌なことでもあったんだろうか。

 

ユニットテストやインテグレーションテストなどの分類基準はわりとふわっと説明されています。

ここで参加者の中から「コマンドとイベントを対象にテストするべきだ。サービスのロジックや内部のデータモデルは不安定なため、そのテストも無駄になりがちだからだ。」というイベントソーシング界隈の考え方を紹介されました。

特定の局面を氾化しすぎるパラノイアの考えだ(私)とか、銀の弾丸が無いことを知っているエンジニアにとって説得力のかけらもない意見だ(私)とか、自分たちでちゃんとテスティングフレームワークを開発して完全性を保証する手段を用意してから出直しして欲しい(私)とか、そういう意見が出ました。

 

テストを分類するツールとして、テストの4象限、テストピラミッドが紹介されています。

テストの4象限はブライアン・マリックさんのブログから引用されていました。

テストの4象限と言えば実践アジャイルテストだと思い込んでいたのですが、投稿日からするとおそらくこちらが初出の考え方だったようです。知らなかった。

 

テストピラミッドはマーティン・ファウラーのblikiからの引用でした。

 

次回予定

 

11月になりました。それまでは自習して過ごします。