Product Management interview question [Technical]: What are the technologies used for development of a streaming service app?
I have a few clarifying questions -
- What kind of streaming service is this? Live streaming, like ESPN and SonyLiv, or a Web series streaming service like Netflix, and Amazon Prime? — any
- Is it a web application or a mobile application? — Both
- Any additional features that I need to keep in mind like live chat? Reactions? Recommendation Systems? Ratings and Reviews? Or just streaming for now?
- By technologies you just mean various tools and languages, frameworks etc. Right?
First I’ll try to discuss a High Level Architecture of video streaming service. Post that we can discuss different technologies that can be used to implement these services.
There are 4 main components in designing of a video streaming platform -
- Source
- Encoder
- CDN, and
- Video player
Source — This is the source where the content is being generated which will be viewed by the users using this video streaming platform. Data generated here is sent to encoder for encoding.
Encoder — Encoder consists of two parts, the first being the actual server where encoding is ran for a video, and the second one being the encoder software itself which compresses the audio and video for streaming. Encoders use video and audio codec technologies.
CDN — Content Delivery Network aka CDN which is a set of servers which deliver the internet content to users based on their locations.
Video Player — The application on the client’s device that plays the video.
These are the steps that take place while streaming a video on any application -
- The video gets captured on the source and gets compressed and encoded into appropriate formats.
- Encoded media gets stored into containers.
- These containers are delivered to media players for users to watch
All these is done by the live streaming platforms which helps in streaming videos.
Technologies used to create this system -
- Web technologies (back-end) — Java, Python, Go, Scala, NodeJS, Ruby
- Web technologies (front-end) — HTML, CSS, Javascript (Angular, React, Vue etc)
- App development — Java, Kotlin, Android, Flutter, React Native, Ionic, Swift, Android Studio, XCode
- DBMS — MySQL, Cassandra, Atlas-DB, PostgreSQL
- Cloud platforms — Amazon EC2, Amazon S3
- Big data streaming — Kafka, Hadoop, Spark, Pig, Parquet
- CDN — Amazon Cloudfront, Cloudflare
- Streaming protocols — Apple HTTP live streaming, Adobe HTTP Dynamic streaming, M2TS, Microsoft Smooth streaming, RTMP, MPEG-DASH
- Media formats — H.264
- Media containers — MP4, FLV, AVI
- Media Processing platforms — Contus Vplay, DaCast, Vimeo PRO, Wowza Media systems, Muvi, Ustream, JW Live
- Geolocation — Google Maps API, MapKit
- Messaging — Google Firebase, PubNub, Twilio
- Platform Analytics — Mixpanel, Google Analytics, Fullstory, Amplitude, Hubspot
Tools for ML and Recommender system — Python, ScikitLearn, Pandas, Numpy, Matplotlib, Seaborn, Tensorflow, Pytorch, NLTK, Cuda, SciPy, OpenCV etc.