はじめに Router Functionを利用しているときのサーブレットフィルターとかインターセプターみたいなのってどうやってやるんだろって言うのが気になったのでちょっと調べてみます。 やってみる 環境 環境は以下の通り $ java --version openjdk 15 2020-09-1…
はじめに KubernetesにはLiveness ProbeをReadiness Probeといった概念があり、アプリケーションにそれぞれを確認するためのエンドポイントを作成する場合があります。 Spring Boot(2.3以上)などではそのエンドポイントが用意されていますが、Quarkusにもそ…
はじめに @ControllerAdvanceや@ExceptionHandler,を使ったグローバルなエラーハンドリングはやったことがあったのですが、そういえばRouterFanctionでやったことなかったなと思い試してみたいと思います。 やってみる ざっくりやること 大きく2つのやること…
はじめに てっきり、WebFluxのようなReactiveの場合、ハンドラーみたいなのはEventLoopとは別スレッドで動いているもんだとばかり思っていたのですが、どうやらそうではないようで(冷静に考えれば当たり前、と言うかそうしてしまったら意味がない)、悪気な…
はじめに 諸々の事情で、今後Kotlinを使うことになりようなので、少し学びたいなと思いました。 いろいろ本とか読んでる中で、Javaと大きな違い1つとして、エラーハンドリングのやり方があるように感じたので、このブログではそれについてまとめます。 大本…
はじめに LinuxのシステムでOSの起動時間を調べるためにはsystemd-analyzeというツールが使えるみたいです。 このブログではsystem-analyzeについてまとめ、いくつかの機能を試してみたいと思います。 systemd-analyzeとは Linuxシステムの起動時の情報を解…
はじめに Dockerのイメージを調査するツールとしてDiveというツールがあるのを知り試してみようと思います。 何ができるか? Diveでは主に以下のようなことができます。 イメージ層ごとのコンテンツの調査 それぞれのイメージのレイヤーの差分 イメージの効…
はじめに Javaのプロセスをプロファイルするツールはいろいろあると思うのですが、個人的にVisuralVMが気になったので、調べてまとめます。 具体的には以下のようなことを目指します。 VivualVMの概要を知る どのようなことができるかを知る 実際に使ってみ…
はじめに Reactive Stream系のものはSpring WebFluxしか触ったことが無かったのですが、QuarkusにもReactive Routeというのがあるというのを知り使ってみたくなったので、その機能を試してみたいと思います。 Reactive RouteとSmallrye Mutiny まず、Quarkus…
はじめに 表題通りなんですが、よくやり方を忘れるのでメモしておきます。 手順 手順としては簡単で 1.WebTestClient.ResponseSpectのreaurnResultを呼び出し、FluxExchangeResultを受け取る。 2. FluxExchengeResultのgetResponseBody()を呼び出してFluxを…
はじめに Elixirで非同期をやる場合Task.asyncをつかいますが、非同期で呼び出した複数の関数の呼び出し結果に対して、逐次的に別の処理をかけたい状況で、同僚のElixirに詳しい人のコード見てなるほどと思ったのでメモとして残しておきます。 どうするか? …
はじめに ログコレクターでアプリの情報収集する場合、Jsonでログが出力されている方が何かとやりやすいことがありますがQuarkusでもログの出力をJsonに変えることができます。 ログをJsonに変更する 依存の追加 適当にQuarkusプロジェクトを作成し、以下の…
はじめに Quarkusのアプリケーションを作ったことが無かったので、エコーサーバを作りたいと思います。ただ、エコーサーバ作るだけだと面白くないので、JWT認証と合わせてやってみようかと思います。 以下のようなことを目標にします。 Quarkusのプロジェク…
はじめに Elixirにはコレクションを列挙して処理するためのモジュールとして Enum モジュールというのがありますが、列挙中にエラーが発生して、実行をやめたい場合のエラーハンドリングについてやり方を調べる機会があったのでそのメモを残しておきます。 E…
はじめに Spring Cloud ContractはCDC(Consumer Driven Contract)をサポートするSpring Cloud傘下のプロジェクトです。 このプロジェクトはJavaのプロジェクトであることにより、初期の段階では、JVM言語以外での利用ができない状況でした。しかし、その場合…
はじめに システムを継続して動作させ、改善していく上で、重要なプロセスの1つが監視だと思います。このブログではその監視についてのチップがまとめられている「入門 監視」についてまとめます。なお、このブログはあくまで私自身の理解を自分の言葉でまと…
はじめに JavaのライブラリーにTestcontainersと呼ばれるものがありますが、そいつのGo版ライブラリがあると言うのを見かけたので試してみたい思います。 Testcontainersとは TestcontainersはJavaのライブラリーでDocker ContainerをJunitのライフサイクル…
はじめに AppCDS(Application Class Data Sharing)はCDS(Class Data Sharing)の拡張であり、Java 10以降で利用可能です。この機能を使うことで、アプリケーションでロードされるクラスを共有アーカイブから読み込むようになり、その起動時間を削減することが…
はじめに マイクロサービスで、E2Eテストを書く際にマイクロサービスが依存するマイクロサービスを立ち上げるのが面倒だったり、時には現実的では無い場合があるなぁと最近感じてます。 そんな中でConsumer Driven Contract(CDC)という考え方を耳にはさみ…
はじめに よくSpringのアプリケーションをNative Image化するときDynamic ProxyやReflectionをゴリゴリ使っているので、設定が大変みたいな話を聞いたことがあるのですが。 じゃあ、実際に使うためにはどんな設定が必要なんだろう。というのが気になったので…
はじめに JavaのJunitでもパラメタライズテストを行なうための機能が色々と用意されていますが、Elixirのでもex_parameterizedというライブラリがあり、このライブラリを用いると便利にパラメタライズドテストを行なうことができます。 ちょっと便利そうだっ…
はじめに 最近、アプリの実行プラットフォームとしてk8sを使うことが多いのですが、ローカルで動いているアプリがk8s上で動かないみたいな事象にハマることがありました(もちろん、なるべく環境は合わせるようにしていたのでですが、ローカルでは外部APIを…
はじめに Mavenではプロジェクトをマルチモジュール構成に構築することは可能ですが、Spring Frameworkでもその機能を利用することが可能です。 この辺の機能はあまり触ったことがなかったので、触ってみたいと思ったがのがこのブログのモチベーションです。…
はじめに MoxはElixirのMockライブラリです。最近はElixirでコードを書く機会が増えているのいて、Mockをどうすれば良いのかよくわかってなかったのですが、手近なプロジェクトを覗いて見たらMoxというMockライブラリを使っていました。 Elixir界隈のデファ…
はじめに Kongはマルチクラウド対応されたAPIゲートウェイです。Kongはlua-nginx-moduleとLuaと呼ばれるScript言語を利用して、 拡張プラグインを書くことが可能で、その機能を試してみようと思います。 ここでは、以下をゴールとします Kong Pluginの基本的…
はじめに Goのtimeパッケージにはいくつかタイムゾーンを指定するための関数が生えていますが、それらはすべて、 the IANA Time Zone databaseと呼ばれる世界各地の標準時間を集めたDatabaseを利用してタイムゾーンの情報を取得します。これはubuntuの環境な…
はじめに 最近触れた技術としてKongと呼ばれるNginxベースのAPIゲートウェイがあります。個人的に興味が湧いたので調べてまとめようと思います。以下のようなことをまとめたいなと思います。 Kongの概要 基本的な機能の使い方(インストールはDocker前提) S…
はじめに 昨今はマイクロサービスが採用されるソフトウェアアーキテクチャとして、一般的になっているように感じます。マイクロサービスでは従来のようにアプリケーションを大きな一枚岩として作成せずアプリケーションの単位で分割し、それらのまとまりで、…
はじめに 自分は結構JVMの動きとか、GCとかそういうのに興味があるのですが、どう分析して良いのかさっぱりでした。そこで、今回はJavaのプロファイリングデータを収集するツールであるFlight Recorderととその分析ツールであるJDK Mission Controlに入門し…
はじめに ネットワークで色々実験したいときに自分自身の環境内で完結するネットワークが欲しい時があると思います。この記事ではNetwork Namespaceを使って自分のPC内に仮想のネットワークを作ってpingコマンドを送信してみたいと思います。 最初にお断りし…