47 điểm bởi GN⁺ 2023-09-18 | 3 bình luận | Chia sẻ qua WhatsApp
  • Từ 10/2010 đến 11/2011, trong khoảng 1 năm, đã tăng từ 0 lên 14 triệu người dùng. Chỉ có đúng 3 kỹ sư
  • Họ tuân theo 3 nguyên tắc
    • Giữ mọi thứ thật đơn giản (Keep things very simple.)
    • Đừng phát minh lại bánh xe (Don’t re-invent the wheel.)
    • Khi có thể, hãy dùng các công nghệ đã được kiểm chứng và vững chắc (Use proven, solid technologies when possible.)

Nhìn nhanh vào stack theo góc nhìn người dùng

  • Hạ tầng ban đầu chạy Ubuntu Linux trên AWS EC2
  • Ứng dụng Instagram ban đầu chỉ có trên iOS, và vì ra mắt trước khi Swift được công bố nên nhiều khả năng dùng Objective-C + UIKit
  • Để cân bằng tải, họ dùng Elastic Load Balancer của Amazon và 3 instance NGINX
  • Backend
    • Máy chủ ứng dụng được phát triển bằng Python, dùng Django và Gunicorn làm máy chủ WSGI
    • Dùng Fabric để chạy đồng thời cùng một lệnh trên nhiều instance. Nhờ đó có thể triển khai mã trong vài giây
    • Vận hành 25 máy CPU hiệu năng cao loại Extra-Large. Tất cả đều stateless nên khi cần có thể dễ dàng bổ sung thêm
  • Kho lưu trữ dữ liệu chung
    • ID ảnh liên quan, ảnh thực tế tương ứng với ID đó, và dữ liệu người dùng về ảnh
    • Máy chủ ứng dụng lấy dữ liệu từ PostgreSQL
    • Dùng pgbouncer để pooling giữa Django và PostgreSQL
    • Instagram dùng ID có thể sắp xếp theo thời gian: 41 bit mili giây + 13 bit shard ID + 10 bit chuỗi tự tăng
  • Lưu trữ ảnh: S3 và CloudFront
  • Caching: Redis và Memcached
    • Nhờ hashing thông minh, họ lưu ánh xạ 300 triệu khóa trong chưa đến 5GB dung lượng
    • Và 2 năm sau, Facebook công bố một bài báo về cách scale Memcached để mở rộng lên hàng tỷ request mỗi giây
  • Cả Postgres và Redis đều chạy ở chế độ master-replica. Liên tục sao lưu bằng snapshot Amazon EBS
  • Push notification và tác vụ bất đồng bộ: thông báo dùng pyapns. Hàng đợi tác vụ dùng Gearman
  • Để giám sát lỗi theo thời gian thực, họ dùng Sentry, một ứng dụng Django mã nguồn mở; dùng Munin cho các metric toàn hệ thống; và dùng Pingdom cùng PagerDuty để giám sát dịch vụ bên ngoài

3 bình luận

 
botplaysdice 2023-09-19

Hồi đầu Instagram chỉ mang cảm giác như một ứng dụng filter ảnh kiểu màu mè thôi (nhất là thời còn cố chấp chỉ hỗ trợ iPhone). Vậy mà lại có thể thành công bùng nổ đến thế thì tôi hoàn toàn không tưởng tượng nổi. (Trí tưởng tượng của tôi chỉ đến mức đó thôi;;; )

 
princox 2023-09-18

Tôi nhớ là khi so sánh các sản phẩm từng có exit, Instagram nổi bật với mức giá trị exit trên mỗi nhân sự rất cao. Tôi nghĩ có rất nhiều điều để học hỏi từ đó.

 
GN⁺ 2023-09-18
Ý kiến trên Hacker News
  • Bài viết về cách Instagram đạt được 14 triệu người dùng chỉ với ba kỹ sư
  • Tranh luận về nhận định cho rằng Instagram được viết bằng Objective-C và UIKit
  • Một số bình luận khen ngợi sự đơn giản trong tech stack của Instagram, cho rằng nhiều công ty có thể hưởng lợi từ cách tiếp cận tương tự
  • Một bình luận nhấn mạnh tầm quan trọng của việc chọn đúng thành viên trong nhóm: "Nếu chọn đúng người, bạn chỉ cần vài người. Nếu không, bạn sẽ cần tất cả mọi người."
  • Sự tò mò về cách Instagram cập nhật feed ngay lập tức cho hàng triệu người dùng, được xem là bài toán còn thách thức hơn việc mở rộng đọc trong hệ thống phân tán
  • Suy đoán về mức độ Instagram có thể mở rộng với công nghệ hiện đại, xét đến Django, Postgres, Redis và những tiến bộ về tốc độ phần cứng
  • Bài viết khơi lại thảo luận về quy mô đội ngũ kỹ thuật, khi một số người thấy khó hiểu vì sao vài tổ chức với ứng dụng CRUD cơ bản lại cần đến hàng nghìn kỹ sư
  • Cảm hứng từ một số độc giả bày tỏ mong muốn tự xây dựng phiên bản Instagram của riêng mình
  • Có ý kiến nhắc rằng trong những ngày đầu, Instagram chỉ có một frontend là ứng dụng iOS và ít tính năng hơn các nền tảng mạng xã hội hiện đại
  • Chia sẻ trải nghiệm nội bộ gần đây về việc phát triển ứng dụng Threads của Meta trên hạ tầng của Instagram, đồng thời nhấn mạnh thành công của ứng dụng và quy mô của đội ngũ liên quan