תוכן העניינים[להתחבא][הופעה]
Snapchat ידוע בקרב טווינים ובני נוער. אתה כנראה מעל 25 אם אתה לא יכול להבין איך זה עובד. Snapchat, אחת מיישומי המדיה החברתית הפופולריים ביותר, מספקת לילדים ולמתבגרים בדיוק את מה שהם רוצים: שיטה קלה לשתף התרחשויות רגילות ובמקביל לגרום להם להיראות מגניבים.
בניגוד לפייסבוק וטוויטר, שמתעדות ומפרסמות את כל מה שאתה עושה, סנאפצ'ט משתמשת בהודעות שאמורות להיעלם (ראו איך הן לא עושות).
יש הרבה על Snapchat, ואם אתה מפתח זה אפילו יותר. אז, פוסט זה ייתן לך תצוגה ברמה גבוהה של Snapchat עיצוב מערכת ועוד הרבה תובנות.
מבוא
Snapchat מבוססת בארה"ב רשתות חברתיות אפליקציה המאפשרת למשתמשים להתחבר באופן מיידי, לשתף תמונות ועוד.
- להודעות ולתמונות (או תמונות) יש מגבלת זמן של 24 שעות. מעודד אנשים לשתף את הסיפורים שלהם בקבוצות.
- Snap Map מאפשר למשתמשים לראות על מפה היכן החברים שלהם נמצאים.
- זיכרונות מזכירים למשתמשים תמונות שהם שמרו או שיתפו שנה לאחר מכן.
- Snapchat פופולרי מאוד בקרב דורות צעירים, במיוחד בני נוער. יש 319 מיליון משתמשים פעילים באפליקציה, ו-5.4 מיליארד תמונות נשלחות מדי יום.
תנאי עיצוב חשובים
אדריכלות מונוליטית – אפליקציה חד-שכבתית הפועלת ללא תלות באפליקציות אחרות מכונה מונוליט (ארכיטקטורה מונוליטית). מונוליט נועד לבצע ולטפל בכל הפעילויות הנדרשות להשלמת משימה. האפליקציה מבצעת את כל הפונקציות מההתחלה ועד הסוף.
מיקרוסקופים - זה הפוך ממונוליטים. מיקרוסקופים היא גישה אדריכלית המארגנת אפליקציה כאוסף של שירותים. שירותים אלה משמשים לשליטה בהיבטים רבים של יישום. לקוח מבצע הזמנה, מלצר לוקח אותה ומספק אותה, ושף מכין אותה. בדוגמה זו, כל רכיב מתפקד באופן עצמאי ונפרד מהאחרים; אף אחד לא יודע בדיוק מה האחרים עושים, ולאף אחד אין גישה לאותו מידע.
JSON: זהו פורמט מבוסס טקסט שניתן להשתמש בו להצגת אובייקטי JavaScript, מילוליות, מערכים ונתונים. פורמט מבוסס טקסט זה נועד להיות פשוט לקריאה ולכתיבה, כמו גם לעיכול על ידי תוכנה. JSON משמש בדרך כלל להעברת נתונים ומידע בין שרתים ויישומים מקוונים.
תזמורת: הטכניקה של אוטומציה של פעולות רבות ידועה בתור תזמור. משרות אלו כוללות תצורת מערכות מחשב ותוכנה, תיאום וניהול.
פרוקסי: פרוקסי פועל כאמצעי בין לקוח שמחפש משאב לבין השרת שמספק אותו.
רֶשֶׁת: רשת שירות היא דפוס ארכיטקטורת תוכנה המוסיפה שכבה לשכבת תשתית כדי לאפשר תקשורת מווסתת, ניתנת לצפייה ומאובטחת בין שירותים באמצעות פרוקסי.
עיצוב ברמה גבוהה
בעיות מונוליטיות
מקור Snapchat כמונוליט מבוסס ענן המבוסס על Google App Engine. עם זאת, ככל שהתוכנית גדלה בפופולריות וצברה יותר משתמשים ונתונים, המדרגיות הפכה לבעיה.
בנוסף, עם רדיוס פיצוץ עצום בתוך המונוליט, הפרעות כלל מערכתיות היו אפשריות יותר. אחת הבעיות של Snapchat הוגדרה כ"טרגדיה של נחלת הכלל", שבה תכונות התחרו על גישה למשאבים; תכונות נטענו בזמן השקת האפליקציה, מה שמאפשר לתכונות מסוימות להיטען מהר יותר אך האחרות להיטען לאט יותר.
מהנדסים חיפשו גם נראות ברורה, הפרדה ובעלות על הרכיבים שלהם מנקודת מבט של פיתוח, כדי שהשירות יוכל להיות גמיש ויעיל.
טרנספורמציה
עם התרחבות Snapchat, החברה הבינה שהיא צריכה לפרק את התשתית המונוליטית שלה לחתיכות קטנות ויעילות יותר. על מנת לספק זמן חביון מופחת, הארגון החליט לפתח עיצוב מבוסס מיקרו-שירותים.
כדי להגשים את המטרות הללו, Snapchat בחרה לעדכן את התוכנה שלה באמצעות Amazon DynamoDB, שירות מסד נתונים NoSQL ניתן להרחבה. החברה הצליחה להפחית את זמן האחזור החציוני ב-20% כתוצאה מהמאמצים שלה.
האפליקציה נכתבה מחדש למספר יישומים קטנים יותר על ידי התאגיד. Snapchat התחיל עם יישומים רבים, כולל מצלמה, צ'אט, זיכרונות, עריכת תמונות, צריכת תוכן ומפה. למרות ששילוב תוכניות אלה במונוליט אחד היה נוח לצרכנים, זה הציב בעיה טכנית חמורה במונחים של שמירה על ביצועים טובים.
לשם שכתוב, התאגיד קבע חוקי יסוד רבים. אל תטען מראש; כל תכונה צריכה להיות אפליקציה משלה, והיא צריכה להיות מהירה. Snapchat עצרה שינויים במספר מקומות כדי לאפשר את השכתוב, מה שהפך אותה למשימה טכנית לחלוטין.
שילוב תכונות נוספות
באפליקציית המצלמה של Snapchat יש עדשות, פילטרים, bitmojis ויכולת להוסיף בין היתר אנימציות של מציאות מוגברת. אפליקציית הצ'אט של Snapchat מאפשרת למשתמשים גם לאחסן תמונות, לשמור שיחות, להוסיף סמלי סמלי ועוד.
המפה של Snapchat, בין היתר, מאפשרת לך לעקוב אחר חברים אם הם רוצים. זיכרונות, עריכת תמונות וצריכת תוכן הם כולם אפליקציות Snapchat נפרדות עם היכולות הייחודיות שלהן.
זיכרונות מאפשרים לך לאחסן או לשנות תמונות או סרטונים לשימוש מאוחר יותר, כמו גם להעלות או לשלוח אותם. משתמשים יכולים גם להשתמש בעריכת תמונות כדי לחתוך סרטים, להוסיף טקסט, להוסיף מדבקות ועוד.
צריכת התוכן החיצונית של Snapchat מתייחסת למה שהיא מציגה למשתמשים בהתבסס על מגוון פרמטרים.
מיקרוסקופים
התוכנית הייתה תלויה במידה רבה ב-JSON לביצוע שאילתות רשת באותה עת. עם זאת, ניתוח JSON היה גוזל זמן ולא יעיל. Snapchat השתמשה ב-API לניהול רשת מרכזי כדי להסוות את השימוש ב-JSON כפרט יישום כדי להתמודד עם בעיה זו.
Microservices מציגים את האתגרים של ניהול מצב יישומים, תקשורת שירות וניהול כשלים. Snapchat השתמשה בטכנולוגיות קוד פתוח כמו Temporal כדי להתגבר על קשיי תזמור על מנת לבנות מערכת חזקה ואמינה.
כתוצאה מכך, הארגון החליט להשתמש בתבנית עיצוב רשת שירות. Snapchat השתמשה ב-Envoy, כלי נוסף בקוד פתוח שפועל כפרוקסי, כדי להשיג את הדפוס הזה. Envoy ניהלה את זרימת תעבורת השירות דרך התשתית, והעניקה למפתחים נראות לקשיים פוטנציאליים.
Snapchat יצרה אפליקציה פנימית בשם Switchboard בתוך רשת השירות. מרכזייה שימשה כלוח בקרה לשירותי Snap, המאפשרת למשתמשים להעביר תעבורה, לנהל תלות בשירות (תכונה המאפשרת ניהול שירות אחד בהתאם למצבם של אחרים), ולנקז אזורים.
כדי לפשט את המורכבות של תצורות פוטנציאליות בתוך השירותים, נעשה שימוש ב-Switchboard במקום לחשוף את כל ה-API של Envoy. ל-Snap יש רשת פנימית ואזורית משותפת לשירותי המיקרו שלה הודות לרשת השירות.
שירותים בתוך אותו אזור יכולים להתחבר אחד עם השני ללא שימוש באינטרנט הציבורי, ושום תעבורת רשת חיצונית לא יכולה לתקשר עם חלקי רשת פנימיים.
רק השערים יהיו מורשים לחשוף את עצמם לאינטרנט מסיבות אבטחה. שערי ה-API, למשל, עשויים לשמש בקלות כדלתות כניסה, לעבד בקשות מלקוחות/משתמשים ולנתב אותן יחד עם הרשת.
שער רשת ו-API
כל השאילתות מלקוח Snapchat מגיעות דרך API Gateway. הוא משתמש באותה תמונת שליח ומתחבר לאותו מישור בקרה כמו שירותי המיקרו הפנימיים שלנו. מישור הבקרה שלנו מאפשר לנו להפעיל מסנני Envoy מותאמים אישית.
מערכות האימות של Snapchat, כמו גם טכנולוגיות הגבלת הקצב והפיכת העומס שלנו, מטופלות על ידי מסננים אלו. Envoy משתמש ב-Service Mesh כדי לנתב בקשות למיקרו-שירות הרלוונטי לאחר השלמת שרשרת הסינון.
סיכום
שער ה-API של Snapchat מנתב תעבורה חיצונית לפונקציות הרבות של האפליקציה. בקשות של משתמשים לשנות מצבי תצורה מנוהלות על ידי שרתים, אשר לאחר מכן לספק נתונים ומידע חזרה לשירותים הרבים של האפליקציה.
באופן כללי, ניתן להשוות את העיצוב הנוכחי של Snapchat למספר תוכניות הפועלות על מערכת הפעלה אחת, שבמקרה זה היא אפליקציית Snapchat. השתדלתי מאוד לספק לך סקירה ברמה גבוהה של עיצוב מערכת Snapchat. אני מקווה שמצאת את זה שימושי.
השאירו תגובה