The Self-Service Data Roadmap読書会でContinuous Integration Serviceについて発表しました

データマネジメントに対する知識を深めたり、データの利活用をより進められるようになりたいなと思って、読書会をやっています。始めてから二ヶ月くらいで、そろそろ本の終わりが見えてきました。 The Self-Service Data Roadmap: Democratize Data and Redu…

エンジニアがJob Descriptionとロードマップの作成に関わって感じたこと

最近、自グループのJob Descriptionとロードマップを作成する機会があって、結構いい経験だったのでメモしておきます。 前提: 私自身について Job Descriptionとロードマップの作成に関わる経緯 作成に関わった結果 所感 前提: 私自身について 私自身はただ…

Terraformのapplyでtargetを指定しているにも関わらず、それ以外のリソースが差分として出てくる場合

タイトルのようなことがあって困ったので、忘れないようにメモ。 Terraformのtargetオプション Terraformを使っていると「このresourceに関するところだけ差分を見たい」「あのモジュールに関するところだけapplyしたい」ということが時々ある。いつもあって…

GKE上のバッチ処理の実行時間の推移を可視化する

課題感 GKE上のバッチ処理の成否は監視している しかし、バッチ処理時間の伸びは監視できていない データ数と共に線形に処理時間が伸びているようだったら、何かしら対応を考えたい いわゆるバッチの突き抜け対策 具体的にはこういうことをしたい しかし、仕…

ポエム: なぜ私はアウトプットを続けているのか

最近、「なぜid:syou6162はアウトプットを続けているのか」を聞かれる機会があった。 会社のnoteのインタビューを受けた*1中で、もう15年もブログを書いていることについて聞かれたり*2 会社のLT大会をやっているんだけど、なぜアウトプットを推進しようとし…

社内LTで「本当にあった(ら)怖いデータの話 ~dbtのススメ~」について話しました

dbt

dbtの紹介 タイトルの通り、モノタロウの(非公式)勉強会でdbtのことについて話してきました。すでに使っている人には新しい情報はほぼないですが、他部門の方に「データ触ってるとこういうところ辛いよね〜」「dbt使うといい感じに解決できるケースもありま…

最近の砂場活動その25: 複数のnamespaceにまたがるデータ管理ツールをIAPで守る

背景 複数のnamespaceにまたがるツールを1つにまとめる 問題点: 素朴にはIngress内でnamespaceを分けることができない 解決策: Nginxでwrapする Ingressを設定するためのその他の設定 静的IPの確保と設定 ドメインの確保 & CDNの設定 & 証明書の設定 IAPの設…

集合の組合せに対してTerraformで設定する(setproductとfor_eachを使う)

「このメンバーの一覧に対して、このリストの一覧の権限の付与したい」ってケース、結構あると思います。「このメンバー一覧に対して、この権限だけを付与したい」という場合はTerraformだとfor_eachで割と簡単に書くことができますが(一重ループ)、タイトル…

どの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の記事に残すようにしていますが、「この作業はいつやっていたんだ...?」を知りたくなるときがあります。また、その日に作業していた記事一覧も分かると、その日に何をやっていたかがざっくりと把握しやすくなります。具体的に…