1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLAdvent Calendar 2024

Day 25

2024年にSpring BootアプリケーションをAzure Database for MySQLで開発運用してみた奮闘記を振り返る

Last updated at Posted at 2024-12-24

ご挨拶

みなさまこんにちは。今年は一ミリもMySQLに仕事で触れないまま終わりますので、過去のSpring BootアプリケーションをAzure Database for MySQLで開発運用してみた奮闘記
(以下奮闘記)を振り返ります。

こちらのサービスは2024年に良い知らせを受け取れましたし、MySQL 8.4も出たのでこちらを振り返り、事情が違う箇所だけ補足します。

アプリケーションの仕様・方式を決める

2020年

MySQLは5.7を利用しました。

データ移行の都合上、データ移行が必要なため他システム(AWS RDS for MySQLでMySQL5.6)と統一したいが、MySQL 5.6は新規構築できない理由があったので5.7を使っていました。

2024年の課題と対処

MySQL 8.4がリリースされています。認証や文字コードなど考慮事項はありますが、もうできるだけMySQL 8.4を利用したほうが良いでしょう。どこかで勇気を出さないとMySQL 5.7からバージョンアップできなくなるでしょう。

奮闘記の時はデータ移行上の関係で絵文字をサポートしませんでしたが、今なら絵文字サポートもできます。UXや運営を鑑みて今後も絵文字サポートは不要という考え方もできますが、アプリケーションや文字入力の仕様調整と操作説明も必要です。

プロキシ経由でMySQLに接続できるようにする

プロキシでMySQLやSSHが遮断され、開発者、運用者のPCから直接MySQLに接続できないため対応しました。

2020年

  • 開発環境はPHPMyAdmin経由で接続
    • トラブル防止のため、本番環境ではPHPMyAdminは利用しないポリシーにしました
  • 大規模な開発環境での作業、本番作業は踏み台のMySQL Workbenchから実施

としていました

2024年の課題

  • PHPMyAdminはPHPアプリケーションなのでセキュリティ上配慮が必要です。基本的には使わないほうが良いと思いました
  • MySQL Workbenchの8.4 LTS Releaseがない

2024年に考えられる対処

MySQL Shell for VS Codeを使う

ローカル開発であれば、MySQL Shell for VS Codeやその他のSQLクライアントを使えると思います。プロキシを通す場合は、踏み台経由でポートフォワーディングするなど考慮が必要かもしれません。

本番操作時にはミスを起こさないよう、GUIの利用は避けたほうが良いかもしれません。

クラウドの機能を使う

クラウドシェルや踏み台サービスを利用するの良いと思います。
開発チームもクラウドのアカウントやロールが必要になりますが、安全ではない踏み台を独自構築するよりは安全を取りましょう。

  • AWS
    • Session Manager、EC2で踏み台を構築する
    • CloudShellを利用する
  • Azure
    • Azure Linux仮想マシンで踏み台を構築する
    • Azure CLIを利用する

実は奮闘記当時も、Azure CLIを使ってAzure上でMySQLを操作しているチームがいました。シェルの得意なメンバーが多数いたからです。
https://learn.microsoft.com/ja-jp/azure/mysql/flexible-server/connect-azure-cli

一方で開発チームはプロダクトオーナーにSQLを打ってでも受け入れしてほしい場合があり、PHPMyAdminが便利という事情もありました。

いずれにしろ安全な方法で誰でもデータアクセスをしたいものです。

環境によって動かないSQLがあった

2020年

事情がありMySQLのインストールがチームによって統一できなくなり、sql_modeの不統一でSQLが動作しないなど混乱を生みました。

2024年の課題

MySQLに限らず、アプリケーション開発のバックエンドはDockerで用意するとローカル環境の構築方法のブレをなくせます。

Spring Boot 3を利用すると、Testcontainersと連携してバックエンドの構築が簡単になります。バックエンド以外にモックサーバなど必要なサービスを簡単にDockerで動かせます。構築方法を統一できるので採用したほうが良かったです。

まとめ

奮闘記作成当初からは

  • MySQL 8.4リリースに伴う変更
  • ローカル開発環境構築方法の課題

がありました。
それ以外はMySQLバージョン依存しない課題解決なので、奮闘記の内容は今でも作者は違和感ありませんでした。

最後まで読んでいただきありがとうございました。
良い冬をお過ごしくださいませ🐬

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?