概要
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でのコスト試算で数百万