Goのembedを使う

Go

はじめに Goの1.16からembed packageがcoreライブラリに追加されています。結構面白い感じの機能だったのでちょっと試してみようかと思います。 go enbedとは embedを利用すると静的ファイルをGoのプログラムに埋め込み、そこに対するアクセスを提供してくれ…

gockでHTTPリクエストをMockする

はじめに 最近はGo言語でWebアプリを書く際に使う諸々のライブラリを試してみているのですが、今はMockサーバをいろいろ見ていました。 Goの場合は標準ライブラリでもhttptestでいろいろ用意されていているみたいです。ただちょっと、そのまま使うには手間が…

GoのDIライブラリWireを試す

Go

はじめに GoのWebアプリは公私でなんとが作成したことがあったのですが、DIのライブラリをあまり使ったことが無かったなとふと思い。探してみたらGoogle製のアプリ、Wireがなんとなく目立ってたような気がしたので、Hello, worldとしてチュートリアルをやり…

jwt-goを試す

Go

はじめに JWTをGoで扱えるライブラリを少し探していて、検索して1番最初に出てきたのがjwt-goが出てきて、スターも多いしIsuueみる限り開発も盛んそうだったので使ってみようと思います。 そもそもJWTってなんぞ? よく聞くし、なんとなく理解した気ではいた…

S3 AWS SDK for JavaでMinIOのバケットとオブジェクトを操作する

はじめに 前回の記事でMiniIOを動かしてみたのですが、Javaのクライアントをいくつか試して見たいと思って、この記事ではAamazon SDKを使ってみようと思います。 前回同様MiniIOはDockerを用いて立てます。 使ってみる 環境 今回のプログラムを動かす環境は…

MinIOオブジェクトストレージとmcクライアントを動かしてみる

はじめに S3みたいなオブジェクトストレージで、ローカルで動かせるものが、なにかないか探しているときに、Minioというのがあることを教えてもらって、ちょっとインストールして、画像ファイルがダウンロードできるようになるまでやってみようと思います。 …

vmstatをつかってみる

はじめに vmstatというコマンドは名前は聞いたことあったのですが、あんまり使ったことなかったのでちゃんと使えるようになりたいと思ってちょっとまとめてみようかと思います。 vmstatとは vmstatコマンドはLinuxなどのOSでプロセス、メモリー、ページング…

Jaegerでk8s+Istio上のアプリ(Quarkus、Spring)を分散トレーシングする

はじめに 分散トレーシングをやる際にJaegerというツールがあって、試してみたいと思って試せていなかったのやってみようと思います。今回はMinikubeで作ったクラスターにIstioをデプロイして、 その環境でのトレーシングを行ってみようと思います。 Istioに…

KongのKubernetes Ingress Controllerを試す

はじめに 久しぶりにKongをちょっとお勉強したい気になってきたので、ドキュメントを眺めていたらKubernetes Ingress Controllerなるものを見つけました。面白そうだったので、とりあえず、動かすまでやってみようかと思います。 Kongの基本的なところとプラ…

atコマンドで指定時間にJobを単発実行させる

はじめに 最近、CrontabみたいなJobを定期的にスケジュールするのでは無くて、指定時間に単発で実行したいみたいな要件にぶち当たって、ちょっと調べていたらUnix系のOSにatというコマンドがあることに気がついたので機能を試して見ようかと思います。 at コ…

MinikubeにIstioをインストールする

はじめに 業務でKubernetesやIstioの機能の一部を利用することがあるですが、勉強のために試せる環境がほしかったのでローカルのMinikubeにインストールして見ようかと思います。 やってみる 動作環境 $ uname -srvmpio Linux 5.4.0-62-generic #70-Ubuntu S…

Reactor Publisherにおけるエラーハンドリング

はじめに 前回に引き続き、Reactive Springのを読んでいて、Publihsherのエラーハンドリングを行なうためのメソッド群が紹介されていたので、実際に動かして試してみようと思います。(書籍で紹介されていないものも結構あったので) 実際にやってみる 環境…

非Reactiveな非同期処理をFluxで扱う

はじめに Reactive Springを読んでいて、Flux.create()を使えば非Reactiveな非同期のイベントをReactiveのProducerにアダプトすることができるみたいなことが書かれていたので、実際に使って見て理解を深めたいと思います。 Flux.create()? Flux.create(Cons…

2020年振り返り

はじめに なんとなくいろんな人の振り返りみて、自分も振り返ってみようかとふと思ったので書いてみようかと。 ざっくり今年やったこと、あったこと 今年やったとことあったことをまとめると、以下のようになるかと思います。 転職して一年 ブログを平均して…

K6のシナリオを使ってみる

はじめに K6では負荷試験のシナリオを設定することが可能です。このブログではその機能を簡単に試してみてざっくりとした使い方を把握したいと思います。 このブログではK6をDockerを用いて起動します。また、テスト対象のアプリは以前のK6について書いたブ…

K6の負荷テスト結果をGrafana+InfluxDBで可視化する

はじめに K6は実行結果を様々なプラットフォームに送信して可視化することが可能です。 その中の選択肢としてGrafana+InfluxDBを利用することが可能なようなので、試してみたいと思います。 このブログでは、それぞれのツールはDockerを利用して立ち上げるこ…

負荷テストツールK6を試す

はじめに 負荷テストのツールを何かしら勉強したいなと思って、K6というツールがあるというのを知って良さそうに感じたのでとりあえず動かしてみるところまでやってみようと思います。 K6とは K6はLoad Impactという負荷テストのサービスを作っていた会社が…

Nettyの主要コンポーネントを整理する

はじめに Nettyを勉強していると、EventLoopやHandlerなど様々なコンポーネントがでてきて、混乱したのでちょっと図でまとめてみようと思います。このブログでは以下のようなNettyの主要コンポーネント(クラス or インターフェース)の役割をまとめそれぞれ…

NettyのChannelInboundHandlerとChannelOutboundHandleについてまとめる

はじめに Netty In Actionを読んでいて、それぞれがのハンドラーがどのどのタイミングで実行されるかが分かりづらかったので、自身の頭の中の整理を目的に自分の理解をまとめて見ようと思います。 Inbound? OutBound? ChannelPipelineでは、ソケットとアプ…

Nettyでエコーサーバーを書く

はじめに 最近、Netty in Actionを読んでいるのですが、生のNettyを今まで触ったことがなかったのでHello, Worldとして、Echoサーバを書いてみたいと思います。あまり、Netty全体の要素に対して深堀すると言うよりはひとまず動かすのを目指し、その中で必要…

Spring Boot 2.4.0についてメモ

はじめに 先週、(2020/11/12)にSpring Boot 2.4が出ましたが、どんなのが出たのかまとめて、なんとなく違いを把握おこうと思います。 基本的にはリリースブログとRelease Notesの内容を個人的に気になったところを少し深ぼって、自分の理解をまとめようと思…

Docker BuildKitを使う

はじめに Dockerの 18.09 以降にはBuildKitという機能が存在しますが、今までなんとなく使ってただけなのでちゃんとまとめてある程度理解しておきたいなと Docker BuildKitとは そもそもBuildKitそのものはDocker Engineとは別でMoby Projectで開発されてい…

QuarkusアプリのメトリクスをMicrometer+Prometeus+Grafanaで可視化する

はじめに Quarkus 1.9のリリースブログをなんとなく眺めていると以下のようなことが書かれていました。 Micrometer extension maturing 1.8 introduced a new Micrometer extension. During the 1.9 development cycle, it matured a lot and is now the rec…

Spring REST DocsとSpring Cloud Contractを連携して使ってみる

はじめに Spring REST DocsはSpringのRestFullアプリケーションにおけるWebAPIのインターフェースをドキュメント化する際のサポートをしてくれます。Spring MVC Testをもとにスニペットを自動生成し、Asciidoctorの形式で出力してくれます。 また、Spring Cl…

Docker Engine APIを使ってcURLでDokcer Engineを操作する

はじめに Docker のクライアントは公式だとGoとかPythonのものはあるようですが、UNIXドメインソケットを使ったHTTPでの操作も可能なようです。このブログではcURLを用いてDocker Engineに対するコマンドを実行してみたいと思います。 Docker Engine API Dok…

RouterFunctionでリクエストをインターセプトする

はじめに Router Functionを利用しているときのサーブレットフィルターとかインターセプターみたいなのってどうやってやるんだろって言うのが気になったのでちょっと調べてみます。 やってみる 環境 環境は以下の通り $ java --version openjdk 15 2020-09-1…

QuarkusでHealth Checkのエンドポイントを作成する

はじめに KubernetesにはLiveness ProbeをReadiness Probeといった概念があり、アプリケーションにそれぞれを確認するためのエンドポイントを作成する場合があります。 Spring Boot(2.3以上)などではそのエンドポイントが用意されていますが、Quarkusにもそ…

RouterFunctionでグローバルにエラーハンドリングして任意のレスポンスを返す

はじめに @ControllerAdvanceや@ExceptionHandler,を使ったグローバルなエラーハンドリングはやったことがあったのですが、そういえばRouterFanctionでやったことなかったなと思い試してみたいと思います。 やってみる ざっくりやること 大きく2つのやること…

Spring WebFluxでブロッキング処理を書く

はじめに てっきり、WebFluxのようなReactiveの場合、ハンドラーみたいなのはEventLoopとは別スレッドで動いているもんだとばかり思っていたのですが、どうやらそうではないようで、悪気なくリソースクラスとかでブロッキングするような処理を書いてしまいリ…

Kotlinでのエラーハンドリング(ResultとEither)

はじめに 諸々の事情で、今後Kotlinを使うことになりようなので、少し学びたいなと思いました。 いろいろ本とか読んでる中で、Javaと大きな違い1つとして、エラーハンドリングのやり方があるように感じたので、このブログではそれについてまとめます。 大本…