yoskhdia’s diary

DDDとかプログラミングとかアーキテクチャとか雑多に

そのトランザクションは果たして本当にトランザクションなのだろうか?

DDDネタです。 DDD Community-JPのDiscordで「複数の集約(Aggregate)をまたいで整合性をどう担保するのが良いのか?」という話がされていました。 この話を読んでいて、

yoskhdia.hatenablog.com

でもサラッと触れた「トランザクション」をもう少し掘ってみようかなと思い立ったので書いてみるエントリです。

続きを読む

Kamonを使ってログにトレースIDを出力する(+Play Framework)

一般に非同期処理を行うと、その実行をログからトレースすることは難しくなります。 Scalaアプリケーションを運用する際もこれが問題となります。 コツコツとログにIDを埋めて回ることもできますが、横断的な関心事はAOPで解決したくもなります。 ということで、今回はKamonを試してみました。

kamon.io

Kamonは便利なのですがイマイチドキュメントがまとまっておらず、ちょっと苦労したのでここにまとめておくエントリです。

続きを読む

「Reactive Messaging Patternsに学ぶシステム間統合」というテーマで発表してきました

第5回Reactive System Meetup in 西新宿で登壇してきました*1

reactive-shinjuku.connpass.com

発表資料

docs.google.com

一部表現を変えつつ、補足をして発表資料を公開します*2トークスクリプトもつけてありますので併せてどうぞ。 明日から開催のScala Matsuri 2018の弾みになれば幸いです。

泣く泣くカットしたトランザクションの話は続きを読むからどうぞ↓

*1:発表時間1分超えた…

*2:だれか英訳手伝ってくれないかな…

続きを読む

Scalaで良い感じにURI(URL)を操作する

TL;DR

sttpのcoreライブラリだけ使用しました。
しかし、デフォルトでデコードも行われるため、これを回避する方法を考えました。
将来的に使えなくなる可能性はあります(!)

続きを読む

Snowflake形式のIDを採用した場合の苦労ポイント

高速にIDを採番できる仕組みを検討したとき、Snowflake形式のID生成は選択肢のひとつとして有力です。 Snowflakeを紹介する記事は見つかりますが、実際に採用して苦労した話はあまり聞かないため、備忘的に書いてみるエントリです。

続きを読む

書籍『Akka実践バイブル』の翻訳レビューに参加してきました

f:id:yoskhdia:20171207181459j:plain

書籍『Akka実践バイブル』の翻訳レビューに参加してきました。*1 書籍のレビュアーとしては2回め、技術書としては初めてです。

興味のある人を増やせれば良いなーと思い、少しばかり本の紹介をしてみたいと思います。

www.shoeisha.co.jp

*1:主に11章〜13章の辺りを担当しました。

続きを読む

JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ

JVMにチューニング項目は多々あれど、プロダクションで運用する際に予めおさえておきたい項目をまとめてみるエントリです。*1 勿論、OSもJVMもデフォルトである程度のパフォーマンスは発揮でき、計測を伴わないチューニングは悪手であることはよく知られています。 しかし、設定しておかないとパフォーマンスにそのまま影響すると分かるものを調べないのは裸で戦場に赴くようなものです。*2 どんな項目をどう変更すれば良いのか知っていることは重要な武器なのです。

なぜ調べるのか

今回、チューニングポイントを調べるにあたって、私のモチベーションはどこにあるのかを考えると、以下の要件を満たしたいということがあげられます。

  • アプリケーションとして求められる品質水準として動作する → 性能目標
  • 異常時に事象を追うことができる

ここでいう品質水準・異常とは、パフォーマンスが明らかに低い、アプリケーションがクラッシュする、などの(JVM・アプリケーション双方の)期待しない振る舞いを指します。

性能目標

やみくもにチューニングしても終わりがなく、何をチューニングすれば良いかも判断しづらいものです。 性能目標を定めることで、このラインをクリアし続けることを目指す方が健全です。 例えば以下のような項目があげられるかと思います。

TL;DR

だいたいのことはJavaパフォーマンスに書いてあるので、これを読もう。

www.oreilly.co.jp

*1:何番煎じのエントリだという感じですが、自分でまとめる方が学習になるので…

*2:早まった最適化は悪だが、最適化を何もせずに本番にあてろということではないと思う

続きを読む