2020-01-01から1年間の記事一覧

Spring Cloud ContractでCDCする

はじめに マイクロサービスで、E2Eテストを書く際にマイクロサービスが依存するマイクロサービスを立ち上げるのが面倒だったり、時には現実的では無い場合があるなぁと最近感じてます。 そんな中でConsumer Driven Contract(CDC)という考え方を耳にはさみ…

GraalVMのNative ImageでReflectionを使う

はじめに よくSpringのアプリケーションをNative Image化するときDynamic ProxyやReflectionをゴリゴリ使っているので、設定が大変みたいな話を聞いたことがあるのですが。 じゃあ、実際に使うためにはどんな設定が必要なんだろう。というのが気になったので…

Elixirのex_parameteriedでパラメタライズテストを行なう

はじめに JavaのJunitでもパラメタライズテストを行なうための機能が色々と用意されていますが、Elixirのでもex_parameterizedというライブラリがあり、このライブラリを用いると便利にパラメタライズドテストを行なうことができます。 ちょっと便利そうだっ…

squashでKubernetesのPod内のGoアプリをデバッグ実行する

はじめに 最近、アプリの実行プラットフォームとしてk8sを使うことが多いのですが、ローカルで動いているアプリがk8s上で動かないみたいな事象にハマることがありました(もちろん、なるべく環境は合わせるようにしていたのでですが、ローカルでは外部APIを…

Springのプロジェクトをマルチモジュール構成で作る

はじめに Mavenではプロジェクトをマルチモジュール構成に構築することは可能ですが、Spring Frameworkでもその機能を利用することが可能です。 この辺の機能はあまり触ったことがなかったので、触ってみたいと思ったがのがこのブログのモチベーションです。…

Moxを試してみる

はじめに MoxはElixirのMockライブラリです。最近はElixirでコードを書く機会が増えているのいて、Mockをどうすれば良いのかよくわかってなかったのですが、手近なプロジェクトを覗いて見たらMoxというMockライブラリを使っていました。 Elixir界隈のデファ…

Kongのプラグインを書いてみる

はじめに Kongはマルチクラウド対応されたAPIゲートウェイです。Kongはlua-nginx-moduleとLuaと呼ばれるScript言語を利用して、 拡張プラグインを書くことが可能で、その機能を試してみようと思います。 ここでは、以下をゴールとします Kong Pluginの基本的…

Goのタイムゾーンの変更をalpineのDockerコンテナ内で行なう

はじめに Goのtimeパッケージにはいくつかタイムゾーンを指定するための関数が生えていますが、それらはすべて、 the IANA Time Zone databaseと呼ばれる世界各地の標準時間を集めたDatabaseを利用してタイムゾーンの情報を取得します。これはubuntuの環境な…

APIゲートウェイKongを試す

はじめに 最近触れた技術としてKongと呼ばれるNginxベースのAPIゲートウェイがあります。個人的に興味が湧いたので調べてまとめようと思います。以下のようなことをまとめたいなと思います。 Kongの概要 基本的な機能の使い方(インストールはDocker前提) S…

MicroProfileを調べてまとめる

はじめに 昨今はマイクロサービスが採用されるソフトウェアアーキテクチャとして、一般的になっているように感じます。マイクロサービスでは従来のようにアプリケーションを大きな一枚岩として作成せずアプリケーションの単位で分割し、それらのまとまりで、…

JavaのFlight RecorderとJDK Mission Controlをつかってプロファイリングをしてみる

はじめに 自分は結構JVMの動きとか、GCとかそういうのに興味があるのですが、どう分析して良いのかさっぱりでした。そこで、今回はJavaのプロファイリングデータを収集するツールであるFlight Recorderととその分析ツールであるJDK Mission Controlに入門し…

Network Namespaceを使って、Linux上で仮想のネットワーク環境を作る

はじめに ネットワークで色々実験したいときに自分自身の環境内で完結するネットワークが欲しい時があると思います。この記事ではNetwork Namespaceを使って自分のPC内に仮想のネットワークを作ってpingコマンドを送信してみたいと思います。 最初にお断りし…

プロダクションレディマイクロサービスを読んだ

はじめに プロダクションマイクロサービスを読みました。学んだことの内容を整理をするために書評を書きたいと思います。 全体を通して 以前、マイクロサービスアーキテクチャという似たような名前の書籍を読んだことがあるのですが、こちらに比べてかなり読…

Spring Cloud Circuit Breaker(Resilience4j)を試す。

はじめに CircuitBraekrの実装はNetflixのNetfix Hystrixが有名です。Spirngでもいくつかの実装を組み込めるようになっており、Spring Cloud傘下のプロジェクトとして公開されています。Springで使えるCircuit Breakerの実装はいくつかありますが、その中で…

RscoketとSpring Secutiryの組み合わせを試す。

はじめに Rsocketとはアプリケーションレイヤーのプロトコルです。テキストベースのプロトコルであるHTTPとは違いバイナリベースでもデータの送受信を行います。また、RsocketはUDP、TCP、WebSocketなど複数のプロトコル上での実装があります。 その他にも以…