47 ポイント 投稿者 GN⁺ 2023-09-18 | 3件のコメント | WhatsAppで共有
  • 2010/10から2011/11までの約1年間で、0人から1,400万人のユーザーに到達。エンジニアはわずか3人
  • 3つの原則に従っていた
    • シンプルに保つこと (Keep things very simple.)
    • 車輪の再発明をしないこと (Don’t re-invent the wheel.)
    • 可能であれば、実証済みで堅牢な技術を使うこと (Use proven, solid technologies when possible.)

ユーザー視点でシンプルにスタックを見てみる

  • 初期インフラはAWS EC2上のUbuntu Linux
  • InstagramアプリはまずiOS版のみが公開され、Swift発表前だったため、Objective-C + UIKitだった可能性が高い
  • ロードバランシングのためにAmazonのElastic Load Balancerと3つのNGINXインスタンスを使用
  • バックエンド
    • アプリケーションサーバーはPythonで開発され、DjangoとWSGIサーバーとしてGunicornを使用
    • Fabricを使って複数インスタンスで同じコマンドを同時実行。これによりコードを数秒でデプロイ
    • 高性能CPUのExtra-Largeマシン25台を稼働。すべてStatelessなので必要に応じて容易に追加可能
  • 一般データストア
    • 関連するフォトID、そのIDの実際の写真、写真に関するユーザーデータ
    • アプリケーションサーバーがPostgreSQLからデータを取得
    • DjangoとPostgreSQLの間でpgbouncerによるプーリング
    • Instagramは時間順にソート可能なIDを使用: 41ビットのミリ秒 + 13ビットのシャードID + 10ビットの自動増分シーケンス
  • 写真ストレージ: S3とCloudfront
  • キャッシュ: RedisとMemcached
    • スマートなハッシュによって、3億個のキーマッピングを5GB未満の容量に保存
    • そして2年後、FacebookはMemcachedをスケールして毎秒数十億件のリクエストへ拡張した方法に関する論文を発表
  • PostgresとRedisはいずれもMaster-Replicaモードで動作。Amazon EBSスナップショットで継続的にバックアップ
  • Push NotificationとAsync Task: 通知はpyapns。Gearmanタスクキュー
  • エラーをリアルタイムで監視するためにオープンソースのDjangoアプリであるSentryを使用し、システム全体のメトリクスにはMuninを、外部サービスの監視にはPingdomとPagerDutyを使用

3件のコメント

 
botplaysdice 2023-09-19

Instagramは初期のころ(頑なにiPhoneしかサポートしていなかった時代)は、せいぜいおしゃれな画像フィルターアプリくらいの印象だったんですよね。ここまで大ヒットするとは想像もできませんでした。(私の想像力がその程度だったということです;;;)

 
princox 2023-09-18

Exitまで経験したプロダクトを比較する中で、Instagramは1人あたりのイグジット額がかなり高かったのを見た記憶があります。学ぶ点が多いと思います。

 
GN⁺ 2023-09-18
Hacker Newsの意見
  • Instagramがわずか3人のエンジニアで1400万人のユーザーを獲得した方法に関する記事
  • InstagramがObjective-CとUIKitで書かれていたと想定する言語についての議論
  • Instagramの技術スタックのシンプルさを称賛し、多くの企業が同様のアプローチから恩恵を受けられると示唆するコメントもある
  • 「適切な人を選べば、必要なのは数人だけです。そうでなければ、全員が必要になります。」というコメントで強調される、チームメンバー選びの重要性
  • Instagramが数百万人のユーザーのフィードを即座に更新する方法への興味。これは分散システムにおいて読み取りのスケーリングよりも難しい課題と見なされている
  • Django、Postgres、Redis、そしてハードウェア速度の進歩を踏まえると、Instagramが現代の技術でどこまでスケールできたかについての推測
  • エンジニアリングチームの規模についての議論を呼ぶ記事で、基本的なCRUDアプリしか持たない一部の組織が、なぜ何千人ものエンジニアを必要とするのか理解しがたいと感じる人もいる
  • Instagramの自分版を作りたいという気持ちを表す読者もおり、そこにはある種の вдохましさがある
  • Instagramの初期にはフロントエンドはiOSアプリ1つだけであり、現代のソーシャルメディアプラットフォームより機能が少なかった点への言及
  • MetaのThreadsアプリをInstagramのインフラ上で開発した最近の内部者体験の共有で、アプリの成功と関連チームの規模が強調されている