Go

GoのロギングライブラリZapを試す

Go

はじめに GoのLogライブラリは標準のものを使うことが多かったのですが、構造化したりするのがちょっと大変だったので、より高機能で使い勝手がよいものを試してみたくなってZapというのをどこかで見かけたのを思い出して、ちょっと試してみようと思います。…

Echoのロガーを使う

Go

はじめに GoのフレームワークはEchoを使うことが最近は多いのですが、そのログ周りの機能を試してみようかと思います。 Echoのロガー Echoにはロガーに関するサポートが以下の2つあります。 Logger Middleware : アクセスログを出力するミドルウェア Logger …

SkaffoldのPipeline Stagesについてまとめる

はじめに 自分が所属する組織ではSkaffoldを開発ワークフローのツールとして導入しているのですが、しっかり使っていく上で動作の基本をきちんと抑えておこうかと。 今まででは、Javaのアプリをデプロイしてデバッグしてみたり、Helmを使って環境変数の切り…

pprofでGoアプリのプロファイル情報を取得する

はじめに Javaでプロファイル情報を取得して分析するための方法は、いくつか思い当たるものはあるのですがGoだとやり方全くわからなかったので少しまとめておこうかと思いました。 Go言語は標準ライブラリとして、runtime/pprofパッケージやnet/http/pprofパ…

OperatorSDKでCustom ResourceとCustom Controllerを作る

はじめに k8sではいくつかの拡張ポイントが用意されています。その中でも、APIをカスタムするためのCustom Resourceや調整ループによってリソースオブジェクトの状態管理を行い、宣言的なAPIを可能にするCustom Controllerがあります。 まえまえからこの2つ…

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ってなんぞ? よく聞くし、なんとなく理解した気ではいた…

Spring Cloud Contractをnon-JVMの言語で使う

はじめに Spring Cloud ContractはCDC(Consumer Driven Contract)をサポートするSpring Cloud傘下のプロジェクトです。 このプロジェクトはJavaのプロジェクトであることにより、初期の段階では、JVM言語以外での利用ができない状況でした。しかし、その場合…

testcontainer-goを試す

はじめに JavaのライブラリーにTestcontainersと呼ばれるものがありますが、そいつのGo版ライブラリがあると言うのを見かけたので試してみたい思います。 Testcontainersとは TestcontainersはJavaのライブラリーでDocker ContainerをJunitのライフサイクル…

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

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

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

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

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

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