2019-06-01から1ヶ月間の記事一覧
概要 Go言語のuuid生成で有名な satori/go.uuid はこちらのコミットでUUIDv4を生成する際にエラーを返すように変わりました。 理由は github.com このissueに対応するためなのですが、内部で使っているrand.Read()はそもそもどんな時にエラーが起きるのだろ…
概要 Kubernetesを利用する上であったら便利なツールの紹介です。 stern kubectx kubens kube-tmux stern podのログを簡単に取れるツールです。 github.com インストール $ brew install stern
概要 Kubernetesには以下のフィールドでCPUやメモリを制限することが可能です。 spec.containers[].resources.limits.cpu spec.containers[].resources.limits.memory spec.containers[].resources.requests.cpu spec.containers[].resources.requests.memor…
概要 タイトルの通りなのですが日本語記事がなかったのでまとめておきます。 経緯 developers.cyberagent.co.jp の対応でGooglePlayの定期購読ユーザの購読状態をリアルタイムに更新するため、Real-time developer notificationsを導入しました。 その際Pub/…
概要 ユーザの行動ログで利用しているデータがDBにあるので、それをまるっとBigQueryへ書き込む方法をEmbulkを使って説明します。 BigQueryにマスタデータを保存する理由は? 単純に行動ログに保存される関連データがIDのみで保存されていると、詳細が知りた…
Embulkとは fluentdのバッチ版のようなツールで、データを一括転送したい時に利用します。 ref: GitHub - embulk/embulk: Embulk: Pluggable Bulk Data Loader. メリット 自前で実装すると面倒な 並列実行でパフォーマンスの最適化 validation dry-run エラ…
概要 Go言語に限らずではありますが レイヤ間のエラー伝搬 外部APIを叩いた時のエラーコードハンドリング HTTPやgRPCとしてレスポンスを返す時のエラーハンドリング で悩むことは多いと思います。 今回はそれの1つの方針を紹介します。 課題 レイヤ間のエラ…
概要 Goにはsingleflightという重複した関数呼び出しを抑制する仕組みがあります。 例えばキャッシュが切れた時にOriginへのアクセスが並行して走ってしまう(Cache Stampede)ケースでサーバやDBがスローダウンする問題がありますが、こういった時にsinglefli…