0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHPカンファレンス2024参加レポート】終了の危機にあった15年続くWebサービスを全力で存続させる〜Twilog・Togetter統合の舞台裏〜

Posted at

概要

2023年5月、Twitter(現X)が提供するAPIが突如として有料化し、2009年から個人により運営されてきたTwilogがサービスの終了を発表しました。
そこに手を差し伸べる1つの企業がありました。そう、Twitter関連企業のTogetterです。

華麗な買収エピソードの裏側で、Twilogの統合プロジェクトがスタートします。

RubyからPHPへのフルスクラッチでのコード移行
15年間貯め続けたテラバイト級のDBの移管作業
コストを抑えてAWS環境へ移管するための試行錯誤
などなど、1年間に及んだ移行作業の全容についてお話しします。

所感

多分、この界隈で知らない人はいないと思うサービス、TogetterとTwilog。
twitterがXになり、APIの利用事情が大きく変わった事で、クリティカルに影響を受けた両サービスが統合する事になり、その際の舞台裏を、赤裸々にお話いただきました。

時間にすると45分ぐらいのセッションですが、非常に濃い内容で、とても面白かったです。

中々普段、TB級のデータを移行させる事なんかないですし、
理路整然としたデータならまだしも、個人開発スタートであるが故にその整理も含めて行う必要があった、
沢山の苦労、苦悩。沢山の意思決定。

それらを経て、無事統合しサービスが継続されている両サービスには、本当に拍手を送りたい。

詳細は公開されているスライドをぜひ読んでほしいのですが、
データ移行、システム統合するにあたって様々な試みが行われた事、そのトライ&エラーに、エンジニアのプライドを感じました。尊敬。

また、スピーカーの方とは懇親会でもお話する事ができ、さらに突っ込んだ事も聞けて、それも含めて面白かった、個人的には今回のベストセッションかもです。

スライド

受講メモ

Twitter APIが有料化→月600万

ドメインの統合
twlogではAPIが停止。ログイン機能を復旧し、twggterドメインに。

アプリケーションの統合
同スペックをAWSに構築すると高コストになる。

めもりーさんにコード移行を依頼
Togetterのコードは把握済み
rubyからPHPへ
twlogには仕様書もテストもない。あるのはコードだけ
rubyを知らなかっためもりーさん。
2ヶ月で予定通り移行完了

AWSとさくら間でのmysql接続は失敗
検証までは良かったが、デプロイ後に処理が詰まってダウン

F2、DBをAWSへ移行
TB級のデータ移行
sqldump、mysqldump
データ生成、転送、復元
EC2スペックを一時的にとにかくあげる
途中失敗するとやり直し
工程の自動化、途中から再開できる工夫、ロギング

15年間のうち1日だけ欠損していてやり直し。。。


ストレージコスト増大に対する対策
案1:S3にログデータをテキストとして保存し、S3 Selectを使って全文検索を実現
案2:SqLite。1ユーザー1SQLiteをS3に保存し、運用
→案2

100万ツイートあるようなユーザーのツイート検索でエラー

SQLliteをマスターに、サーバーローカルにmysql Myisamを構築運用
→ん?戻ってない・・?

Twitter API v1.1が終了するアナウンスがあり、デプロイせざるを得ない状況に

SQLliteの廃止
ChaceのMysqlがうまく動いているので、マスターに昇格させる
WriteとReaderの2台構成

事前の負荷テスト
nginxのリクエストをミラーリングして新環境にも流してみることで検証

現在月10万程度のコストで構成

S3 Selectでのコスト試算で数百万
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?