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

Webアプリケーション周りのいろいろなアップグレード戦記

 Webアプリケーション周りのいろいろなアップグレード戦記

拙者、いわゆるマイクロ法人。複数の現場に片手片足から突っ込みまして、主にクラウドインフラ関連箇所を手伝っております。
そんな自分が、比較的最近で遭遇してきた難局、それらをどう切り抜けてきたのか、はたまた妥協してきたのか、といった事例をお話しします。

Hisashi SOGA

January 03, 2024
Tweet

More Decks by Hisashi SOGA

Other Decks in Technology

Transcript

  1. About Me 5 社と個人事業主を経て、2022/3 〜 マイクロ法人 代表社員 法人成りの契機は 2022/1 〜

    の法人化で得た知見( ) 業務委託で複数社に参画し、“ 小人( こびと) さん” 的に 主にクラウドインフラの構築・運用・保守に従事しています Hisashi SOGA ant-in-giant G.K. 一般社団法人SRE NEXT 2
  2. 自社メディアPR ひっそりと運営してます URL : 珍しい/ お役立ちなIT サービス/ アプリが 見つかるかもしれないサイトです WordPress

    ベースのサイト運営における 学びを で 記事にしていくぞ2024 は SNS 公式アカウントあり: 今回の札幌滞在に向けた旅券購入は ↑のサイトで紹介されてたサービスを利用 https://tyotto-rurou.tips https://zenn.dev/tyotto_rurou 3
  3. AGENDA PHP 5 on EC2 -> 8 on Fargate Aurora

    2 (MySQL 5.7) -> 3 (8) Laravel 7 -> 9 (lighthouse-php) Node.js 14 -> 20 (Vue.js) 資料は公開してあります -> ※1. 履歴が増殖するため、シークレットウィンドウでご覧ください(Chrome を推奨) ※2. ところどころの青の文字はリンクになっています ※3. スペースで次のページに進みます([o] でOverview が見れます)) ( はダウンロードしたPDF ならリンクに飛べるのでご利用ください) https://bit.ly/3H2UwPQ SpeakerDeck 版 4
  4. PHP 5 on EC2 -> 8 on Fargate Aurora 2

    (MySQL 5.7) -> 3 (8) Laravel 7 -> 9 (lighthouse-php) Node.js 14 -> 20 (Vue.js) 5
  5. CI 整備・負荷試験準備 案件単位の移行検証 => 失敗 ALB の限界に挑む振り分け カバレッジ100% への積み上げ 地道に

    Bitbucket Pipelines たまに CircleCI (for SSH デバッグ) AWS Distributed Load Testing 過去のJMeter 資産を活用 8
  6. PHP 5 on EC2 -> 8 on Fargate Aurora 2

    (MySQL 5.7) -> 3 (8) Laravel 7 -> 9 (lighthouse-php) Node.js 14 -> 20 (Vue.js) 9
  7. 3 月ラウンド: Aurora 2.10 -> 2.11 フェールオーバーを駆使して binlog_format 有効化 (

    今はもうない) 例外申請:「進まない… 」 全Web/App の接続先切替スクリプトも準備 ( 手動Blue/Green) RDS 強制アップグレードを乗り越える Blue/Green Deployments - Zenn 10
  8. 8 月ラウンド: Aurora 2 -> 3 運用チームに移行前検証を託す 検証環境でBug の噂の精査や非互換への対応 (

    ↓※1 〜3) 移行Week は関係者協働 Blue/Green 作成で制限事項に抵触した( ↓※4) 当日、夜間バッチの負荷が高く1回タイムアウト(↓※5 ) 集計処理が回りきらなくなった問題を翌日中に処置(↓※6 ) ※1. ※2. ※3. ※4. ※5. ※6. MySQL Shell の checkForServerUpgrade MySQL 8.0.32 にはUNION ALL をするとWHERE 句で日本語が使えなくなるバグが存在します | DevelopersIO Aurora MySQL をMySQL8.0 へ移行した話 - inSmartBank MySQL のぺージャー部で使用してたFOUND_ROWS() が非推奨になっていた | やってみルカ ブルー/ グリーンデプロイの制限事項 ブルー/ グリーンデプロイの切り替え > 切り替えガードレール Aurora MySQL で大量データ取得クエリ実行時、一時領域不足エラー #MySQL8.0 - Qiita 11
  9. PHP 5 on EC2 -> 8 on Fargate Aurora 2

    (MySQL 5.7) -> 3 (8) Laravel 7 -> 9 (lighthouse-php) Node.js 14 -> 20 (Vue.js) 12
  10. 定石を捨て、肉付けし直す PHP 8.1, Laravel 9.0 の「骨」をゼロベース作成 migration 周りを大幅調整 Login 成功を皮切りに、順次

    Query, Mutation を移植 「jwt, laravel/passport を上げていく」を断念 Laravel 8 でモデルファクトリが激変 13
  11. うごかないな?を潰していく maatwebsite/excel ライブラリ投入時に前提不足 gd を enable (インストールして php.ini 変更) phpoffice/phpspreadsheet

    を入れる ValidatorDirective -> Validator に要変更、だった(↓※7 ) 他にも lighthouse-php v4 -> v5 対応いくつか(↓※8 〜9 ) ※7. ※8. ※9. REST API の route の書き方が v7 と v9 で変わってた Replace custom validation directives with validator classes Replace @bcrypt with @hash @orderBy argument renamed to column 14
  12. PHP 5 on EC2 -> 8 on Fargate Aurora 2

    (MySQL 5.7) -> 3 (8) Laravel 7 -> 9 (lighthouse-php) Node.js 14 -> 20 (Vue.js) 15
  13. Vue.js 2 の EOL たちはだかる “GLIBC_2.27 not found” 開発サーバー: Ubuntu

    18 ビルドコンテナ: Amazon Linux 2 ベース Webpack -> Vite 移行の試行 Ubuntu 22 OK… AL2023 OK… 16
  14. 全部載せビルドコンテナ変更と amazon-linux-extras install docker もう使えない dnf install docker へ golang.org

    / go get はもうない go.dev / go install へ Graviton に行きたかった・・・ arm64 に対応できてないライブラリがあって断念 Fargate Spot が Graviton 未対応 17