どのrevisionでterraform applyされたものか分かるようにtfstateに情報を埋め込む

背景 Terraformでリソースをコード管理をしている場合、大抵gitでバージョン管理している terraform applyしたものがまずかった場合、どの差分によるものか、いつから発生していたものなのか、誰の実行によるものかといった情報が欲しくなる backendをgcsな…

dbtを触ってみた感想

データエンジニア系の勉強会で最近dbtがぱらぱらと話題に出てくるようになった & 4連休ということで、夏休みの自由研究がてらdbtを触ってみました。書いてる人のバックグラウンドは以下の通り。 DWHやデータマートの構築のためのETLツールを模索中(特にTの部…

BigQueryのデータセットに対する大量のアクセス権限をTerraformで管理する

BigQueryのデータセットに対するアクセス権限が手動で追加されていました。手動だと編集された履歴の確認や特定時期の状態を復元ができないため、Terraform管理したい。しかし、データセットがあまりに大量にあって困ったので、スクリプトで楽をしようという…

データウェアハウスのバージョン管理をどうやるか

というのをチームで議論する機会があったので、書いてみます。「うちではこうしている」とか「ここはこっちのほうがいいんじゃない?」とかあったらコメントで教えてください。 背景 / 前提 データウェアハウスのテーブルを社内に広く提供したい 初期の提供時…

TerraformのModuleでデータマネジメントしやすくする

背景: Terraformを使いつつ、データマネジメントの観点から統制を取りたい Terraform Moduleを定義する 例: データセット まとめ 背景: Terraformを使いつつ、データマネジメントの観点から統制を取りたい GCPでデータ基盤を管理する場合、Terraformはよい選…

helm installで入れるチャートの管理の仕方

helmはhelm installで公開されているチャートを簡単にインストールできて便利。一方、GKEで動かすアプリケーションなどの管理をしていると、helm installで入れるチャートのバージョンや設定自体を管理したくなることがある。イマイチその辺のノウハウがまと…

昔は苦手だったモブプロを今は推進する側になっていた

3~4年前はモブプロにめちゃくちゃ苦手意識があったんだけど、最近はなぜか(?)モブプロを推進していく旗振りをしている。モブプロの取り組み自体については今度会社のTech Blogに書く予定だけど、このエントリでは自分の心境の変化にフォーカスを当てる。人間…

ユーザー問い合わせは宝の宝庫 & データ基盤構築の魅力

注意: ポエム成分多めです、自社のデータ基盤チームの話です。 今日はチームの振り返り会で「ユーザー問い合わせは宝の宝庫」的な話題*1が出て、めっちゃ分かる〜となった。データ基盤チームへの問い合わせなので XXXデータセットにYYYの権限を付与してくだ…

最近の砂場活動その24: Embulkでのデータ転送を差分転送にする

差分転送するモチベーション 機械学習を使った情報推薦を行なうために、RDSのテーブルをBigQueryに定期転送しています。細かいことは気にしたくなかったので、一日一回の洗い替え(全データ送信で全部上書き)していましたが、もう少し鮮度を上げたくなりまし…

最近の砂場活動その23: Cloud MonitoringでKubernetesのバッチ処理を監視する

Kubernetes上で動かしているバッチ処理の監視をCloud Monitoringで行なおうと思ったのですが、素朴にやるとちょっと困りました。一工夫したので、メモを残しておきます。 背景 Cloud Monitoringで素朴にバッチ監視を行なう これだと困る...! 次のバッチが成…

最近の砂場活動その22: Argo WorkflowsでGKE上の機械学習バッチのワークフローを管理する

なぜ 機械学習の典型的なワークフローはこんな感じになりがち データの取得 前処理 モデルの学習 新しいデータに対して予測を行なう ごくまれにコケる。こけたらretryなどをして欲しいし、その辺はワークフロエンジンで面倒を見て欲しい AWS上ではAWS Step F…

最近の砂場活動その21: helmを使ってKubernetesアプリケーションのデプロイを行なう

背景 yamlを使ったマニフェストでKubernetesのデプロイの管理をずっとやっているのはしんどい 繰り返し出てくる変数、環境毎(dev/stage/prod)の差分管理 もっといい感じにやって欲しい helmやKustomizeなどいくつか選択肢がある 業務でhelmを使うので、いい…

最近の砂場活動その20: GCPのCI/CDパイプラインをCloud Buildで構築する

GCP

なぜ 推薦のアプリをGKE上で動かしているが、手元からdocker imageをbuildしてpushして、deployして...とやっていた さすがにダルい... AWS関連のCI/CDはGitHub Actionsでやっているが、同じことをやっても面白くない 例: 最近の砂場活動その15: CI/CDのパイ…

最近の砂場活動その19: Workload Identityを利用してGKEクラスタの権限管理を行なう

前回の続編です。GKEクラスタの設定をterraformで行なうように準備ができたので、肝心のWorkload Idenfityの設定をしていきます。 なぜ Workload Identityの実基盤への導入に丁寧に書いてありますが、素朴なやり方では以下のような問題があるからです。 権限…

最近の砂場活動その18: GKEの設定をTerraformで行なう

前提 機械学習を使った情報推薦をGKE上で行なっている 最近の砂場活動その14: GoogleAnalytis For Firebaseのデータを使ってImplicit-feedbackな推薦システムを構築する - yasuhisa's blog えいやっで作ったので、GKEはgcloudコマンドで作った 当時どんなコ…

最近の砂場活動その17: CloudWatch Eventsから直接AWS Batchのジョブをキックする

AWS

前置き 機械学習のモデルの定期的な再学習、CloudWatch Eventsを使うと便利です Cron的なスケジュール管理ができる 機械学習のモデルの学習はAWS Batchで行なっていた(今だとSageMakerな人も多いのかもしれない) しかし、以前はCloudWatch Eventsから直接AWS…

最近の砂場活動その16: 機密データをパラメータストアに保存して、AWS Batch & ECS(ecspresso)上のアプリから参照する

AWS

アプリケーションのコード内に機密情報(例: DBのユーザー名やパスワード)を直接ハードコードしないのは当然として、環境変数経由で渡すことは多いと思います。CloudFormationのようなInfrastructure as Code(IaC)をしている場合、環境毎の設定をyamlなどで書…

能動学習のツールgo-active-learningのリポジトリをアーカイブしました & アノテーションに関するポエム

能動学習のコマンドラインツールのリポジトリをアーカイブしたついでに、アノテーションに関するポエムを書きました。 背景 アーカイブの理由 ドッグフーディングする機会が減った 複数に散らばったリポジトリをモノレポにしたかった 脱線ポエム: アノテーシ…

Apple Watch Series 6を買った

Apple WatchのSeries 6を買いました。Series 1を持ってたと思うので、かなり久しぶりのApple Watchです。 最新 Apple Watch SE(GPSモデル)- 40mmスペースグレイアルミニウムケースとブラックスポーツバンド発売日: 2020/09/18メディア: エレクトロニクス 動…

統計学勉強会でNPSの信頼区間について発表しました

以前ブログにも書いたNPSの信頼区間を題材に、統計学勉強会で発表しました(します)。資料はこちら。 自分の目的に合った統計量と そのバラ付きを計算しよう ~NPSを例に~(統計学勉強会) from syou6162 3/19に最終出社したばかりなので発表の時期としては微妙…

最近の砂場活動その15: CI/CDのパイプラインを整備する

最近、新しいPCをセットアップしていたけど、PCのセットアップを完了しないと趣味サイトのdeployすらできないことに気付いた。しばらくdeployしていないと、久しぶりにdeployしたときに大抵事故るし、小まめにやることでdeployの心理的障壁を下げていきたい…

この作業をいつやっていたか、その日は何の作業をやっていたかをesa.ioで分かりやすくするスクリプトを書いた

今日やった作業のログをesa.ioの記事に残すようにしていますが、「この作業はいつやっていたんだ...?」を知りたくなるときがあります。また、その日に作業していた記事一覧も分かると、その日に何をやっていたかがざっくりと把握しやすくなります。具体的に…

コロナ禍での転職活動(データエンジニア)についてのメモ

Twitterでは先に言っていましたが、現職のはてなを3月末で退職します。3/19が最終出社日でした。はてなでの思い出はこちらに書きました。 そのため、転職活動をしたわけですが、コロナ禍での転職活動は平常時と異なる部分も結構ありました。また、データエン…

esa.ioのカテゴリとタイトル名の治安を守るvalidatorを作った

esa.ioが気にいっていて、あれこれ調査していったことなどを書き足しています。記事の数も数百を越えてきました。この辺までくると、自分一人で書いているとはいえ、意識して使わないと色々不便なところが出てきます。例えばこういうやつ。 カテゴリを適切に…

Google Calendarの予定一覧を今日の日報に流し込む

GAS

日報を書くとき、カレンダーの今日の予定一覧を見ながら書くことが多いと思います。しかし、カレンダーの予定を毎回日報にコピペするのは面倒。日報に最初から予定の一覧が流し込まれていれば、もっと楽をできる! ということでやってみました。私の場合、esa…

Google Cloud Professional Data Engineer Certifiedに合格した

GCP

2021/02/23に受験しまして、合格しました。やったー。 前提: 受験前の私の状態 なぜ受験したか 試験のための準備 データエンジニアリングで頻出の話題をカバーする 個別コンポーネントの知識を取り込んでいく 権限 / セキュリティ / 監査回り 練習問題をひた…

「今日から始めるデータ活用」というタイトルでオープンセミナー岡山に登壇します

登壇は明日ですが、スライドと発表に至った経緯や発表内容決めるまでに考えたことをまとめておきます。 オープンセミナー岡山 これから始めるデータ活用 from syou6162 発表タイトルに至った経緯 直接の経緯はオープンセミナー岡山の実行委員長であるid:a-kn…

開発効率を計測するデータ基盤の管理にDataformを使ってみた

Dataformを初めて使ってみたので、雑に感想を書いておきます。結構よかった。 使ってみようとした背景 Dataformについて 試してみてどうだったか よかった まだまだこれからっぽいところ & 気になり 参考 使ってみようとした背景 今週、社内の開発合宿に参加…

はてなで働き始めてからほぼ5年になるので振り返ってみる

そろそろ前職を退職してから、はてなで働き始めて5年(!)が経とうとしている。5年も働いていると、昔何をやっていたか、その当時どういう気持ちで働いていたかを忘れてしまう。備忘録っぽく書き残しておこう。ポエムです、長いです、大体自分向けに書いてる。…

esa.ioに分報っぽく投稿するアプリをReactとFirebaseで作った

こういう風に投稿すると(左)、esa.ioにこういう感じ(右)で投稿される分報風のアプリを自分用に年末年始に作りました。 作った動機 使った要素技術 Firebase Authentication Firebase Hosting + React Firebase Cloud Functions デプロイ自動化 所感 作った動…