- ตั้งแต่ 2010/10 ถึง 2011/11 ใช้เวลาประมาณ 1 ปีในการเติบโตจากผู้ใช้ 0 คนเป็น 14 ล้านคน โดยมีวิศวกรเพียง 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 และ NGINX 3 อินสแตนซ์เพื่อทำ load balancing
- แบ็กเอนด์
- แอปพลิเคชันเซิร์ฟเวอร์พัฒนาด้วย Python โดยใช้ Django และ WSGI server อย่าง Gunicorn
- ใช้ Fabric เพื่อรันคำสั่งเดียวกันพร้อมกันบนหลายอินสแตนซ์ ทำให้ deploy โค้ดได้ภายในไม่กี่วินาที
- รันเครื่อง CPU ประสิทธิภาพสูงขนาด Extra-Large จำนวน 25 เครื่อง ทั้งหมดเป็นแบบ stateless จึงเพิ่มได้ง่ายเมื่อจำเป็น
- ที่เก็บข้อมูลทั่วไป
- มี photo ID ที่เกี่ยวข้อง รูปภาพจริงของ ID นั้น และข้อมูลผู้ใช้เกี่ยวกับรูปภาพ
- แอปพลิเคชันเซิร์ฟเวอร์ดึงข้อมูลจาก PostgreSQL
- ใช้ pgbouncer สำหรับทำ pooling ระหว่าง Django และ PostgreSQL
- Instagram ใช้ ID ที่สามารถเรียงตามเวลาได้: 41 บิตมิลลิวินาที + 13 บิต shard ID + 10 บิตลำดับเพิ่มอัตโนมัติ
- ที่เก็บรูปภาพ: S3 และ Cloudfront
- การแคช: Redis และ Memcached
- เก็บการแมปคีย์ 300 ล้านรายการในพื้นที่ไม่ถึง 5GB ด้วยการแฮชอย่างชาญฉลาด
- และอีก 2 ปีต่อมา Facebook ก็เผยแพร่งานวิจัยเกี่ยวกับวิธีสเกล Memcached เพื่อรองรับคำขอหลายพันล้านครั้งต่อวินาที
- ทั้ง Postgres และ Redis ทำงานในโหมด Master-Replica และสำรองข้อมูลต่อเนื่องด้วย Amazon EBS snapshot
- Push Notification และ Async Task: ใช้ pyapns สำหรับการแจ้งเตือน และ Gearman เป็น task queue
- ใช้ Sentry ซึ่งเป็นโอเพนซอร์ส Django app เพื่อติดตามข้อผิดพลาดแบบเรียลไทม์, ใช้ Munin สำหรับเมตริกระดับระบบทั้งหมด, และใช้ Pingdom กับ PagerDuty สำหรับมอนิเตอร์บริการภายนอก
3 ความคิดเห็น
ช่วงแรกๆ ของ Instagram (ตอนที่ดื้อดึงรองรับแค่ iPhone เท่านั้น) ให้ความรู้สึกเหมือนเป็นแอปฟิลเตอร์ภาพเก๋ๆ แอปหนึ่งเท่านั้นเองนะครับ แต่ไม่เคยคิดเลยว่าจะประสบความสำเร็จถล่มทลายได้ขนาดนี้ (จินตนาการของผมมีได้แค่นั้นจริงๆ ;;;)
ในบรรดาการเปรียบเทียบผลิตภัณฑ์ที่เคยมีประสบการณ์จนถึง Exit ผมจำได้ว่า Instagram อยู่ในสถานะที่มูลค่าเอ็กซิตต่อคนค่อนข้างสูงมาก คิดว่ามีหลายอย่างที่น่าเรียนรู้ครับ
ความคิดเห็นจาก Hacker News