BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

BASEという大きなプロダクトでドメインを移行した話

はじめに

どうも。BASEで開発をお手伝いしている 林(@intele) です!
今回はBASEという大きなプロダクトでドメインを移行した話を、エンジニア目線で、振り返りながらお話したいと思います。

何をやったか

BASEで使用しているドメインを thebase.in から thebase.com へ移行を行いました。
ただ、BASEではサブドメインを多用しているため、移行するドメインは thebase.in だけではなく、複数のサブドメインを含め、移行しました。

なぜ移行する必要があったか

  • ****.thebase.in というサブドメイン運用されているショップで広告の効果計測ができなくなったため
  • Apple が推進する App Tracking Transparency(以下ATT) の影響を受けて、Facebook広告の計測手法が変更され、効果計測ができなくなってしまったため
  • ATT で効果計測ができる条件として Public Suffix List(以下PSL) に thebase.in 登録することが必須条件となる
  • PSL に登録したドメインは、Cookie を持つことができなくなるため
  • Cookie を持つことができないと、ログイン状態などを保持できなくなるため

この5つの理由から、ドメインを移行することになりました。 移行することで、PSL に登録すること・Cookie を持つことができるようになるということを目指しました。 ※ATT と PSL の説明については省略します。

最初の見積

最初の見積は概算で期間6ヶ月程度とかなり甘く見積もっていました。
というのも

  • 影響範囲が大きすぎて、短期間での詳細な見積は難しいだろう
  • レビューを必ず行っているので、品質は一定レベルは担保されているだろう
  • ユニットテストが充実しているので、修正を加えても動作の確認がしやすいだろう
  • 設定ファイルにドメインが記載されているため、コードと深く結びついていないだろう

という理由から、6ヶ月程度と見積もっていました。
この予測が甘かったと知るのは、実際の作業が始まってからのことでした…

問題の発覚

開発が進めば進むほど、問題が発覚していきました。

  • ドメインがコードに直接記載されていたり、ロジックに深く結びついている箇所が多数存在する
  • ユニットテストが足りない、そもそも存在しない
  • 特定の環境でしか動作しないロジックが存在する
  • コードは存在するが動作はしてないデットコードが存在する

など、開発が進むにつれて、見積が甘かったことが明らかになっていきました。

プロジェクトの仕切り直し

このままでは、開発もリリースが難しいと判断し、開発チーム内で協議した結果、プロジェクトの仕切り直しをする事となりました。
仕切り直し後は、以下のような方針で開発を進めました。

01. 根幹改修

ドメインを切り替えるために必要な改修の根幹となる改修を行います。
具体的にはURLやドメインを扱ったりするClassの整備やアプリケーション全体に影響するRouting周りの改修を行います。

02. 部分改修

各ページやApps単位で改修を行い都度リリースを行います。
この段階ではドメイン変更は行わず、根幹修正で行った、URLやドメインを扱うClassを使用するようにアプリケーション全体を改修しました。
また、動作検証が難しい部分は、ユニットテストを追加することで、動作を担保し、それでも難しい場合は後続のQAで動作を担保するようにしました。

03. 全リリース

部分改修でリリースが行えなかった箇所をまとめて、アプリケーション全体のQAを行います。
QA完了後にリリースを行い、アプリケーションの振る舞いは変わらないが、ドメインの変更が容易に行える状態となります。 他にも、インフラ側で行う必要があるリダイレクト整理や設定を行います。

04. ドメイン切替

ドメインが容易に切り替えられる状態となったので、ドメインを切り替えた状態でQAを行います。
QA完了後にリリースを行い、ドメインの切り替えが完了となります。

リリース

リリースは、深夜メンテナンスにてサービスを止めて行いました。 その当日も問題が発生し、リリースが出来ないかもしれない危機に直面しましたが、 なんとか問題を解決し、リリースまでこぎつけました。 また、大規模な変更を行ったため、大きな問題が起こる可能性も危惧し、万全の体制をとっていましたが、結果としては小さな不具合が10件程度で収まり、ユーザーの皆様に不便をかけることなく終えることが出来ました。

感想

これまでお話した通りリリースに至るまでの過程では色々と問題がありましたが、
プロジェクトのキックオフから、リリースまでの期間は約1年となり若干短い期間となりました。
短い期間で行えたのは常日頃からレビューやテストを徹底しているBASEの開発チームの努力の賜物だと思っています。