צינור עיבוד וידאו ללא שרת עם AWS MediaConvert
פלטפורמת הווידאו נדרשה לדרך ניתנת להרחבה וחסכונית לטיפול בעומסי עבודה משתנים של קידוד, מתקופות שקטות עם מעט העלאות ועד לתקופות שיא עם מאות משימות בו-זמניות.
דון בפרויקט שלך
האתגר
תשתית קידוד בעלת קיבולת קבועה הייתה או בעלת הקצאת יתר (יקרה) או בעלת הקצאת חסר (איטית):
- עומסי עבודה של קידוד היו משתנים מאוד ובלתי צפויים
- תקופות שיא יכלו לראות נפח של פי 100 מהרגיל בזמן השקות תוכן
- הפעלת שרתי קידוד ייעודיים 24/7 הייתה יקרה בתקופות שקטות
- כשלים במשימות דרשו זיהוי אוטומטי וניסיון חוזר ללא התערבות ידנית
הפתרון שלנו
יישמנו צינור קידוד ללא שרת באמצעות טריגרים של AWS Lambda ו-AWS MediaConvert לעיבוד וידאו גמיש ובתשלום לפי שימוש.
ארכיטקטורה
- טריגר: פונקציית AWS Lambda המנטרת אירועי העלאה ל-S3
- קידוד: AWS MediaConvert עם תבניות משימה ספציפיות לשותפים
- הודעות: ActiveMQ/STOMP לעדכוני סטטוס משימה אסינכרוניים
- ניטור: NestJS encoder backend העוקב אחר התקדמות המשימה
- אחסון: AWS S3 עבור נכסי קלט/פלט
זרימת הצינור
- אירוע S3 - העלאת וידאו מפעילה פונקציית Lambda
- תצורת משימה - Lambda קוראת פרופיל שותף ובונה משימת MediaConvert
- הגשה - משימת MediaConvert מוגשת עם הגדרות פלט מתאימות
- מעקב התקדמות - הודעות STOMP מעבירות סטטוס ל-encoder backend
- השלמה - נכסי פלט נשמרים ב-S3, מטאדאטה מתעדכנת ב-MongoDB
- טיפול בשגיאות - משימות כושלות נכנסות לתור לניסיון חוזר עם exponential backoff
תכונות מפתח
- עלות סרק אפסית - Lambda ו-MediaConvert גובות תשלום רק עבור שימוש בפועל
- הרחבה גמישה - מטפל ב-1 עד 1000+ משימות קידוד בו-זמניות
- תבניות שותפים - תבניות משימת MediaConvert מוגדרות מראש לכל שותף
- מונע אירועים - אירועי S3 מפעילים באופן אוטומטי זרימות עבודה של קידוד
- ניטור מקיף - מעקב אחר סטטוס משימה, משך וטעויות
תוצאות
מחסנית טכנולוגית
caseStudyDetail.more מקרי בוחן
גלה עוד מהיישומים הטכניים שלנו
הזרקת פרסומות בצד הלקוח (CSAI) עם ניתוח סמני SCTE-35 ושילוב נגן מרובה פלטפורמות
פלטפורמת הזרמת וידאו נזקקה ליישם הזרקת פרסומות בצד הלקוח (CSAI) על פני יישומי אינטרנט, מובייל וטלוויזיות חכמות — המאפשרת חוויות פרסום מותאמות אישית ברמת המכשיר עם תמיכה מלאה באינטראקציה עם פרסומות (שכבות-על ניתנות ללחיצה, באנרים נלווים, כפתורי דילוג) שאותן הזרקה בצד השרת אינה יכולה לספק.
צינור איתות לסמני פרסומות SCTE-35 והכנסת טריילרים למדיה
חברת מדיה סטרימינג נזקקה לצינור עבודה אוטומטי ויציב להזרקת סמני פרסומות SCTE-35 לזרמי שידור חי ו-VOD, יחד עם היכולת להכניס טריילרים פרסומיים (pre-roll, mid-roll, ו-post-roll) במיקומים מדויקים בזמן — מה שמאפשר מונטיזציה בערוצי FAST, אירועים חיים, וספריות תוכן לפי דרישה.
שאלות נפוצות
MicrocosmWorks תכננה ארכיטקטורת עיבוד מקוטע שבה Step Functions מתזמנות את הצינור: פונקציות Lambda מפצלות סרטוני מקור לקטעים, AWS MediaConvert מטפל בהמרת הקידוד בפועל ללא אילוצי פסק זמן של Lambda, ופונקציית Lambda סופית מחברת את הפלט. גישה היברידית זו שומרת על מודל העלות הסרברלס תוך תמיכה בסרטונים מכל משך.
MicrocosmWorks מדדה הפחתה של 70-85% בעלויות עבור עומסי עבודה מתפרצים של עיבוד וידאו בהשוואה להפעלת מופעי קידוד ייעודיים של EC2. צינור הנתונים ה-serverless אינו כרוך בעלות כלל כשהוא במצב סרק ומתרחב למאות משימות מקבילות בתקופות שיא, כאשר התמחור לפי דקה של AWS MediaConvert מבטל את הצורך להקצות משאבים עבור קיבולת שיא.
MicrocosmWorks הגדירה את AWS Step Functions עם מדיניות ניסיונות חוזרים לכל שלב ו-exponential backoff, המבטיחה כי שלב transcode שנכשל מנסה שוב באופן אוטומטי מבלי להפעיל מחדש את כל ה-pipeline. כל שלב כותב פלטי ביניים ל-S3, כך שהשחזור ממשיך מנקודת ה-checkpoint המוצלחת האחרונה במקום עיבוד מחדש מקובץ המקור.
MicrocosmWorks ביצעה אופטימיזציה ל-pipeline עבור מקרי שימוש קרובים לזמן אמת, עם הפחתת cold start באמצעות provisioned concurrency בפונקציות Lambda קריטיות ו-MediaConvert reserved transcoding slots. עבור זרימות עבודה חיות, ה-pipeline משיג זמן אחזור מקצה לקצה של 2-5 דקות מהעלאה ועד למסירה, מה שמתאים לחילוץ קליפים והפצת קטעי שיא.
MicrocosmWorks בונה תשתית וידאו serverless בתעריפים של 25-45$ לשעה, עם צינור עיבוד מבוסס MediaConvert מלא הכולל אורקסטרציה באמצעות Step Functions, ניהול מחזור חיים של S3 וניטור שבדרך כלל דורש 250-400 שעות פיתוח. מודל התשלום לפי שימוש של הארכיטקטורה משמעו שלקוחות משלמים על עלויות AWS בלבד ביחס ישר לנפח העיבוד בפועל שלהם.
מוכן לשנות את העסק שלך?
בואו נדון כיצד נוכל ליישם פתרונות דומים לאתגרים שלך.