Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Boot採用システムを定期Upgradeする話 / How to minimize upgrade pain in Spring Boot 2.x

Spring Boot採用システムを定期Upgradeする話 / How to minimize upgrade pain in Spring Boot 2.x

2021/11/21開催の外部カンファレンス「JJUG CCC 2021 Fall」に登壇した際の資料です。
https://ccc2021fall.java-users.jp/

More Decks by 三菱UFJインフォメーションテクノロジー株式会社

Other Decks in Technology

Transcript

  1. Spring Boot採用システムを 定期Upgradeするお話 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021

    Mitsubishi UFJ Information Technology Ltd. All rights reserved. 1 三菱UFJインフォメーションテクノロジー デジタルプロデュース部 山縣 京輔
  2. 会社紹介 3 181百万円 (三菱UFJ銀行 85%、三菱UFJフィナンシャル・グループ 15%) 資本金 従業員 2,018名(2021年4月現在) 事業内容

    主として三菱UFJ銀行、並びに三菱UFJフィナンシャル・グループ 各社の業務等に関する、システムの企画・設計・開発・保守・運用 設立 1988年6月 ※詳しい沿革は、当社HPをご覧ください 本社 東京都中央区晴海二丁目1-40 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. MUIT 採用 MUIT youtube 検索 MUIT speakerdeck
  3. アジェンダ ◼ 自身の経歴 ◼ 社内フレームワークの概要 ◼ Spring Boot採用システム定期Upgradeについて ⚫ Spring

    Boot EOLサイクル、対応スケジュール ⚫ 対応の流れ ⚫ 注意して取り組んでいるポイント ◼ 所感・今後トライしたいこと Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 4
  4. アジェンダ ◼ 自身の経歴 ◼ 社内フレームワークの概要 ◼ Spring Boot採用システム定期Upgradeについて ⚫ Spring

    Boot EOLサイクル、対応スケジュール ⚫ 対応の流れ ⚫ 注意して取り組んでいるポイント ◼ 所感・今後トライしたいこと Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 5
  5. 自身の経歴 プロフィール ◼ 金融ユーザ系のグループ会社に勤めるエンジニア@32歳 ◼ 大学・大学院では情報工学を専攻(UI/UX専門) ◼ 今年で入社8年目 〜2019年4月(6年間) :

    主にAP/DBサーバ製品の設計/構築/運用/維持保守 2019年4月〜(2年間) : 社内フレームワーク開発リーダー ◼ Java大好き!特に、パフォーマンス関連トピックに関心あり ◼ JJUG CCC 2019 Fall の登壇経験あり タイトル:元インフラエンジニアが SpringBoot2を用いてフレームワーク開発を学んでいる話 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 6
  6. アジェンダ ◼ 自身の経歴 ◼ 社内フレームワークの概要 ◼ Spring Boot採用システム定期Upgradeについて ⚫ Spring

    Boot EOLサイクル、対応スケジュール ⚫ 対応の流れ ⚫ 注意して取り組んでいるポイント ◼ 所感・今後トライしたいこと Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 7
  7. 社内フレームワークの概要 ◼ OSSを主軸に、当社システム開発に求められる機能(後述)を追加したもの ◼ ベースOSSは以下で、サーバサイド開発が中心 ⚫ Spring Framework 5系 ⚫

    Spring Boot 2系 - Tomcat 8系(2.0以前) → 9系(2.1以後) ⚫ Mybatis-Spring 2 ⚫ Hibernate ◼ Dockerコンテナ及び、オーケストレーション環境下での稼働も想定 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 8
  8. 社内フレームワークの概要 ◼ スタック概観 ◼ Upgrade前エディションを利用している既存システムが在る ⚫ 互換性の維持も重要なファクター Mitsubishi UFJ Information

    Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 9 JRE JAR (Java アプリケーション) 利用システム:業務毎 社内フレームワーク Spring Boot Spring Framework Apache Tomcat(Embedded) Spring Boot拡張 /共通部品 業務ロジック /共通部品 他 OSS 商用サポート 範疇 ・例外処理 ・暗号化 ・ロギング ・認証など共通基盤との連携 ...etc Dockerコンテナ with オーケストレータ , 仮想サーバ etc…
  9. アジェンダ ◼ 自身の経歴 ◼ 社内フレームワークの概要 ◼ Spring Boot採用システム定期Upgradeについて ⚫ Spring

    Boot EOLサイクル、対応スケジュール ⚫ 対応の流れ ⚫ 注意して取り組んでいるポイント ◼ 所感・今後トライしたいこと Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 10
  10. Spring Boot採用システム定期Upgrade 対応スケジュール ◼ スケジュール概要 ◼ 社内フレームワーク対応 • ノンデグ検証:OSS版 Spring

    Boot を利用 → 非互換の把握、対応方針の策定 • Release Note確認 → 利用システム側への影響も、懸念事項あれば対応を検討 • 性能検証 & システム間 接続テスト → 途中、商用サポート版 Spring Boot に切替 • モジュール引き渡し → Upgradeナレッジも共有 ◼ 利用システム対応 • ノンデグ検証:フレームワーク Upgrade版 • Release Note確認 → 利用システム側でも再確認 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 11 Spring Boot EOL周期:6か月 ノンデグ検証 Release Note確認 再設計 / コード修正 性能検証 & 接続テスト ノンデグ検証 Release Note確認 社内フレームワーク:3~4か月 利用システム:1~2か月 ・現”actively maintained” Verは3つ ・リリース時期:5月、11月 →EOL時期:2月、8月 Ver リリース日 EOL Spring Boot 2.5 2021年5月20日 2023年2月20日(予想) Spring Boot 2.4 2020年11月12日 2022年8月12日 Spring Boot 2.3 2020年5月15日 2022年2月15日 Spring Boot 2.2 2019年10月16日 2021年6月30日 Spring Boot 2.1 2018年10月30日 2020年10月31日 EOL到来済 出展: https://github.com/spring-projects/spring- boot/wiki/Supported-Versions#released-versions 引 渡 し ◆Upgrade時つまづいたポイント ・Spring Boot 2.5 Config data processing logic変更 ・Spring Boot 2.4 Graceful Shutdown関連 cf:移行ガイド ・Spring Boot 2.3 JUnit 4→5対応 ⇒ モックUtilも共連れで対応 自動化 自動化 切替
  11. Spring Boot採用システム定期Upgrade ポイント ◼ スケジュール概要 ◼ 社内フレームワーク対応 • ノンデグ検証:OSS版 Spring

    Boot を利用 → 非互換の把握、対応方針の策定 • Release Note確認 → 利用システム側への影響も、懸念事項あれば対応を検討 • 性能検証 & システム間 接続テスト → 途中、商用サポート版 Spring Boot に切替 • モジュール引き渡し → Upgradeナレッジも共有 ◼ 利用システム対応 • ノンデグ検証:フレームワーク Upgrade版 • Release Note確認 → 利用システム側でも再確認 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 12 Spring Boot EOL周期:6か月 ノンデグ検証 Release Note確認 再設計 / コード修正 性能検証 & 接続テスト ノンデグ検証 Release Note確認 社内フレームワーク:3~4か月 利用システム:1~2か月 ・現”actively maintained” Verは3つ ・リリース時期:5月、11月 →EOL時期:2月、8月 Ver リリース日 EOL Spring Boot 2.5 2021年5月20日 2023年2月20日(予想) Spring Boot 2.4 2020年11月12日 2022年8月12日 Spring Boot 2.3 2020年5月15日 2022年2月15日 Spring Boot 2.2 2019年10月16日 2021年6月30日 Spring Boot 2.1 2018年10月30日 2020年10月31日 EOL到来済 出展: https://github.com/spring-projects/spring- boot/wiki/Supported-Versions#released-versions 引 渡 し ◆Upgrade時つまづいたポイント ・Spring Boot 2.5 Config data processing logic変更 ・Spring Boot 2.4 Graceful Shutdown関連 cf:移行ガイド ・Spring Boot 2.3 JUnit 4→5対応 ⇒ モックUtilも共連れで対応 自動化 自動化 ポイント1: OSS コミュニティ動向 ライフサイクルの理解 ポイント2: 自動化、大事 ポイント3: 破壊を受け止める 切替
  12. アジェンダ ◼ 自身の経歴 ◼ 社内フレームワークの概要 ◼ Spring Boot採用システム定期Upgradeについて ⚫ Spring

    Boot EOLサイクル、対応スケジュール ⚫ 対応の流れ ⚫ 注意して取り組んでいるポイント ◼ 所感・今後トライしたいこと Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 13
  13. 所感・今後トライしたいこと ◼ 所感 Spring Boot採用システム定期Upgradeは、EOLサイクル念頭に取り組むべし - 『コミュニティ動向キャッチ』『公開情報(含:PRやIssue)からTopic発掘』が肝要 - 『テスト自動化』は、手作業の省力化 /

    影響箇所の特定 / 推進の安定化 に有効 - 『エラーでテスト落ちた』『通るように直した』DX:開発体験を楽しむ 報酬として ①早急なセキュリティ対応 ②俊敏な機能拡張 が見込める ◼ 今後トライしたいこと - Java/Jakarta EE 動向リサーチ、および積極的な活用 - OSSやコミュニティにContributeしたい(JCP, JakartaEE, Springファミリー etc) » 当社GitHubアカウントでの継続Contribute Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 14 経験 経験 経験 経験 経験 スケール (水平・垂直) GitHubアカウント: https://github.com/MitsubishiUFJInformationTechnologyLtd
  14. ご清聴ありがとうございました 15 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi

    UFJ Information Technology Ltd. All rights reserved. MUIT 採用 MUIT youtube 検索 MUIT speakerdeck
  15. 参考資料 ◼ Spring Boot プロジェクト公式 https://github.com/spring-projects/spring-boot “アップグレードの苦痛(pain)を最小限に抑えるために、 マイナーリリースとメジャーリリースにはそれぞれ、 アップグレード手順を含む詳細なリリースノートを付属しています。” ◼

    Making the most of available resources for Spring Boot https://spring.io/blog/2021/02/04/making-the-most-of-available-resources- for-spring-boot Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved. 16
  16. ◼ 本プレゼンテーションにより、貴社と三菱UFJインフォメーションテクノロジー株 式会社の間には何ら委任その他の契約関係が発生するものではなく、当社が一切法 的な義務・責任を負うものではありません。 ◼ 本資料は信頼できると考えられる各種データに基づいて作成されていますが、当社 はその正確性、完全性を保証するものではありません。 ◼ ここに示したすべての内容は、当社の現時点での判断を示しているに過ぎません。 ◼

    また、本資料に関連して生じた一切の損害については、当社は責任を負いません。 ◼ その他専門的知識に係る問題については、必ず貴社の弁護士、税理士、公認会計士 等の専門家にご相談の上ご確認下さい。 17 Mitsubishi UFJ Information Technology Confidential Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.