یک پلتفرم، چند تجربه؛ از موبایل تا تلویزیون
این پروژه یک پلتفرم استریم فیلم و سریال چندپلتفرمی است که تجربه تماشا را روی وب، موبایل، تبلت و تلویزیون پوشش میدهد. مسئله فقط ساخت یک Player نبود؛ Backend، پردازش ویدیو، Storage، CDN، DRM، اپهای Native، PWA، پنل مدیریت، مانیتورینگ و استقرار باید بهعنوان یک زنجیره واحد طراحی میشدند.
خروجی معماری بهگونهای در نظر گرفته شده که هر کلاینت تجربه متناسب با دستگاه خودش را داشته باشد، اما منبع داده، کاتالوگ محتوا، وضعیت تماشا و قواعد سرویس در یک هسته مشترک مدیریت شوند.
Backend؛ هسته Go برای کاتالوگ، کاربر و جریانهای بلادرنگ
هسته Backend با Go طراحی شده و دادههای پایدار در PostgreSQL نگهداری میشوند. Redis برای Cache و دادههای پرتکرار در معماری حضور دارد و NATS یا Kafka برای جریانهای Event-driven و ارتباط غیرهمزمان بین سرویسها در نظر گرفته شده است.
این تفکیک کمک میکند عملیات سنگینی مانند پردازش ویدیو، اعلان تغییر وضعیت Job یا هماهنگی بین سرویسها از Request مستقیم کاربر جدا بمانند و هر بخش مستقلتر مقیاس بگیرد.
Video Processing؛ از فایل اصلی تا نسخههای آماده استریم
فایل ورودی مستقیماً برای پخش نهایی مصرف نمیشود. FFmpeg در Pipeline پردازش، مسئول Transcode و آمادهسازی خروجیهای مناسب برای دستگاهها و کیفیتهای مختلف است. خروجیها در قالبهای HLS و MPEG-DASH بستهبندی میشوند تا Player بتواند با توجه به کیفیت شبکه و توان دستگاه، نسخه مناسب را انتخاب کند.
فایلهای ویدیویی و Segmentها روی S3-Compatible Object Storage نگهداری میشوند و برای توزیع در مقیاس، مسیر تحویل محتوا از طریق Cloudflare CDN یا AWS CloudFront طراحی شده است.
Adaptive Streaming؛ کیفیتی که با شبکه کاربر تطبیق پیدا میکند
پخش Adaptive به این معناست که کاربر مجبور نیست از ابتدا یک کیفیت ثابت را انتخاب کند. Player میتواند براساس Bandwidth و شرایط لحظهای دستگاه بین Renditionهای مختلف جابهجا شود. در وب و PWA از Shaka Player، در Android و Android TV از Media3 / ExoPlayer و در اکوسیستم اپل از AVPlayer استفاده میشود.
این معماری، پایه تجربهای روانتر روی اینترنتهای متفاوت و صفحهنمایشهای مختلف است و وابستگی منطق اصلی پخش به یک Client واحد را کاهش میدهد.
DRM؛ Widevine برای Android و FairPlay برای Apple
برای محتوای محافظتشده، معماری DRM در سطح Client و Streaming دیده شده است. نسخههای Android و Android TV از Widevine و نسخه iOS / iPad از FairPlay استفاده میکنند. این لایه در کنار Tokenها، مجوز پخش و قواعد دسترسی محتوا قرار میگیرد.
هدف از این طراحی، جداکردن امنیت محتوای ویدیویی از رابط کاربری و جلوگیری از وابستگی به رفتار یک Player خاص است.
Android و Android TV؛ دو تجربه Native با یک هسته فنی مشترک
اپ Android با Kotlin + Jetpack Compose و پخش ویدیو با Media3 / ExoPlayer طراحی شده است. نسخه Android TV نیز با Kotlin + Compose for TV توسعه مییابد تا Focus navigation، کنترل از راه دور و الگوی استفاده در فاصله دور از نمایشگر بهصورت Native مدیریت شوند.
Widevine در هر دو Client اندرویدی برای محتوای DRM استفاده میشود، اما UI موبایل و TV بهدلیل تفاوت الگوی تعامل، مستقل طراحی شدهاند.
iOS و iPad؛ SwiftUI، AVPlayer و FairPlay
کلاینت اپل با Swift + SwiftUI طراحی شده و AVPlayer مسئول Playback است. برای محتوای محافظتشده، FairPlay در معماری این Client قرار دارد. ساختار رابط برای iPhone و iPad قابل تطبیق است و رفتارهای پخش با الگوهای Native اکوسیستم اپل هماهنگ میشوند.
PWA و Web؛ تجربه کامل با Next.js و Shaka Player
نسخه وب بهصورت PWA با Next.js، React، TypeScript و Tailwind CSS طراحی شده است. Shaka Player پخش HLS / MPEG-DASH را در لایه وب مدیریت میکند و تجربه کاربر از جستوجو و کاتالوگ تا جزئیات محتوا، لیست تماشا و ادامه پخش در همان محصول یکپارچه میشود.
PWA امکان ارائه تجربه App-like را بدون وابستگی کامل به نصب Native فراهم میکند و در عین حال با Backend مشترک پروژه کار میکند.
تجربه محصول؛ پروفایل، لیست تماشا و ادامه تماشا
در طراحی رابط، تجربه سرویس فقط به صفحه پخش محدود نشده است. پروفایلهای مجزا برای اعضای خانواده، لیست تماشا، بخش در حال تماشا برای ادامه محتوا، جستوجو، دستهبندی و مسیرهای فیلم و سریال بخشی از تجربه اصلی هستند.
در کلاینتهای پشتیبانیشده، دانلود و تماشای آفلاین نیز در معماری محصول دیده شده و سرویس از سناریوی چند زبان، صوت و زیرنویس پشتیبانی میکند.
Admin Panel؛ کنترل محتوا و عملیات از یک پنل اختصاصی
پنل مدیریت با Next.js + TypeScript طراحی شده تا مدیریت کاتالوگ، اطلاعات فیلم و سریال، دستهبندیها، کاربران، وضعیت محتوا و عملیات مرتبط با انتشار از یک محیط متمرکز انجام شود.
پنل از Clientهای مصرفکننده جداست؛ بنابراین تغییرات مدیریتی بدون وابستگی به انتشار نسخه جدید اپها قابل اعمال هستند.
زیرساخت؛ Docker، Kubernetes و Nginx
سرویسها بهصورت Container با Docker بستهبندی میشوند و Kubernetes برای Orchestration، مقیاسپذیری و مدیریت Deployment در نظر گرفته شده است. Nginx نیز در لایه ورودی و Reverse Proxy زیرساخت نقش دارد.
این ساختار امکان جداسازی Backend، Workerهای پردازش، پنل و سرویسهای جانبی را فراهم میکند تا هر بخش متناسب با بار واقعی خودش مدیریت شود.
Monitoring؛ دید کامل روی سرویس، خطا و عملکرد
برای Observability، Prometheus جمعآوری Metricها، Grafana داشبوردهای مانیتورینگ و Sentry ردیابی خطاهای اپلیکیشن را پوشش میدهند. این لایه برای پلتفرم ویدیویی اهمیت زیادی دارد؛ چون اختلال میتواند در Backend، پردازش، CDN یا یکی از Clientها رخ دهد.
CI/CD؛ انتشار قابل تکرار برای چند Client و چند سرویس
Pipeline انتشار با GitHub Actions یا GitLab CI طراحی میشود تا Build، Test و Deployment سرویسها تکرارپذیر باشند. در پروژهای با Backend، Worker، Web، Android، Android TV و iOS، جدا بودن Pipelineها و کنترل نسخهها بخش مهمی از نگهداری محصول است.
چالش اصلی؛ هماهنگی بین Playback، امنیت و چند پلتفرم
چالش این پروژه در تعداد صفحهها نیست؛ در هماهنگ نگه داشتن چند سیستم متفاوت است. Streaming باید روی اینترنتهای مختلف پایدار بماند، DRM باید با Player هر سیستم سازگار باشد، وضعیت کاربر بین دستگاهها حفظ شود و Pipeline ویدیو بدون وارد کردن بار مستقیم به Backend اصلی کار کند.
معماری نهایی این مسئولیتها را به لایههای مشخص تقسیم میکند: API و داده، پردازش، Object Storage، CDN، Player، DRM، Clientها، Admin و Monitoring. نتیجه، محصولی است که میتواند بدون بازطراحی کامل هسته، Client یا قابلیت جدید دریافت کند.
پلتفرم استریم اختصاصی برای کسبوکار شما
برای ساخت VOD، OTT، سامانه آموزش ویدیویی یا محصول محتوایی چندپلتفرمی، معماری باید براساس مدل محتوا، تعداد کاربران، نوع DRM، کشورهای هدف، حجم آرشیو و Clientهای موردنیاز انتخاب شود.
توسعه نرمافزار و پلتفرم اختصاصی آونا · توسعه محصول دیجیتال · ثبت درخواست پروژه




