Slide 1

Slide 1 text

20年続くレガシープロダクト 
 に10年携わったエンジニアが思 う、システム長期運用のカギ 
 株式会社ウエディングパーク  東 和樹 • 2024 年 12 月 22 日 PHP Conference Japan 2024

Slide 2

Slide 2 text

アジェンダ ・自己/会社/サービス紹介 ・サービスと私の歴史 ・運用と挑戦で見えてきた課題とアプローチ ・まとめ 2

Slide 3

Slide 3 text

Xで、ご感想の投稿 お待ちしてます! #phpcon #track5 3

Slide 4

Slide 4 text

自己/会社/サービス 紹介 4

Slide 5

Slide 5 text

自己紹介 東 和樹(あずめん)  1990年生まれ  趣味:料理、お菓子作り、 Vtuber推活 2015年 ウエディングパーク入社  PHPer歴10年  ・バックエンドエンジニア  ・SREチーム  ・テックリード 好きなPHP8のアップデート  Named Arguments x: @AzMen29759244 5

Slide 6

Slide 6 text

©WEDDING PARK CO., LTD. 経営理念 2018年12月 桂由美 ブライダルエディター賞 
 6

Slide 7

Slide 7 text

©WEDDING PARK CO., LTD. ビジョン 2018年12月 桂由美 ブライダルエディター賞 
 7

Slide 8

Slide 8 text

©WEDDING PARK CO., LTD. ウエディングパークの歴史 6月 結婚準備クチコミ情報サイト「Wedding Park」オープン 2004 7月 アドテクノロジー専門部署「WedTech推進室」   (現デジタルマーケティング本部)を設立 2014 3月 海外・リゾートウエディングのクチコミ情報サイト「Felicita」   (現Wedding Park海外)オープン 2009 1月 フォトウエディング・前撮りのクチコミ情報サイト「Photorait」オープン 6月 データ分析プラットフォーム「DAP」スタート 9月 婚約・結婚指輪のクチコミ情報サイト「Ringraph」オープン 2015 1月 結婚衣装選びのクチコミ情報サイト「DRESPIC」   (現Wedding Park DRESS)オープン 2017 10月 「データ推進室」設立 2018 5月 DX専門部署「DX推進室」(現DX本部)設立 2020 当社は「サイバーエージェントグループ」として、2004年に日本初・結婚式場のクチコミサイトをリリース、世の中にイノ ベーション起こしました。その後も、デジタル×ウエディングの領域で、常に新しい技術や領域にチャレンジし続けています。 4月 「Wedding Park D-Creative School」プロジェクト発足 2021 2022 10月 カップル向け満足度調査サーベイ「survox」リリース 2024 11月 結婚式費用の超リアルなシミュレーションサービス「mieruupark」リリース 8

Slide 9

Slide 9 text

©WEDDING PARK CO., LTD. ウエディングパークのサービス|専門メディア 結婚準備クチコミ情報サイト 海外・リゾートウエディングのクチコミ情報サイト 結婚衣装選びのクチコミ情報サイト フォトウエディング・前撮りのクチコミ情報サイト 婚約・結婚指輪のクチコミ情報サイト 結婚の各領域に特化した専門メディアを複数運営 デジタル技術を活用し、カップルと様々なウエディングサービスのベストマッチを実現します 9

Slide 10

Slide 10 text

©WEDDING PARK CO., LTD. ウエディングパーク的「デザイン経営」の推進 社会のニーズを掴む「視点」・社会のニーズから考える「発想」 ⇄ 事業運営 デザイン=「社会にとって必要なものはなにか」という視点と発想 全社員が世の中にとって必要とされるありかたを考え、カタチにしていこうとしています 10

Slide 11

Slide 11 text

©WEDDING PARK CO., LTD. 業界への取り組み(一部) サービス・組織 プロジェクト・イベント 結婚が多様な幸せを叶えていく新しい時代を創るために デザイン思考を活用したサービス・組織づくりや、社会・業界へ向けた取り組みを複数行っています 11

Slide 12

Slide 12 text

©WEDDING PARK CO., LTD. エンジニア組織の指針 クリエイターが、デザイン思考と具現化力で、事業成長をリードする 12

Slide 13

Slide 13 text

さまざまな取り組みを多く実行するためには? それらのリードタイムを短くする & 現在の事業を支える 運用・保守にかけるコストを下げる (※品質劣化を限りなく抑える) 変化に強い Platformへ 挑戦しつづける チームのために 13

Slide 14

Slide 14 text

運用・保守にかけるコストを下げる プロダクト維持のためにはシステムの定期保守 が必要 ・セキュリティリスク回避 ・開発者体験向上、開発人材確保 ⇒ 定期保守をいかに短く実行するか Application Middleware OS Hardware ハードウェア寿命 5年程度 AmazonLinux 5年程度 Node 2年程度 PHP 2年 MySQL 5年 デザイン 5年程度 Laravel 2年 ライフサイクル(寿命) ※プロダクトを構成する様々な要素は 2~5年スパンでアップデート必須 14

Slide 15

Slide 15 text

20周年となった結婚準備クチコミ情報サイト 「Wedding Park」 長期運用されてきたこのサービスは、現在も多く利 用いただいており、日々改修を進めている ここに10年携わった私の体験を基に、システムの 歴史と共に、長期運用に大事な考え方 を紹介しま す 15

Slide 16

Slide 16 text

プロダクトの歴史 16

Slide 17

Slide 17 text

私のウエディングパークでの歴史 株式会社ウエディングパーク入社 パフォーマンスチューニングチームJOIN  ⇒ 一部PHP製APIのGoリプレイスでサイト速度パフォーマンス改善 2015 Wedding Parkの全システムに及ぶリプレイスプロジェクト  APIのPHP -> Goへのリプレイス  PHP5.x/ZendFramework1 -> PHP7.x/Laravel5 AWS環境でのバージョンアップ 大規模リプレイス 会員基盤構築 Wedding Parkのサービス横断の会員基盤構築と会員統合 Wedding Parkの検索ロジックを担う検索エンジンの内製化 システム内製化 コンテナ化 SREチームJOIN 全社インフラの運用・構築 既存環境のterraformでのInfrastructure as a Codeの推進 Wedding Parkの機能追加/商品バージョンアップ MySQL8へのバージョンアップ ウエクリのバージョンアップ 動画レポートコンテンツ「ムビレポ」への生成AI活用事例導入 現在 システム運用保守の小さく早く回すサイクルづくり PHPバージョンアップ nodeバージョンアップ 17

Slide 18

Slide 18 text

私が関わった「Wedding Park」サイトのシステム変遷 クチコミサイト スタート MySQL バージョンアップ APIリプレイス PHP/Laravel リプレイス PHP バージョンアップ AWS移行 ・・・ 基盤改善 2004 2015 現在 コンテナ化 MySQL バージョンアップ システム リニューアル ・・・ nodeバージョン アップ 18

Slide 19

Slide 19 text

見えてきた課題とアプローチ 19

Slide 20

Slide 20 text

見えてきた課題とアプローチ(リプレイス) サイトオープン MySQL バージョンアップ APIリプレイス PHP/Laravel リプレイス PHP バージョンアップ AWS移行 ・・・ 基盤改善 2004 2015 現在 コンテナ化 MySQL バージョンアップ システム リニューアル ・・・ nodeバージョン アップ 20

Slide 21

Slide 21 text

リプレイス PJ 【当時の課題】 システム老朽化 使われているか不明な機能 仕様に明るい人が少ない 当時の事業拡大を支える開発基盤を目指したい 【実施内容】 PHP5->7 & Zend Framework1->Laravel5リプレイス 機能整理と断捨離 共通モジュール導入で複数機能での再利用性向上 APIのPHP->Goリプレイス APIドキュメントやテストコード作成 返却するデータ構造の統制 21

Slide 22

Slide 22 text

見えてきた課題とアプローチ( AWS移行とバージョンアップ) サイトオープン MySQL バージョンアップ APIリプレイス PHP/Laravel リプレイス PHP バージョンアップ AWS移行 ・・・ 基盤改善 2004 2015 現在 コンテナ化 MySQL バージョンアップ システム リニューアル ・・・ nodeバージョン アップ 22

Slide 23

Slide 23 text

AWS移行や各種バージョンアップ 【当時の課題】 オンプレサーバ運用 (単一障害点のHW故障、複数機能の障害)  サーバ構築の工数大 システム老朽化 【実施内容】 AWS移行 単一障害点の解消 サーバ構築のリードタイム短縮 AWSでのMySQL、PHPバージョンアップ システム老朽化改善 サーバ複製でのバージョンアップ実行 23

Slide 24

Slide 24 text

見えてきた課題とアプローチ(コンテナ化) サイトオープン MySQL バージョンアップ APIリプレイス PHP/Laravel リプレイス PHP バージョンアップ AWS移行 ・・・ 基盤改善 2004 2015 現在 コンテナ化 MySQL バージョンアップ システム リニューアル ・・・ nodeバージョン アップ 24

Slide 25

Slide 25 text

コンテナ化 【当時の課題】 アプリケーション肥大化、アップデートの手間 サーバ設定依存のアプリケーション構成 サーバ構築の手間(過去の設定値の管理や背景不明) 【実施内容】 コンテナ化 サーバ構成変更のオーバヘッド短縮 ローカル環境整備やバージョンアップで老朽化解消も実現 複雑なアプリケーション運用の解消実施 Infrastructure as a Codeの実現 設定値に関する経緯を残せる/再利用できる サーバ構築と変更のオーバヘッド短縮 25

Slide 26

Slide 26 text

長期プロジェクトを 幾多も越えて 26

Slide 27

Slide 27 text

実現されてきたこと 構成変更を始めやすい システム構成 システム構成変更容易性向上 (構成変更準備のオーバヘッド短縮) システム依存の緩和 (モノリシックの依存/サーバ固有設定緩和) 27

Slide 28

Slide 28 text

未だ残る課題 高頻繁なシステム変更の実施が できず、毎回長期のプロジェクト になる 28

Slide 29

Slide 29 text

未だある開発課題 頻繁にアップデート実施ができない ・対応が後手に回ることで膨大なアップデート内容となる ・アップデート実施影響の判断材料が足りてない ・日々の運用案件で小さい変更を含めることができない 毎回長期プロジェクトになる ・各機能の仕様のキャッチアップに時間がかかる ・各機能のドキュメントが引き継げていない ・テスト実行およびテスト準備が膨大 29

Slide 30

Slide 30 text

再現性のある開発体制が必要 30

Slide 31

Slide 31 text

再現性のある開発体制が必要 システムだけでなく開発体制の改善 がセットで必要 システム運用するのは、「人/組織」 長期運用すると、システムも変われば体制も変わる 。 属人化した仕様や構成など過去のノウハウが引き継げないこと でプロジェクトの長期化 =再現性のある開発体制が必要 常に、人/組織が、安心して決断できる状態へ   31

Slide 32

Slide 32 text

見えてきた課題とアプローチ(今後の挑戦) サイトオープン MySQL バージョンアップ APIリプレイス PHP/Laravel リプレイス PHP バージョンアップ AWS移行 ・・・ 基盤改善 2004 2015 現在 コンテナ化 MySQL バージョンアップ システム リニューアル ・・・ nodeバージョン アップ 32

Slide 33

Slide 33 text

長期運用できるシステムサイクル実現に向けて オンプレ AWS化 コンテナ化 小さく早く変化 する体制づくり 再現性のある開発体制の実現への取り組み 中・長期的リリース計画  ⇒ 変更量を小さく・細かくサイクルを回す 手間を削減し、変更しやすい仕組みづくり  ⇒ 長期で再現性のある、変更のリードタイム短縮   (仕様キャッチアップ、テストフェーズ)  ⇒ 更にアップデートしやすい仕組へ   (CICDなどでの自動化、安心へ) ・モノリシックの解消 ・ローカル開発の実現 ・IaCでさらに構成管理/変更容易 ・インフラ構成変更容易 33

Slide 34

Slide 34 text

最後に 34

Slide 35

Slide 35 text

まとめ 10年携わって考える システム長期運用に大事なカギ システムと開発体制の両面を常にアップデートする ⇒構成変更しやすいだけでなく実行しやすい状態へ 小さく早く、そして、未来に繋ぐ取り組みを ⇒変更して終わりではなく、今やっていることが未来で誰 かが繰り返さないように繋いでいく 35

Slide 36

Slide 36 text

ウエディングパークの スポンサーブースにもおりますのでお 気軽にお声がけください! 36