10年以上続いたサービスを終了させた

SREチームの竹田です。Tech Kayac Advent Calendar Migration Track 12日目の記事になります。

今年2019年9月にTHANKSというサービスを閉じました。

実はこのサービス、10年以上前に自分が設計開発したサービスなのです。

運営・開発が入れ替わる形で自分の手は離れていましたが、最後は自分の手元に戻りクローズ作業をすることになるとは...感慨深いものがあります。

全世界に向けて「ありがとう」を発信!「THANKS」リリース (ニュースリリースは2006.11.28ですが同年の7月にサイトは公開されたような記憶がある。13年近く続けていたってことですね。)

リリース当時の事を思い出してみると

  • フロントはFlashでサーバサイドはAPIのみ
  • ブログバーツ(なつかしい!)にもAPIを提供
  • 1台のサーバ内に複数サービスが同居
  • リリース直後にブログパーツが貼られたページが大量に閲覧されるという事態
  • 急遽半日サービス止めてAPIレスポンスをキャッシュさせる仕組みを入れた

なんて事がありました。

クローズ作業

10年の間に何回かの改修を経て、フロントはFlashからHTMLになり簡素なSNS機能を持つサービスになりました。 サーバもオンプレからクラウドに移行しています。

ただ、システム構成としては大きな変更はなくスタンダードなLAMP構成のままです。

  • Apache
  • PHP5 / Symfony1.2
  • MySQL5
  • memcached

最終的にサーバインスタンスを落とせる状況まで持って行く事が、クローズ作業のゴールです。

サービス終了ページに誘導させる

まずはApacheの設定を変更して、該当ドメインthanks.kayac.comにきたアクセスをサービス 終了ページにリダイレクトさせます。

さてこれが難しい...というかApachはここ7~8年まったく触っていない。 恐る恐るRedirectを追加して再起動しました。

普段使っているnginxの設定はわかりやすいですね。

バックアップ

アクセスが来なくなったことを確認したところでDBをダンプし、サーバ上のコードも固めてS3に保存してしまいます。

リポジトリは存在しますが、サーバ上で動いているコードが一番信頼できるものなので、こちらを保存アーカイブしておきます。

DNS切り替え

まずS3のstatic website hosting機能を使って、新たにTHANKS用S3ドメインを設定しアクセスを受け入れるようにしておきます。

# S3エンドポイント
http://thanks.kayac.com.s3-website-ap-northeast-1.amazonaws.com

次にアクセスをサービス終了ページにリダイレクトさせるようにリダイレクトルールを設定します。

# リダイレクトルール
<RoutingRules>
  <RoutingRule>
    <Redirect>
      <HostName>www.kayac.com</HostName>
      <ReplaceKeyWith>service/closed_and_soldout/</ReplaceKeyWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

リダイレクトが確認できたところで DNSのCNAMEでドメインの向き先をサーバからTHANKS用S3ドメインに変更します。

$ dig thanks.kayac.com 

thanks.kayac.com.   300 IN  CNAME   thanks.kayac.com.s3-website-ap-northeast-1.amazonaws.com.
thanks.kayac.com.s3-website-ap-northeast-1.amazonaws.com. 60 IN CNAME s3-website-ap-northeast-1.amazonaws.com.

これでアクセスが来なくなるはずです。 サーバを停止させる準備ができたので落としてしまいましょう。

かつてはサービス終了後も告知やリダイレクト用にサーバを立ち上げていましたが、S3の登場でその必要がなくなりました。


アクセスが来なくなったサーバでDBやコードを見ると、当時の賑わいを振り返り遺品整理をしているような気持ちになりますね (‐人‐) 。

いままで長い間のTHANKSのご利用ありがとうございました。