Skip to content

Instagram ย้ายโค้ดมา Python 3

Instagram บริการแชร์รูปภาพยอดนิยมของคนทั่วโลก มียอดการใช้งาน 400 ล้านคนต่อวัน โดยใช้ Django เป็น application server ซึ่งขับเคลื่อนบนภาษา Python เป็นเรื่องที่น่าทึ่งที่ Instagram สามารถรองรับโหลดปริมาณมหาศาลจากผู้ใช้ทั่วโลกได้ จึงทำให้ Instagram กลายเป็นหนึ่งในผู้ใช้งาน Python ที่ใหญ่ที่สุดในโลก


แต่เมื่อไม่นานมานี้ ทางวิศวกร Instagram ได้เปิดเผยกับทาง  The New Stack ว่าได้ทำการย้ายไปใช้งาน Python 3 แล้วโดยที่ไม่หยุดการให้บริการแก่ผู้ใช้เลย

เราจึงสรุปบทความที่น่าสนใจนี้มาให้อ่านกัน

อย่างที่เรารู้กัน Instagram ใช้ Django เป็น application server นับตั้งแต่เปิดให้บริการและยังคงใช้งานมาถึงทุกวันนี้ สาเหตุที่วิศวกร Instagram เลือก Python เพราะมันใช้งานง่ายกับวิศวกร ทำให้ได้ความเร็วและออกผลิตภัณฑ์ Python เป็นเรื่องง่าย โค้ดสะอาด และเป็นประโยชน์ในทางปฏิบัติ เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้ว

เหตุจูงใจในการย้ายจาก Python 2.7 ไป Python 3.5 ของ Instagram มีดังนี้

  1. Python ไม่ได้รองรับ typed language มาตั้งแต่แรก จึงทำให้เกิดปัญหาในการพัฒนาจำนวนมากเมื่อเริ่มต้นสร้างโค้ดใหม่ ๆ แต่ Python 3.5 สนับสนุน typing
  2. ระบบเครือข่ายเป็นคอขวดสำหรับทีมวิศวกรมากขึ้น
  3. ถึงแม้ Python จะไม่ได้เร็ว แต่รุ่นใหม่กว่ามีความเร็วที่เร็วขึ้น แต่ Python 2.7 ไม่มีใครทำให้มันเร็วขึ้น

กระบวนการผลักดันย้ายมาใช้งาน Python 3 ใช้เวลาประมาณ 10 เดือน โดยมีขั้นตอนดังนี้

  • ขั้นตอนแรก ทีมงานได้แก้ไขโค้ดจำนวนมาก ใช้เวลา 2 - 3 เดือน
  • ขั้นตอนที่สอง เปลี่ยนแพคเกจของบุคคลที่สาม (third-party packages) ที่เข้ากันไม่ได้กับ Python 3 โดยมีกฎในการทำงานคือ “No Python 3, no new package”  และลบแพคเกจที่ไม่ได้ใช้งานออก ใช้เวลาประมาณ 3 - 4 เดือน
  • ขั้นตอนที่สาม ทำการทดสอบแต่ละหน่วย (unit testing) ใช้เวลา 2 เดือน
  • ขั้นตอนที่สี่ ออกผลิตภัณฑ์ใหม่ (Production rollout) ใช้เวลา 4 เดือน

และในเดือนกุมภาพันธ์ ค.ศ.2017 ที่ผ่านมา Instagram ได้ใช้ Python 3 อย่างสมบูรณ์

หลังจากที่ทีมวิศวกร Instagram ได้ย้ายมา Python 3 พบว่าสามารถประหยัด CPU ได้ 12 เปอร์เซ็นต์ (ใน uswgi / Django) และประหยัดหน่วยความจำได้ 30 เปอร์เซ็นต์ (ใน celery)

รายละเอียดแบบเต็มๆ อ่านได้จาก Instagram Makes a Smooth Move to Python 3
ซึ่งมีรายละเอียดที่น่าสนใจ เช่น ประเด็นที่การเติบโตเซิร์ฟเวอร์ที่มากกว่าการเติบโตของผู้ใช้งาน และกระบวนการ reports ที่ทุกอย่างเป็นไปอย่างราบรื่น

อ่านเพิ่มเติม สถาปัตยกรรมเบื้องหลัง Instagram (ปี ค.ศ.2012)

2 thoughts on “Instagram ย้ายโค้ดมา Python 3

  1. wannaphong

    หากมีส่วนไหนที่แปลผิด สามารถแจ้งได้ที่ช่องความคิดเห็นในหน้าบล็อกนี้ครับ
    ขอบคุณครับ

    Reply
  2. wannaphong

    แก้ไข ลบแคชหน้าเว็บทิ้ง เนื่องจากมีการแก้ไขหน่วยปีแต่แคชไม่อัพเดรต

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *