kawabatas技術ブログ

試してみたことを書いていきます

PubSubのPullサブスクライバーのグレースフルシャットダウンについて

先日、Cloud PubSub の Pull サブスクライバーとして機能している Worker が終了するときに、処理であれば処理を終えてから停止してほしいなと思い(グレースフルシャットダウン)、調べていたところ、下の issue を発見した。 github.com I roughly underst…

AppEngineのGoのバージョンをあげる

zennからの転載 AppEngineのGo1.15がGAになったので、現在のGo1.14からあげました。 そのとき行ったことのメモです。 ローカルの Go のバージョンを変更 $ go version go version go1.15.10 darwin/amd64 go.mod の Go のバージョンを変更 go mod edit -go=1…

Twilioで取得した番号をSMS認証用に利用することは禁止らしい

zennの転載です。 この記事の内容はタイトルが全てです。 背景 チームで管理しているアカウント関連の2要素認証、電話番号登録で悩むことが多く、その解決策としてTwilioを利用できないかと考え調べました。 やりたかったこと classmethodさんのこの記事の内…

AWS/GCPのコストをGoogleデータポータルで可視化する

AWS/GCP の各プロジェクト/各サービスにいくらかかっているのか把握したく、システムを構築しました。 システムの概要は下記になります。 AWS/GCP の支払いレポートを BigQuery に集約する Google データポータルで BigQuery のデータを可視化する データポ…

Github Actions から Lambda をデプロイする

個人のローカル PC からデプロイする場合 他の人がデプロイしづらい 個人のローカル PC 内のツールのバージョンが変わる といった問題があり、Lambda や Cloud Functions 等も CI/CD からデプロイできた方が良さそうかもと感じている。 とりあえず、Lambda …

CloudSQLの日時バックアップを復元

本番 DB のデータで SQL 実行を試したいとき、 特定のテーブルを mysqldump して、ローカルの DB に入れたりするより、 別インスタンスを作成して、日時バックアップをそちらにリストアするのが最速だと感じているので、メモしておきます。 cloud.google.com…

HashiCorp Waypoint で GKE へデプロイしてみた

先日、Announcing HashiCorp Waypoint が発表され、早速 GKE へデプロイするチュートリアルをやってみた。 learn.hashicorp.com Install Waypoint on Local Homebrew でインストールできる。 $ brew tap hashicorp/tap $ brew install hashicorp/tap/waypoin…

GKE+Locustで10万RPSの負荷をかけてみた

GKE を使って Locust で 10万RPS の負荷をかけれました。 その時の k8s の node や pod 数について書きます。 Locust の使い方等については述べません。 なお、GKE で Locust を使うのは下記リポジトリに従えば簡単にできます。 github.com 1インスタンスあ…

外部キー制約の親子テーブルにおいて共有ロックからのdeadlock

deadlock のログを発見し、調べました。 結論はタイトルの通りです。 とりあえず、サンプルのSQLで試します。 CREATE TABLE players ( id int primary key, name varchar(20) ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE player_items ( id int pri…

Github Actions の deployment イベントでデプロイ

Github Deployments について Deployments are requests to deploy a specific ref (branch, SHA, tag). GitHub dispatches a deployment event that external services can listen for and act on when new deployments are created. ブランチやタグ、ハッ…

Ruby で Google Cloud Vision API を使って OCR を試してみる

概要 先日、次のバスの出発時刻を聞ける Alexa スキルを作りました。 その際、バスの時刻表を csv にして、プログラムから使ったのですが、 今だったら Cloud Vision API でバス時刻表の画像から時刻を読み取れるのでは、と思ったので試してみました。(Alex…

赤ちゃんのミルク等の時間を Google Spreadseet に記録する Alexa カスタムスキルを作る

概要 タイトルの通り、赤ちゃんのうんち、おしっこ、ミルクの時間を Google Spreadseet に記録する Alexa カスタムスキルを作ったという話です。 ほぼほぼこちらをマネさせていただきました。mm miyataro.hatenablog.com こちらも参考にさせていただきました…

【GCP認定資格】Professional Cloud Architectの勉強

gcp

概要 近々、Professional Cloud Architectの試験を受ける。 試験前に勉強したことについて要点をまとめておく。 落ちた場合も、受かった場合も(有効期限あるので)役に立つはず。 ※2019/08時点のこと。内容が変わっている可能性は大いにあり。 やったこと(…

Google Cloud Next '19 in Tokyo 参加レポート

gcp

概要 昨年に続き、今年も参加できたので、レポートです。 Google Cloud Nextとは、 Next は Google Cloud に関する技術や事例などを共有するためのイベントです。 kawabatas.hatenablog.com 受講セッション セッション動画は youtube に徐々に上げられていま…

【無料】Ruby で Cloud Run を使って API を作ってみた

概要 コンテナをサーバレス like に使える Cloud Run。 今までのサーバレスの課題(制約) 言語、ライブラリに制約 特定のベンダーロックイン GPU/TPU 特定のハードウェアへアクセスできない → Cloud Run on GKE なら GPU など使える を解決できる。 ポケモ…

空のUPDATEによるDEADLOCK

概要 負荷検証中に deadlock のログを見つけて、その対処をしたのでメモです。 クエリ特定 SHOW ENGINE INNODB STATUS; コマンドを実行すると、 LATEST DETECTED DEADLOCK でどのクエリで deadlock が発生したのかわかります。 今回は INSERT INTO tokens (i…

Golang で iOS/Android アプリ内課金の実装

go

概要 アプリ内課金の実装に関わったので、メモ。 ※アプリ内課金はプラットフォーム側の影響を受ける。記載内容が古くなっている可能性があるので注意。 テーブル設計 products テーブル App Store, Google Play に登録するアプリ内課金アイテムの情報。produ…

Github Actions で Firebase ファンクションをデプロイする際の注意点

概要 PR をマージしたときに、 Github Actions で Firebase ファンクションをデプロイするようにしたとき、 Github Actions が2回走り、その内1回のデプロイでエラーになりました。 それを解決した時のメモです。 エラー ログの一部抜粋です。 ※Firebase フ…

Docker コマンドメモ

概要 Dockerコマンド、毎回ググってる気がするので、自分用のメモ。 コマンド ビルド docker build -t [イメージ名] . ARG を使う場合、DockerfileにARGを定義して docker build --build-arg TOKEN=$TOKEN -t [イメージ名] . タグ docker tag [イメージID] […

Github Actions で Go のテストを実行する。その2

go

概要 kawabatas.hatenablog.com こちらに加え、go get でプライベートリポジトリのライブラリを使いたくなった。 手順 Github の Personal access token を作成する。こちら Github Actions のリポジトリに Secretsを追加する。こちら 下記のコードで実行す…

DeleGateのコンテナイメージを公開した

SOCKS プロキシサーバーの DeleGate をコンテナで立てたかったのだが、 docker hub で上位にあったイメージがエラーで使えなかった。 hub.docker.com $ docker-compose up Creating delegated_delegated_1 ... done Attaching to delegated_delegated_1 dele…

AWSのコンテナ関連サービスを調べる

概要 AWSのコンテナ関連サービスを調べた。 AWSのコンテナ関連サービス AWSのコンテナ関連サービスの選定例の紹介 ECS/EKS/Fargate/EC2 コントロールプレーン コンテナの管理:クラスターで Docker コンテナを簡単に実行、停止、管理できる ECS Cluster > Se…

Elastic Beanstalk Multi-container Docker 試してみる

概要 Elastic Beanstalk Multi-container Docker を試してみた。 VPC、Subnet、ECRリポジトリは事前に作成済みとする。 ネットワークロードバランサーで、1080番ポートを使う。 Elastic Beanstalk Multi-container Docker 複数コンテナの Docker 環境 Elasti…

ECRにコンテナイメージをあげる

概要 ECRにコンテナイメージをアップロードする手順メモ。 ECRドキュメント 手順 ローカルでビルドしておく docker build -t kawabatas/delegated . 認証 aws ecr get-login --region <リージョン> --no-include-email 出力された docker login コマンドを実…

ECS Fargate + NLB を CloudFormation で構築する

概要 ECS Fargate + NLB を CloudFormation でテンプレート化した。 VPC、Subnet、ECRリポジトリは事前に作成済みとし、 ECSクラスター/サービス/タスク定義、NLB、ターゲットグループ、セキュリティグループを CloudFormation で作成する。 参考 AWS CloudF…

ECS service discovery によって作られた Route53 zone を削除する

概要 ECS の機能の確認中に、ECS service discovery によって Route53 hosted zone が作られた。これを削除するメモ。 問題 Route53 の zone を AWS マネジメントコンソールから削除しようとすると、 The resource hostedzone/<ホストゾーンID> can only be …

Docker for mac で Kubernetes 環境構築

概要 Kubernetes のローカル環境が欲しくなった。 そういえば Docker for mac から使えるようになったという記事を見た記憶が... 使えるようにしたのでメモ。 バージョン stable版でも Kubernetes を使えるようになっていた。 手順 Preference を開いて Kube…

Lambda でシェルスクリプトを実行してみた

aws

Lambda でシェルスクリプトを実行するまでの動画を作ってみました。 公式ドキュメント www.youtube.com

Lambda Go のチュートリアルをやってみた

Lambda Go を動かすまでをやってみた動画を作ってみました。 AWS公式ドキュメント www.youtube.com

Golang でモックサーバーを作った

go

概要 Go で REST API 用のモックサーバーを作りました。 kawabatas/gomock バイナリの実行で、モックサーバーが起動する handler をパッケージにすることで、テストでも使える ということを意識しました。 gostub/gostub(紹介記事)を参考にさせていただき、r…