はじめに
こんにちは!新卒入社6年目の添野です。@niftyトップページシステムの開発・運用を担当しています。
先日「レガシーシステムからの脱却」に登壇しましたので、その様子を紹介していきます!
イベント概要
NIFTY Tech Talk は、ニフティ株式会社の社員が主催するトークイベントです。
本イベントではニフティ社員が業務を通じて学んだことを発信しています。
第四回目となる今回は、「レガシーシステムからの脱却」に関するテーマで開催しました。
ニフティではさまざまなシステムの刷新やリプレースなどを行っています。今までのレガシーなシステムからモダンなシステムにどんどん切り替えていこうという流れが全社的に強くなっています。
イベントの詳細についてはこちらの記事でも紹介しておりますので、ぜひご覧ください。
また、今回の Tech Talk のアーカイブを YouTube にアップロードしております。
こちらもご覧いただけますと幸いです。
内容レポート
オープニングからディスカッションに至るまでの各セッションにおいて一部抜粋して、どのような内容だったかご紹介したいと思います。
オープニング
今回も前回に引き続きYouTube Liveで開催しました。
はじめにニフティの会社紹介、登壇者の自己紹介から始まりました。

今回も最後にニフティポイントのプレゼントがありました!
今回の登壇者
- 小松 勇貴:会員システムグループ グループ長
- 島田 大徳:基幹システムグループ 課金システムチーム
- 村松 啓寛:会員システムグループ 第2開発チーム
- 添野 翔太:会員システムグループ 第1開発チーム
- 清水 利音:基幹システムグループ サービスインフラチーム
固定IP受付システム刷新
まず1つ目は、@nifty 固定IPサービスの事例紹介です。
Kubernetesを活用してマイクロサービス化を図りながら新環境を構築を進めた話がありました。
レガシー脱却の背景

あるタイミングで新規のIPを払い出す話が浮上した際、前任者がチームを離れてしまったため改修に注力できない状況が生まれたとの話がありました。@nifty固定IPサービスのシステムはモノリスでブラックボックスとなっていたため、作るべきものを見定めた上でイチから作ることにしたそうです。
新環境の紹介

申込受付部分にフォーカスして説明がありました。新環境はEKS、NGINX、Djangoをベースに、Argo CDなども組み合わせて構築したそうです。
新環境構築を通じて

構築を進めていく中でブラックボックスとなっていたシステムに関して要件が明らかになり、改修がしやすくなったそうです。また開発者のスキルが向上し、モチベーションも上がったそうです。
ニフティニュースの夜明け〜32万超のページをレガシーシステムから救出!〜
2つ目は、@niftyニュースの事例紹介です。
ストラングラーパターンを利用し、モダンなアーキテクチャーへの段階的な移行について話がありました。
レガシー脱却の背景と目的


コア機能をニフティ独自のモノリスフレームワークで提供しているため、属人化が進みやすい、クラウドのスケーリングメリットなどの恩恵を受けられないという課題に加えて、@niftyニュース特有の課題についても触れられていました。
新環境の紹介


移行方針ストラングラーパターンについて説明がありました。またモダンな開発言語を採用し、オートスケーリングなどクラウドメリットを享受できるようなシステム構成にした話がありました。そして事前のページ出力に関してはSEOを意識してSSRを利用したそうです。
新環境構築を通じて

老舗ポータルサイトの新たなシステムへの挑戦 〜@niftyトップページ〜
3つ目は、筆者のセッションである@niftyトップページの事例紹介です。
@niftyニュースと同様にストラングラーパターンを利用し、Next.js、AWSを使ってPC版ページの刷新を進めた話をしました。
レガシー脱却の背景と目的

長大なJavaScriptファイルや未使用なコードがあるなどの課題を解決することが目的であるという話をしました。
新環境の紹介

APIデータ連携を実施し、レガシーシステムからの脱却を着々と進めているという話をしました。

Serverless Framework、改修対象を迅速に把握するためにAtomic Designを駆使したアプリケーションの再構築、GitHub Actionsを用いたデプロイを実施していることを紹介しました。

他のGitブランチ戦略の記事を参考にして策定した、新環境でのブランチ戦略を紹介しました。
新環境構築を通じて

内製で構築を進めたので、システムへの理解が進み、ドキュメントを新しくできていること、また最新技術に触れたことでメンバーのモチベーションが向上したという話をしました。
レガシーなシングルサインオンシステムを完全内製で作り直した話
最後は、ニフティシングルサインオン(SSO)システムの事例紹介です。
100を超えるサービスと連携する状況で、マネージドサービスを活用して問題に立ち向かった話をしていただきました。
レガシー脱却の背景



SSOシステムはスケールイン/アウトしにくいインフラ構成でバージョンアップも厳しいシステムであるという話がありました。またドキュメントが少なくブラックボックス化しているという話がありました。
新環境の紹介


メンバー一丸となり、コードリーディングを進め仕様を把握し、基本設計から作り直したそうです。またインフラはCDKを用いてIaC管理を進め、CloudWatchなどAWSサービスを用いた監視機構を導入したそうです。
新環境構築を通じて

完全内製で進めたことによりナレッジが残せたこと、インフラコストを削減できたことについて話がありました。
ディスカッション
今回は各システムの事例紹介後、登壇者間でディスカッションをする時間を設けました。
以下のテーマに沿って深堀りを進めました。
- テーマ1:そもそもレガシーって何?(レガシーへのイメージ)
- テーマ2:皆さんのシステム、どれくらいレガシーなんですか?(レガシー度合いの自慢)
- テーマ3:レガシー脱却で苦労した話
- テーマ4:レガシー脱却の対応状況
テーマ1:レガシーへのイメージ

今回のテーマである「レガシー」に関して、各自イメージを話しました。
気軽に変更できない、チーム離脱に伴い前任者が持っていた知見が失われている状態などが話に挙がりました。また新環境への構築を進めた我々が未来に負債を残さないという話も挙がりました。
テーマ2:レガシー度合いの自慢

レガシー脱却を進めていた中での苦しみを存分に話しました。何か変更を行う際に影響範囲がしっかりと分からない、何かあってもシステムを再構築できない、そして中にはテストも仕様書もないという悲しみを持つシステムがありました。
テーマ3:レガシー脱却で苦労した話

汎用的なシステムを利用しているがゆえの苦しみ、また知見が失伝されていることによる要件漏れ、連携先や連携要素の多さによるものが挙がっておりました。
テーマ4:レガシー脱却の対応状況

事例紹介の中では触れなかった進捗度合いについて話しました。各システムはおおむね道半ばという状況ですが、新環境での明るい未来の実現に向けてこれからも突き進んでいきたいという話がありました。
まとめ
今回の Tech Talk では、ニフティでのレガシー脱却について事例を交えて紹介しました。
1 時間という短い枠だったので、今回話しきれなかった内容もありますが、参考にできるものがあれば幸いです。
また後半ではディスカッションを行いました。社内の雰囲気を少しでも感じていただけたらありがたいです。
そして今回も質問やコメントをくださった方もいました。ありがとうございました。
今後も NIFTY Tech Talk は継続して実施していきますので、ぜひご参加ください。