hacomono TECH BLOG

フィットネスクラブやスクールなどの顧客管理・予約・決済を行う、業界特化型SaaS「hacomono」を提供する会社のテックブログです!

RDSのDBインスタンスでMySQLアップデートを行う上で資料の充実さに救われたお話

こんにちは、2024年2月に入社し、hacomonoのSREチームに所属している kazu です。

私は入社して1ヶ月後にRDSのDBインスタンスでMySQLバージョンアップ対応という業務を担当いたしましたが、入社してすぐの自分でもわかりやすい資料や手順などが用意されており、障害を一つも発生させずにバージョンアップを行うことができました。

今回は、入社したての自分でも障害を起こさずにMySQLバージョンアップができた要因となっている、hacomonoで用意されていた資料や手順についてお話ししていきたいと思います。


この記事の背景

hacomonoでは、顧客のデータ保存にRDSのDBインスタンスを利用しているのですが、RDSではセキュリティ的な面やコスト的な面で定期的なバージョンアップが必要になっています。

現在シングルテナント環境からマルチテナント環境への移行が進んでいるものの、シングルテナント環境は残っており、一部環境ではRDSのDBインスタンスを利用しており、RDSのDBインスタンスに対してバージョンアップを行う必要があります。

私は入社1ヶ月でDSのDBインスタンスのバージョンアップ対応を行ったのですが、hacomonoの資料や作業の自動化への充実さに驚いたため、今回こちらの記事を書こうと思い立ちました。


バージョンアップを行う上で用意されていた資料

作業のチェックリスト

バージョンアップを行う上で、どのような事前準備を行えば良いかを一覧化したものとなります。

チェックリストの項目は前日準備・当日作業等必要な作業が全て記載されていたり、どの資料を見ながら作業を行うべきかや、どのような状態になれば問題ないのかなどの項目があります。

作業の手始めとしてチェックリストがあるおかげで手を止めずに作業を行うことができました。

作業のチェックリスト例:

GitHub Actions  ワークフローとAWS CLI

MySQLバージョンアップを行う際にはAWS CLIを実行するGitHub Actions を用意しています。

バージョンアップのみではなく、リソースの後始末や問題が起きた時のロールバックなど、必要な処理を全てGitHub Actions を実行するだけで完結するようになっています。

  • バージョンアップ
  • バージョンアップ後の処理
  • 問題が起きた時のロールバック

そのため、バージョンアップ作業ではAWSのコンソールに入って何か作業するなどの手作業は発生しません。

また、処理単位で並列実行できるようになっているため、1度に大量の顧客に対して処理を実施できるようになっています。

GitHub Actions  ワークフローの管理用googleスプレッドシート

大量の顧客のGitHub Actionsワークフローを管理・作成するためのシートになります。

用意されていたスプレットシート例:

各作業のセルでは、下記のようにGitHub Actions  ワークフローのコマンドが入っており、可変するパラメータ部分は顧客情報のセルを参照するようにしています。

前日作業のセルに入っているコマンド例:

= "gh workflow run" &
" -R リポジトリ名 " &
" -F 顧客名=" & $A2 &
" -F workflow名=" & "前日作業workflow"

そのため、顧客情報(上記シートの例だと「顧客名」のみ)を入力するだけで、バージョンアップ・後処理・ロールバック等に必要なgithub actions ワークフローのコマンドが機械的に生成されるようになっており、生成されたコマンドを実施していくだけで各種処理を実施できるようになっています。

GitHub Actions  ワークフローで何が行われているかを説明している資料

ただコマンドを実行しているだけでは、コマンド実行時に万一エラーが起きた時に対応ができないため、各処理で何を行っているのかを説明している資料も用意されています。

どのような処理が行われているかはシーケンスとして用意されており、実処理を確認した際にシーケンスと照らし合わせができ、処理の理解を早めることができました。

また、実行環境、使用言語、実装のポイントや並行処理についてなど、処理を理解する上で必要な情報は全て用意されています。

MySQLバージョンアップで行われている処理のシーケンスの例:


まとめ

いかがでしたでしょうか?

私は入社してまだ3ヶ月でhacomonoの仕様についてはまだまだ知らないことがたくさんあります。

その中でただ、資料が充実しているだけではなく、作業や仕様を知らない人目線での資料が用意されていたことで救われたことがたくさんあります。

入社してまだ浅い自分が今回あげた資料を見直してみても

  • 「作業のチェックリスト」
    • 作業者が詳しく知らない状態であっても、作業にすぐ取り組めるように配慮されている
  • 「GitHub Actions ワークフローとAWS CLI」
  • 「GitHub Actions ワークフローの管理用googleスプレッドシート」
    • 本番作業の大部分がコード化されていることで作業者依存のミスが軽減されている
    • 作業で問題が起きた際もロールバックをすぐ行えるような状態にすることで、作業者が自信を持って作業を行えるよう工夫されている

と、資料があったおかげで作業を円滑に進めることができたなと感じています。

この記事を通して、hacomonoへの皆さんの解像度があがり、ご興味をもっていただけるきっかけになれていれば幸いです。


株式会社hacomonoでは一緒に働く仲間を募集しています。
採用情報や採用ウィッシュリストもぜひご覧ください!