Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

Agile Japan 2021 北陸サテライト参加ふりかえり

Twitterを見ていたらたまたまこんなイベントがあることを知って、wtnabeさんの話が久しぶりに聞けるしそういえばアジャイルってよく分からないから理解するきっかけになりそうだなということで参加してきました。

agile-hokuriku.connpass.com

イベント開催から1週間近く経ってしまいその時の温度感は残念ながら表現できませんが、私が得た気づきをカジュアルに書いていこうと思います。

続きを読む

Envoy の gRPC-JSON transcoder を利用する場合のアクセスログで元の HTTP method を出力したい

Envoy の gRPC-JSON transcoder を使っているときにアクセスログでハマったのでメモっておきます。

gRPC-JSON transcoder というのは、簡単にいうとRESTful な JSON API としてリクエストすると gRPC の形式に変換した上で upstream のサーバーにプロキシしてくれて、レスポンスについても gRPC の形式から JSON に戻してくれるという機能です。

www.envoyproxy.io

例えばこのような protobuf を定義して Envoy に取り込むと GET /shoes/{item_id} という JSON API のエンドポイントが有効になりリクエストを送れるようになります。

syntax = "proto3";

package shoes;

import "google/api/annotations.proto";

service Shoes {
  rpc GetShoeInfo(GetShoeInfoRequest) returns (ShoeInfo) {
    option (google.api.http) = {
      get : "/shoes/{item_id}"
    };
  }
}

message GetShoeInfoRequest { string item_id = 1; }

message ShoeInfo {
  string item_id = 1;
  string name = 2;
  string type = 3;
  repeated string size_labels = 4;
}

で、実際にリクエストを送ってみると以下のようなアクセスログが出力されました。パスが正しいので見落としていたのですがよく見ると GET でリクエストしたにも関わらず POST と出力されているのに気付き、調べてみることにしました。

$ curl -v http://localhost:8080/shoes/123456
> GET /shoes/123456 HTTP/1.1

---
[2021-02-20T06:56:41.536Z] "POST /shoes/123456 HTTP/1.1" 200 - 0 120 19 15 "-" "curl/7.64.1" "7f86f233-e658-400d-bb8f-999dea810924" "localhost:8080" "172.19.0.2:50051"
続きを読む

ALB で gRPC を利用する on EKS

先日、Application Load Balancer (ALB)が HTTP/2 および gRPC に対応するようになったという発表がありました。これをEKS上で稼働するアプリケーションにも適用できるかを試してみました。

ALB の HTTP/2 および gRPC 対応

EKS で ALB を利用するには?

続きを読む

ExternalDNS の policy を軽く調べたメモ

AWS の EKS 上で ExternalDNS を利用する際に policy という概念が分からなかったので、動かしながら簡単に調べてみたメモです。

policyって?

https://github.com/kubernetes-sigs/external-dns/blob/master/pkg/apis/externaldns/types.go#L410

Modify how DNS records are synchronized between sources and providers

  • マニフェストファイルで定義されるものとDNSプロバイダー間でDNSレコードがどのように同期が取られるかというのを設定する
  • sync, upsert-only, create-only の3種類のうちどれか
    • 鋭い方ならこの時点である程度想像付くかと思う
続きを読む

私が最近知ったGitHubのいくつかの便利機能

こんにちは。Webシステム開発や各種ソフトウェア開発において GitHub を利用する場面は多いかと思いますが、私が最近知った便利な機能をメモがてらいくつか紹介しようと思います。

Issue を Pull Request と関連付けて自動的にクローズさせる

docs.github.com

ある issue に対して Pull Request(以下PR)を作るというのは良くあることですが、PRを作る際に特定のキーワード(close, fix, resolve など詳しくはドキュメント参照)と対象のissue番号を書いておくと issue と PR が関連付けられます(画像1枚目, 2枚目)。右側のメニューに Linked issues という項目がありここに関連付けた issue が表示されます。

https://i.gyazo.com/127c48c1a7bca3d72a4cad2116f584e9.png

https://i.gyazo.com/9ef90b15d73400345557309a7e835826.png

この状態でPRがマージされると関連付けた issue が自動的にクローズされます!(画像3枚目, 4枚目) issue にはどのPRによってクローズされたかが明記され、また Linked pull requests という項目でも記録されます。

https://i.gyazo.com/7a17aecedf9402194ae3ff72c10fe416.png

https://i.gyazo.com/4ab694db3a239d4f47ac3c72b7a38fdc.png

これまではマージして自分で(もしくは他の誰かが) issue をクローズするという一手間がありましたが、自動化されるので楽できますね。あとは明示的に issue と特定のPRが関連しているというのが示されるのも後々振り返るときに便利だと思います。

続きを読む