これは Livesense Advent Calendar 2023 DAY 24 の記事です。
リブセンス インフラエンジニアのsheep_san_whiteです。お酒とロードバイクが大好きなおじさんです。
現在、リブセンスではオンプレミス環境からAWS環境への移行を進めています。移行が必要な対象は沢山ありますが、今回は非エンジニアがクエリを実行する基盤の移行について書きます。
非エンジニアがクエリを実行する基盤が作られたきっかけ
以下のいくつかの理由によって非エンジニアがクエリを実行する基盤が作られました。
毎月4時間のCSV取得作業
毎月、オペレーショナルエクセレンス(OPEX)の方たちが管理画面をポチポチ押して50件ほどのCSV
ファイルを出力していました。
50件ほどあるCSV
ファイルの出力条件も細かく変える必要があり、この作業を行うのに毎月4時間ほどかかっていました。
管理画面で取得できないクエリを実行したい場合のフローが煩雑
管理画面で出力できないクエリを本番DBで実行する際には以下のフローを行う必要があり、チケットの取り回しや本番DBにログインすることの手間がありました。
定期的に実行するクエリだと、何度も依頼をする必要があります。
- クエリレビュー依頼のチケットを切る
- エンジニアがクエリをレビューする
- エンジニアが本番DBでクエリを実行する
- 結果を依頼者に渡す
広いデータ参照のリスク
個人情報を含むデータを扱うため、広く参照されることにリスクがありました。
一部のメンバーだけがクエリの結果を参照できる状態を維持する必要がありました。
移行前のクエリ実行基盤について
移行前のクエリ実行基盤の構成
下図の通り、Ansible
とrundeck
を組み合わせてジョブを管理し、結果をGoogle
ドライブにアップロードしていました。
移行前のクエリ実行基盤が抱えていた課題
既存の基盤では以下の課題を抱えており、3回壊れた時点で別基盤への移行を決意しました。
また、AWS移行も進めているため、併せてAWSへの移行が必要となりました。
原因がよくわからない状態で半年に1回完全に壊れてしまう
最初の半年は問題なく動いていたものの、ある日突然アクセス不可能・データが破損しアクセスできなくなりました。
ログを漁っても思い当たるログが見つからず、業務を止めないために取り急ぎ再構築を行いました。
rundeck
のデフォルトのDBで H2 Database
を使っていることも疑われましたが、別基盤では安定稼働しており、原因らしい原因がわからないという状況でした。
以降も半年ごとに何故か壊れてアクセスできなくなるということが発生してその度に再構築が必要となっていました。
1回の復旧に半日持っていかれる
Ansible
で管理されているとはいえ、オンプレミス環境のVMの構築からなので復旧に半日掛かっていました。
移行後のクエリ実行基盤について
移行後のクエリ実行基盤の構成
代替の構成を検討したところGitHub Actions
が検討先となりましたが、クエリの実行時間が30分近くと長いものもあり実行時間でコストが積み上がる懸念がありました。
また、本番DBにアクセスするにはファイアウォールの穴あけが必要となりますが、本番DBに対してCIDRで広く開けるよりは別な手法を取りたい思いがありました。
当時ちょうど社内でGitHub Actions Self-Hosted Runner
の活用事例が増えてきた頃だったので、GitHub Actions Self-Hosted Runner
に移行を決めました。
構成要素としてはAutoScaling
でEC2
インスタンスを起動し、cloud-init
でGitHub Actions Self-Hosted Runner
をインストールするというものです。
移行によって得られた結果
ジョブの実行基盤をオンプレミス環境のrundeck
からAWS
上のGitHub Actions Self-Hosted Runner
へ移行したことで、以下の結果が得られました。
運用負荷を減らしてコスト面も考慮した移行になったと思います。
- 良かった点
GitHub Actions
に移行したことによるメリット- 設定変更時に
Ansible
を適用する必要が無くなった - ジョブがコケた際の再実行も
GUI
からre-run
するだけ
- 設定変更時に
GitHub Actions Self-Hosted Runner
で実行することのメリット- 一部のクエリで実行に30分〜1時間近くかかるものがあり、単純に
GitHub Actions
を使用するよりは低コストに実行できる
- 一部のクエリで実行に30分〜1時間近くかかるものがあり、単純に
AWS
に移行したことによるメリットGitHub Actions Self-Hosted Runner
のインスタンスが死んでもAutoScaling
で自動復旧するAutoScaling
+スポットインスタンス
の利用によりコスト圧縮が可能となる
- 悪かった点
GitHub Actions Self-Hosted Runner
のバージョンアップ時に一部のPATHが変わってしまい死んでしまう- これは自動復旧するのでさした問題ではない
終わりに
非エンジニアがクエリを実行する基盤の移行について紹介しました。
移行によって、設定変更の手間やジョブの再実行などの操作が簡単になり、実行に時間がかかるクエリも人の手が介在せず効率的に処理できるようになりました。
また、GitHub Actions Self-Hosted Runner
とAWS
の利用により自動復旧やコストの削減も実現できました。
移行後のクエリ実行基盤は安定稼働しており、運用負荷の低減やコスト面の効率化につながっています。