With offices in Beroun, Prague, Amsterdam and Johannesburg, our team of highly talented developers is building a world-scalable platform, delivering the best Subscription Video-On-Demand experience on the African continent and beyond. Our blog is where we share what we’re working on, how we’re working on it, and tips and tricks for all the engineers out there.
If you want to learn more about how we work, check out the Guide to Showmax Engineering written by our CTO, Antonín Král.
What we do?
The Showmax back-end is an in-house developed, microservice-oriented platform, mostly written in Ruby, Go, or Python. When writing microservices in Ruby, we use Rails for applications with web interfaces and Grape for the pure RESTful APIs. We use Puma as the application server, and MRI as our Ruby VM.
Go is typically used where we need large throughput like end-device event collection or routing of storage requests. We use Python for our Content Management System (CMS), having built it with a Django web framework and PostgreSQL for the storage of metadata - in our case, movies and TV shows. Our speedy API microservices are provided by Falcon - bare-metal Python web API framework. To satisfy need for speed, microservices read denormalized data about assets from Elasticsearch.
In fact, our primary business resolves around video streaming. To get there, we have our own video encoding pipeline that can orchestrate encoding across hundreds of servers and powered by FFmpeg - the Swiss army knife of video encoding that gives versatility to our encoding pipeline. We support multiple streaming protocols as well as DRMs (Digital Rights Management), and have developed routing layer for our origin storages to be able to scale throughput and storage capacity based on our needs.
Showmax and the Open Source Community
We love open source (OSS), and a lot of our developers are active members of the OSS community - something that we encourage. We use OSS and we are always trying to give something back to that community through bug reporting, submitting pull requests, and open-sourcing our own tools - which you can check at github/showmax.
Many of the tools we use on the infrastructure side are part of Cloud Native Computing Foundation (CNCF), of which Showmax has been a member since 2017.
Delivering Quality Product
We take the quality of our product very seriously. We deploy combination of automated and manual testing, canary deployments, detailed monitoring of the complete request lifecycle, and more to help us deliver fewer bugs to production. Stack and coverage is different for every team, so we have listed some teams’ specifics down below.
All of our automated testing is orchestrated by Jenkins, which executes the appropriate test-suite for every commit. We have recently open-sourced our internal tool for visual regression testing - ImageDiff.
|Team||What we use for automated testing|
|iOS||Apple’s XCTest is used for unit tests, Fastlane for CI, iOSSnapshotTestCase for static UI tests, and EarlGrey for interactive end-to-end UI tests.|
|Android||The usual suspects - JUnit, Espresso, Hamcrest, and Mockito - are used for unit testing. We mock our dependency tree with DaggerMock, and record and replay our network communication with OkReplay.|
|Website||WebDriver with BrowserStack and visual regression testing.|
|Backend||Backend services are covered with end-to-end UI tests using a RSpec/Browserstack/Capybara/SitePrism stack with image snapshot comparison using ImageDiff. We also check latencies, throughput etc. on the most-loaded endpoints. To be able to keep an eye on regressions or newly introduced performance degradations, we run automated performance tests every night. These are built around JMeter.|
Sometimes, using automated testing is impossible or impractical and manual testing is the easiest way to verify the implementation. We use Testrail for keeping track of recurring manual tests.
|Team||What we use for manual testing|
|Mobile Teams||We test on more than 50 devices, 60% of which run on Android. We support Android versions from 4.1, and iOS versions from 9.3. For test build distribution, we use Beta by Crashlytics on Android, and TestFlight on iOS.|
|Website||Making sure that our website works across wide variety of browsers is very important to us. We use BrowserStack Live to check on various combinations of operating system vs browser version.|
Get in touch with us
- Feel free to drop us an email at email@example.com,
- Please check our Bug Bounty Project if you have found an security issue with our service,
- Follow us on Twitter @ShowmaxDevs,
- Follow us on Github,
- Follow us on YouTube.
- For more about the people in Showmax Engineering, check Meeting Lukáš Korba - iOS, Antonin’s Guide to Showmax Engineering.
Found our work intriguing? Let’s have a chat. We are going to various events, please check the calendar below. You can also just send us an email at firstname.lastname@example.org.
Talked about us
We have been fortunate enough to receive a great coverage by independent writers:
- CZPodcast 2018-05-15 | CZ Podcast 194 - Showmax
- VoD News 2018-04-03 | Nie wszystko działa poprawnie, czyli serwisy VOD w Unii Europejskiej
- Broadband TV News 2017-12-04 | Showmax adds live streaming in Poland
- Seminář IPv6 2017 | Radek Zajíc - Jak bude vypadat nasazení IPv6 v mobilních sítích
- ČRo Magazín Leonardo 23.05.2017 | Otevření Showmax Lab
- Broadband TV News | ShowMax tops Netflix in Poland
- The Wall Street Journal | In Africa, a Homegrown Rival Takes On Netflix
- Variety | Africa Offers Big Potential for Streaming Video
- hapakenya.com | Netflix copies ShowMax’s content download feature
- gadget.co.za | ShowMax peers for Africa
- DEVOPS WEEKLY ISSUE #307 - 13th November 2016 linked to the Tracing Distributed Systems article.
- Lupa.cz | Naspers investují miliardy do konkurence Netflixu. Hlavní vývoj staví v Česku
- CNBC Africa | Connecting all citizens in the 21st Century
- Forbes | How Soviet-Era Improvisation Helped Make Video Streaming Better In Africa
- Bloomberg | ShowMax Expands to 36 African Countries in Challenge to Netflix
- Forbes | Netflix Competitor ShowMax Launches Into 36 African Countries
- Cloud Native Computing Foundation (cncf.io) | Prometheus User Profile: Metrics Made Easy for ShowMax
- Forbes | Why Netflix Should Be Afraid Of Its New Competitor, Which You’ve Probably Never Heard Of
- Financial Mail | Gimme: Showmax me the movie