Snapchat เป็นที่รู้จักกันดีในหมู่วัยรุ่นและวัยรุ่น คุณน่าจะอายุมากกว่า 25 ปีถ้าคุณไม่รู้ว่ามันทำงานอย่างไร Snapchat หนึ่งในแอปพลิเคชั่นโซเชียลมีเดียยอดนิยมมอบสิ่งที่พวกเขาต้องการแก่เด็กและวัยรุ่น: วิธีง่ายๆ ในการแบ่งปันเหตุการณ์ปกติในขณะที่ทำให้พวกเขาดูเท่
ต่างจาก Facebook และ Twitter ที่บันทึกและเผยแพร่ทุกสิ่งที่คุณทำ Snapchat ใช้ข้อความที่ควรจะหายไป
มีจำนวนมากเกี่ยวกับ Snapchat และหากคุณเป็นนักพัฒนาก็จะยิ่งมากขึ้น ดังนั้น โพสต์นี้จะทำให้คุณเห็นมุมมองระดับสูงของ Snapchat การออกแบบระบบ และข้อมูลเชิงลึกอื่น ๆ อีกมากมาย
บทนำ
Snapchat เป็นเครือข่ายในสหรัฐอเมริกา เครือข่ายทางสังคม แอพที่ให้ผู้ใช้เชื่อมต่อได้ทันที แชร์รูปภาพ และอื่นๆ
- ข้อความและรูปภาพ (หรือสแน็ปช็อต) มีการจำกัดเวลา 24 ชั่วโมง กระตุ้นให้ผู้คนแบ่งปันเรื่องราวของพวกเขาในกลุ่ม
- Snap Map ช่วยให้ผู้ใช้สามารถดูแผนที่ว่าเพื่อนของพวกเขาอยู่ที่ไหน
- ความทรงจำเตือนผู้ใช้ถึงรูปภาพที่บันทึกหรือแชร์ในอีกหนึ่งปีต่อมา
- Snapchat เป็นที่นิยมอย่างมากในหมู่คนรุ่นใหม่ โดยเฉพาะวัยรุ่น มีผู้ใช้งานอยู่ 319 ล้านคนบนแอพ และส่งสแนป 5.4 พันล้านครั้งทุกวัน
ข้อกำหนดการออกแบบที่สำคัญ
สถาปัตยกรรมเสาหิน – แอปพลิเคชันแบบชั้นเดียวที่ทำงานโดยอิสระจากแอปพลิเคชันอื่นเรียกว่าเสาหิน (สถาปัตยกรรมเสาหิน) เสาหินถูกออกแบบมาเพื่อดำเนินการและจัดการกิจกรรมทั้งหมดที่จำเป็นเพื่อให้งานเสร็จสมบูรณ์ แอปพลิเคชั่นทำหน้าที่ทั้งหมดตั้งแต่ต้นจนจบ
Microservices - มีขั้วตรงข้ามกับเสาหิน Microservices เป็นแนวทางสถาปัตยกรรมที่จัดแอปพลิเคชันเป็นชุดของบริการ บริการเหล่านี้ใช้เพื่อควบคุมแอปพลิเคชันหลายๆ ด้าน ลูกค้าสั่งอาหาร บริกรรับไปส่ง และเชฟเป็นคนจัดเตรียม ในตัวอย่างนี้ แต่ละองค์ประกอบทำงานอย่างอิสระและแยกจากองค์ประกอบอื่นๆ ไม่มีใครรู้ว่าคนอื่นกำลังทำอะไรอยู่ และไม่มีใครเข้าถึงข้อมูลเดียวกันได้
JSON: เป็นรูปแบบข้อความที่ใช้แสดงออบเจ็กต์ JavaScript, ลิเทอรัล, อาร์เรย์ และข้อมูลได้ รูปแบบข้อความนี้มีจุดมุ่งหมายเพื่อให้ง่ายต่อการอ่านและเขียน รวมทั้งซอฟต์แวร์สามารถย่อยได้ โดยทั่วไปแล้ว JSON จะใช้ในการถ่ายโอนข้อมูลและข้อมูลระหว่างเซิร์ฟเวอร์และแอปพลิเคชันออนไลน์
orchestration: เทคนิคการทำงานอัตโนมัติหลายอย่างเรียกว่าการประสานกัน งานเหล่านี้รวมถึงระบบคอมพิวเตอร์และการกำหนดค่าซอฟต์แวร์ การประสานงาน และการดูแลระบบ
หนังสือมอบฉันทะ: พร็อกซีทำหน้าที่เป็นตัวเชื่อมระหว่างไคลเอนต์ที่กำลังมองหาทรัพยากรและเซิร์ฟเวอร์ที่จัดเตรียมไว้
ตาข่าย: บริการเมชเป็นรูปแบบสถาปัตยกรรมซอฟต์แวร์ที่เพิ่มเลเยอร์ให้กับเลเยอร์โครงสร้างพื้นฐานเพื่อให้สามารถสื่อสารระหว่างบริการต่างๆ ผ่านพรอกซีที่มีการควบคุม สังเกตได้ และปลอดภัย
การออกแบบระดับสูง
ปัญหาเสาหิน
Snapchat มีต้นกำเนิดมาจากเสาหินบนคลาวด์โดยอิงจาก Google App Engine อย่างไรก็ตาม เนื่องจากโปรแกรมได้รับความนิยมเพิ่มขึ้นและมีผู้ใช้และข้อมูลเพิ่มมากขึ้น ความสามารถในการปรับขนาดจึงกลายเป็นปัญหา
นอกจากนี้ ด้วยรัศมีการระเบิดขนาดใหญ่ภายในเสาหิน การรบกวนทั่วทั้งระบบจึงเป็นไปได้มากขึ้น ปัญหาหนึ่งของ Snapchat ถูกกำหนดให้เป็น "โศกนาฏกรรมของส่วนรวม" ซึ่งคุณลักษณะที่แข่งขันกันเพื่อเข้าถึงทรัพยากร มีการโหลดฟีเจอร์ต่างๆ ในเวลาเปิดแอป ทำให้ฟีเจอร์บางอย่างโหลดเร็วขึ้น แต่ฟีเจอร์อื่นๆ โหลดช้าลง
วิศวกรยังต้องการการมองเห็นที่ชัดเจน การแยกส่วน และการเป็นเจ้าของส่วนประกอบจากจุดยืนของการพัฒนา เพื่อให้บริการมีความยืดหยุ่นและมีประสิทธิภาพ
การแปลง
เมื่อ Snapchat ขยายตัว บริษัทตระหนักว่าจำเป็นต้องแยกโครงสร้างพื้นฐานแบบเสาหินออกเป็นชิ้นเล็กลงและมีประสิทธิภาพมากขึ้น เพื่อให้มีเวลาแฝงลดลง องค์กรจึงตัดสินใจพัฒนาการออกแบบตามไมโครเซอร์วิส
เพื่อบรรลุเป้าหมายเหล่านั้น Snapchat เลือกที่จะอัปเดตซอฟต์แวร์โดยใช้ Amazon DynamoDB ซึ่งเป็นบริการฐานข้อมูล NoSQL ที่ปรับขนาดได้ บริษัทสามารถลดเวลาแฝงมัธยฐานลง 20% อันเป็นผลมาจากความพยายาม
แอพถูกเขียนใหม่เป็นแอพพลิเคชั่นขนาดเล็กจำนวนมากโดยบริษัท Snapchat เริ่มต้นด้วยแอปพลิเคชั่นมากมาย รวมถึงกล้อง แชท ความทรงจำ การแก้ไขภาพ การใช้เนื้อหา และแผนที่ แม้ว่าการรวมโปรแกรมเหล่านี้ไว้ในเสาหินก้อนเดียวจะสะดวกสำหรับผู้บริโภค แต่ก็ทำให้เกิดปัญหาทางเทคนิคที่รุนแรงในแง่ของการรักษาประสิทธิภาพที่ดี
สำหรับการเขียนใหม่ บริษัทได้กำหนดกฎพื้นฐานหลายประการ อย่าโหลดล่วงหน้า แต่ละฟีเจอร์ควรเป็นแอปของตัวเองและควรรวดเร็ว Snapchat หยุดการแก้ไขในหลายจุดเพื่อให้สามารถเขียนใหม่ได้ ทำให้เป็นงานด้านเทคนิคอย่างเคร่งครัด
การรวมคุณสมบัติเพิ่มเติม
แอพกล้องของ Snapchat มีเลนส์ ฟิลเตอร์ bitmojis และความสามารถในการเพิ่มแอนิเมชั่นความเป็นจริงเสริม เหนือสิ่งอื่นใด แอปแชทของ Snapchat ยังให้ผู้ใช้เก็บรูปภาพ บันทึกการสนทนา เพิ่มอีโมติคอน และอื่นๆ
แผนที่ของ Snapchat ช่วยให้คุณติดตามดูเพื่อน ๆ ได้หากพวกเขาต้องการให้คุณทำ ความทรงจำ การแก้ไขรูปภาพ และการใช้เนื้อหาล้วนเป็นแอป Snapchat ที่แยกจากกันโดยมีความสามารถเฉพาะตัว
ความทรงจำช่วยให้คุณจัดเก็บหรือแก้ไขภาพถ่ายหรือวิดีโอเพื่อใช้ในภายหลัง รวมทั้งอัปโหลดหรือส่ง ผู้ใช้ยังสามารถใช้การแก้ไขภาพเพื่อตัดภาพยนตร์ เพิ่มข้อความ เพิ่มสติกเกอร์ และอื่นๆ
ปริมาณการใช้เนื้อหาภายนอกของ Snapchat หมายถึงสิ่งที่แสดงให้ผู้ใช้เห็นตามช่วงของพารามิเตอร์
Microservices
โปรแกรมพึ่งพา JSON อย่างมากในการดำเนินการค้นหาเครือข่ายในขณะนั้น อย่างไรก็ตาม การแยกวิเคราะห์ JSON ใช้เวลานานและไม่มีประสิทธิภาพ Snapchat ใช้ API การจัดการเครือข่ายแบบรวมศูนย์เพื่อปกปิดการใช้ JSON เป็นรายละเอียดการใช้งานเพื่อแก้ไขปัญหานี้
Microservices นำเสนอความท้าทายของการจัดการสถานะแอปพลิเคชัน การสื่อสารบริการ และการจัดการความล้มเหลว Snapchat ใช้เทคโนโลยีโอเพ่นซอร์สเช่น Temporal เพื่อเอาชนะปัญหาในการประสานเพื่อสร้างระบบที่แข็งแกร่งและเชื่อถือได้
เป็นผลให้องค์กรตัดสินใจใช้รูปแบบการออกแบบตาข่ายบริการ Snapchat ใช้ Envoy ซึ่งเป็นเครื่องมือโอเพนซอร์ซอื่นที่ทำหน้าที่เป็นพร็อกซี เพื่อให้บรรลุรูปแบบนี้ Envoy จัดการการไหลของการรับส่งข้อมูลบริการผ่านโครงสร้างพื้นฐาน ทำให้นักพัฒนามองเห็นปัญหาที่อาจเกิดขึ้น
Snapchat ได้สร้างแอพภายในที่เรียกว่า Switchboard ภายในตาข่ายบริการ สวิตช์บอร์ดทำหน้าที่เป็นแผงควบคุมสำหรับบริการของ Snap ทำให้ผู้ใช้สามารถเปลี่ยนการรับส่งข้อมูล จัดการการขึ้นต่อกันของบริการ (คุณสมบัติที่ช่วยให้สามารถจัดการบริการหนึ่งโดยขึ้นอยู่กับเงื่อนไขของผู้อื่น) และพื้นที่ระบาย
เพื่อลดความซับซ้อนของการกำหนดค่าที่อาจเกิดขึ้นภายในบริการต่างๆ ให้ใช้สวิตช์บอร์ดแทนการเปิดเผย Envoy API ทั้งหมด Snap มีเครือข่ายภายในและระดับภูมิภาคร่วมกันสำหรับไมโครเซอร์วิสด้วยตาข่ายบริการ
บริการภายในภูมิภาคเดียวกันสามารถเชื่อมต่อกันได้โดยไม่ต้องใช้อินเทอร์เน็ตสาธารณะ และไม่มีการรับส่งข้อมูลเครือข่ายภายนอกใด ๆ ที่สามารถสื่อสารกับส่วนต่าง ๆ ของเครือข่ายภายในได้
เฉพาะเกตเวย์เท่านั้นที่ได้รับอนุญาตให้เปิดเผยตนเองต่ออินเทอร์เน็ตด้วยเหตุผลด้านความปลอดภัย ตัวอย่างเช่น เกตเวย์ API อาจทำหน้าที่เป็นประตูหน้า ประมวลผลคำขอจากลูกค้า/ผู้ใช้ และกำหนดเส้นทางตามเครือข่าย
เครือข่ายและเกตเวย์ API
ข้อความค้นหาทั้งหมดจากไคลเอนต์ Snapchat มาจาก API Gateway ใช้อิมเมจ Envoy เดียวกันและเชื่อมต่อกับ Control Plane เดียวกันกับไมโครเซอร์วิสภายในของเรา Control Plane ของเราช่วยให้เราสามารถเปิดใช้งานตัวกรอง Envoy แบบกำหนดเองได้
ระบบการตรวจสอบสิทธิ์ของ Snapchat รวมถึงการจำกัดอัตราและเทคโนโลยีการกำจัดโหลดของเรา ได้รับการจัดการโดยตัวกรองเหล่านี้ Envoy ใช้ Service Mesh เพื่อกำหนดเส้นทางคำขอไปยังไมโครเซอร์วิสที่เกี่ยวข้องหลังจากห่วงโซ่การกรองเสร็จสมบูรณ์
สรุป
เกตเวย์ API ของ Snapchat กำหนดเส้นทางการรับส่งข้อมูลภายนอกไปยังฟังก์ชันต่างๆ ของแอป คำขอของผู้ใช้ในการแก้ไขสถานะการกำหนดค่าได้รับการจัดการโดยเซิร์ฟเวอร์ ซึ่งจากนั้น ให้ข้อมูล และข้อมูลย้อนกลับไปยังบริการต่างๆ มากมายของแอป
โดยรวมแล้ว การออกแบบปัจจุบันของ Snapchat อาจเปรียบเทียบได้กับหลายโปรแกรมที่ทำงานบนระบบปฏิบัติการเดียว ซึ่งในกรณีนี้คือแอป Snapchat ฉันพยายามอย่างมากที่จะให้ภาพรวมระดับสูงของการออกแบบระบบ Snapchat แก่คุณ ฉันหวังว่าคุณจะพบว่ามีประโยชน์
เขียนความเห็น