4.0.0で発表させていただいた内容に肉付けしたものです]redashはデータベースに接続できるツールなのでuserの管理がとても重要になる。userを定期的に棚卸しをし、メンテナンスしていくことはセキュリティを維持する上で必須だ。弊社ではCLIでuser一覧を出すそれをgitlabで管理gitlabに上がったということをchatworkで担当者に伝える問題なければmergemerge日=最終棚卸し日というフローを採用し運用している。想定していた運用を採用するうえではソースを変更する必要があった。5.0.2のCLI残念ながらこの画像からわかる通り、非常に貧弱である。5からuserをdisableする機能が導入されたが、userがenableなのか、disableなのかという情報がCLIからだとわからない。機能としては存在しているのに、CLIで見れないとなると単純に表示させていないだけなのかもと察しソースを読んだ。Userのenableなのか、disableの情報を表示するメソッドを見つけたhttps://github.com/getredash/redash/blob/68272678b85ef4a6498543ef6a33a2071e607628/redash/models.py#L439おそらくGUIであればこの処理を叩いて画面に表示している。機能があるのであればCUIも同じように叩けばよいのでは?という仮説のもとファイルを変更したhttps://github.com/getredash/redash/pull/2951/filesこれでenableなのか、disableなのかがコマンドラインで確認できるようになった。cpコマンドでコンテナ内に転送することで変更を動いているredashに反映させた。OSSのソースに手を入れるというと相当な知識がないと変更できないかと思っていたが、progateでpython覚えた程度でも変更できた。最初テストケースを書かずにpushしたらCIでコケたので、恥ずかしながらそこでredashのテストコードの存在を知った。reqを出すと翌日mergeしてもらい、これがコントリビュートにつながった。requestを出させていただき、いずれも承認された。merge.pypythonはGitLabへpushするのに使っている。order_by='updated_at')[0]print(mrs.attributes['web_url'])以下のようにcronを仕込み月に一度listを更新し、GitLabにpushするようにしている。/tmp/stderr.logGitLabにMergeRequest上がっているのを取得、chat投げる処理これも同様にshellからpythonを動かすようにしている。管理者はこのリクエストを確認し、最新の状態を確認。問題なければmergeする当然gitなので最新merge日は更新され、この日が棚卸し完了日と位置づけすることにより、最終棚卸し日がいつだったのかわかるようにしている。運用でよく使うコマンドまとめmysqlのデータをembulkでBigQueryへ入れredashで確認するredashが正常に動いているか、どう監視するか。スタートアップ向けの極力コストを抑えた設計まで提案から運用まで担当することが多い。最近はAWSやContainerを用いたWebサービスの設計から運用。趣味はマラソン、トライアスロン。