Share
Embed
Transcript
35 slides
-
自己紹介 佐々木興平 ( X: @earu) 所属: エキサイト(株) (4年6ヶ月)(ex.セレス,CA,ぐるなび) 職種: メディア事業部事業部長
兼 メディア事業部開発責任者 やっていること: - PdM - テックリード 最近チームでよくさわっている : - SpringBoot / Java / htmx / alpine.js / Tailwind CSS / MySQL PostgreSQL / Redis / AWS 色々/ AWS copilot CLI / Terraform ポリシー: - 設計は難しくても正しいものに寄せる - 設定は簡単なものに寄せる -
JJUG CCC 初登壇になります 今回送ったプロポーザルは下記です。 (話しやすい順に並べています) Spring-boot-adminで簡易モニタリングを行い、開発生産性を上げる SpringBoot x htmx x
Alpine.js x Tailwind.css による怖くないWeb開発 Spring AI x AWS Bedrockで簡単なAIアプリケーションを作る SpringBoot x Mybatis x TestContainerでSQLテストを行う <= 採択 -
メディア事業部もほぼ RDBにすべてのデータを寄せている メリット - データ型がある - ある程度柔軟な検索ができる - データ移行ツールなどが充実している -
キャッシュと組み合わせると結構負荷にも 耐えられる デメリット - 設計力は結構必要 - 定期的にメンテナンス時間が必要 (セキュ リティアップデートなど -
SQLを試す環境はある ローカルマシン上 • ローカルにDBをインストール • ローカルにDockerで構築 • H2Databaseを起動する(MySQL、PostgreSQL, 一部制限あり?) サーバ上
• 開発者ごとにサンドボックススキーマを立てる Web上 • DB<> Fiddle (MySQL, Postgres, Db2, Firebird, SQL Server SQLite, YugabyteDB, Oracle) • SQL Fiddle (MySQL, Postgres, SQL Server SQLite) • DB Fiddle (MySQL, Postgres, SQLite) -
SQLを試す環境はある ローカルマシン上 • ローカルにDBをインストール • ローカルにDockerで構築 • H2Databaseを起動する(MySQL、PostgreSQL, 一部制限あり?) サーバ上
• 開発者ごとにサンドボックススキーマを立てる Web上 • DB<> Fiddle (MySQL, Postgres, Db2, Firebird, SQL Server SQLite, YugabyteDB, Oracle) • SQL Fiddle (MySQL, Postgres, SQL Server SQLite) • DB Fiddle (MySQL, Postgres, SQLite) 開発者が増えたときの同一環境構築コストが 高く再現性が難しい -
SQLテストを行うには? • (ローカルでもリモートでも) DBを立ち上げる • DBのマイグレーションを正確に行う ◦ これを実施しないと、テストが色々な理由で失敗するようになる • テストコードを書く
下記の3つを行う必要がある。通常、SSHやdocker composeでDBを立ち上げる必要が あるが、Testcontainersは、DBの立ち上げ部分をテストコードに書けるというのが良い。 -
テストデータの管理 (方法1:マウント機能を利用する ) メリット: - SQLファイルが分散しない - マイグレーションツール等を用意しなくていい デメリット: -
マイグレーションツールを使用している場合、開 発とテストで異なるものを使用するので、ダブル メンテになる -
テストデータの管理 (方法2:@Sqlを使用する ) メリット: - SQLファイルが分散しない - マイグレーションツール等を用意しなくていい デメリット: -
マイグレーションツールを使用している場合、開 発とテストで異なるものを使用するので、ダブル メンテになる可能性がある -
テストデータの管理 (方法4:マイグレーションツールを使用 する) Flywayの場合、依存関係を解決し、 SQLファ イルを設定すると、SpringBootが起動時にマ イグレーション用のSQLが実行される。 メリット: - 普段使っているマイグレーションツール
と同じものが使用でき、二重管理になら ない デメリット: - マイグレーション処理が遅い場合にテ ストで待たされる -
Appendix. FAQ - SpringBoot Docker Compose Support との棲み分け - Dockerは開発とテストで同じものを使用するか?
- コンテナイメージはTestcontainersのモジュールにあるものしか使えな いのか? -
SpringBoot Docker Compose Support との棲み分け SpringBootにもDocker Compose Support が入っています。 開発時に別ターミナルで
「docker compose up」を打たずに、SpringBootのアプリケー ション起動時に一緒に docker-compose.ymlに書いてあるコンテナ を起動してくれます。