RDS(MySQL)からBigQueryへのデータ同期

RDS(MySQL) から BigQuery へ1日1回データを同期して、データ分析やレポート系の処理で利用することになりました。 構成 以下の構成でデータを同期することにしました。 要件1: データの断面は合わせたい 元々はEmblukを使って直接同期しようと考えていたが、Embulkだとテーブル毎にデータを同期することになり、テーブルによってデータの断面が微妙にずれるため断念 CSV 形式でダンプして、Embulk で同期することもできそうだが、元々自動でスナップショットが取られているのでそれを利用することにした => スナップショットを parquet 形式で S3 にエクスポートすれば、BigQuery Data Transfer Service を使って BigQuery に取り込むことができるので、採用 要件2: コストを抑えたい 定額利用料がかかるサービスは使うことはで Continue Reading

Posted On :
Category:

Go+chi+GAEでクリーンアーキテクチャを試してみた

ちょうど、このブログとは別に自分用のマイクロブログを作りたいと思っていたので、Go+chi+GAEでクリーンアーキテクチャを試してみました。 この記事では、バックエンド(APIサーバ)部分について記載していきます。ソースコードも公開してますので、細かいところは直接参照ください。 https://github.com/rinoguchi/microblog 使う技術 バックエンドAPIサーバ 言語: Go 経験少なめなので慣れておきたい Webフレームワーク: chi DIツール: wire 実行環境: GAE(Google App Engine) Goが使える 1日あたり 28 インスタンス時間の無料枠がある Dockerイメージすら作らずに、アプリをデプロイ+公開できる データベース: supabase 500MBまで無料!個人利用なら十分 ※料金体系 中身は慣れ親しんだPostgreS Continue Reading

Posted On :
Category:

GitLab CI + kaniko でDockerイメージをビルド

業務ではGITリポジトリとしてGitLabを使ってるのですが、ローカルPCでDockerイメージを作成する運用だと ローカルの変更が混じってしまう可能性がある イメージを作成するタイミングがあいまいだし、作成忘れがあったりする などの問題があり微妙だったので、GitLabにタグ(1.5.2など)をプッシュしたタイミングで、自動的にDockerイメージを作成してGCRにビルドさせることにしました。 少し前に 会社のブログ で kaniko を使うケースを紹介してくれていたので、やってみることにしました。 GitLabでDockerイメージをビルドする方法の候補 改めてGitLabの ドキュメント を見てみると、以下のように書いてあります。 There are three methods to enable the use of docker build and docker run duri Continue Reading

Posted On :
Category:

GCR(Google Container Registry)を使ってみる

Google Container Registry(GCR)はGCPが提供するプライベートなDocker Registryです。Docker Hubと同じようにDockerイメージのアップロード/ダウンロードができ、かつ、外部から利用されることもありません。 今回は、自作したDockerイメージをサービスアカウントを通じてCLIでGCRにpushしてpullするところまでを検証してみようと思います。基本的には公式のクイックスタートをベースに検証を進めます。 GCRの特徴 以下の様なことができるみたいです。 Docker Registoryとして、Dockerイメージをpushしたりpullしたりできる アクセス制御ができる CI/CDシステムと連動できる 今回はこれのうち1.と2.あたりを軽く検証してみます。 事前準備 GCP側の設定 こちらからGCPのプロジェクトを作成/選択します 今回 Continue Reading

Posted On :
Category:

Firestoreのコストリスク削減

Firestore + typescript を使ってフロントエンドアプリ(Chrome拡張)を作っているのですが、DOS攻撃をうけたり、単純に利用者数が多かったりすると普通にFirestoreの無料枠を超える可能性があります。コストリスクを下げるために、色々対策を実施したので紹介しようと思います。 Firestoreの料金 まずは、FireStoreの料金体系について紹介します。思ったより無料枠が少ないです。 無料枠 こちらを参照しました。単位が書いてないのですが、おそらくアクセスするドキュメント数です。読み取り、書き込み、削除の制限が結構厳しくて、何も考えずに実装していると超えてしまいそうです。そうじゃなくても、一覧画面とかで F5 アタックとかされたら簡単に無料枠を超えてしまいそうです。 処理区分 無料枠 保存データ 1 GiB ドキュメントの読み取り 50,000/日 ドキュメント Continue Reading

Posted On :
Category:

GCPのコスト見積もり

GCPを利用していてコスト見積もりを実行するにあたってのメモを記載しておきます。 基本 基本的にはこちらを利用することになると思います。 Google Cloud Platform 料金計算ツール GCE GCEに関しては、上記よりも実際にVMインスタンスを途中まで作成するのが一番確実です。 コンソール を開いて、メニューからCompute Engine -> VMインスタンスを開き、作成ボタンをクリックします。 インスタンス作成画面が開かれますので、あとは、リージョン マシンの構成 GPUの有無 追加ディスクの有無など、色々設定を変えながら画面右上に表示されるコストを確認するだけです。 BigQuery 料金体系はこちらに記載されています。以下の3つは少なくとも気にしています。 アクティブストレージコスト: $0.020 per GB per month 例) 1TBを1ヵ月保存す Continue Reading

Posted On :
Category:

BigQueryのpython client(google-cloud-bigquery)の使い方

BigQueryのpython client(google-cloud-bigquery)の使い方をメモっていきます。 インストール サービスアカウントキーファイルを環境変数に設定 こちらを参考に、サービスアカウント+キーファイルを作成し、そのキーファイルのパスを環境変数に設定します。 export GOOGLE_APPLICATION_CREDENTIALS="/hoge/fuga/key_file.json" ライブラリインストール pip install google-cloud-bigquery クライアント生成 from google.cloud.bigquery import Client client: Client = Client() # 環境変数 GOOGLE_APPLICATION_CREDENTIALSが設定されている前提。引数で渡すこともできる Continue Reading

Posted On :
Category:

BigQueryのTips

BigQuery関係のTipsをまとめていきます。 bqコマンドについては こちら に記載してます。 コストについて こちらを参照するとわかりますが、ストレージコストとクエリコストがあります。 ストレージコストはだいたい想像つくと思うので、ここではクエリコストについて記載します。 認識しておきたいのは以下の3つだと私は思ってます。 コストは、アクセスするデータ量(バイト数)で決まる カラム型DBなので、必要なカラムのデータだけを取得する オプティマイザが優秀なので、最終的に利用するテーブル・カラム以外は処理対象にならない このルールを元に考えると、だいたいコストがどうなるか分かります。 実際にbq query –dry_runでアクセスするデータ量を厳密に確認しつつ以下の表を作りました。 項目 コストへの影響 説明 * 対象テーブルの全カラム分のコストがかかる *を使うとそのテーブルの全 Continue Reading

Posted On :
Category:

GCP CLIのTips

たまに使うと忘れてることが多いので、よく使うコマンドをメモっていきます。 gcloud サービスアカウント設定 # リストアップ gcloud auth list # キーファイルで有効化 gcloud auth activate-service-account –key-file {key_file_json_path} # 有効化とデフォルトプロジェクト設定 gcloud auth activate-service-account –key-file {key_file_json_path} –project {project_name} # サービスアカウントを無効化 gcloud auth activate-service-account {service_account_name} デフォルトプロジェクト設定 # 設定確認 gcloud config list # プロジェ Continue Reading

Posted On :