Author: mizansphuron

OTT Platform with Speke reference server through AWS Elemental

Business Context and Problem Statement

We see overall revenue is declining in voice call for different telco companies. People are using different freely available VoIP solutions like WhatsApp, Viber for both voice and text based communication. To have different revenue stream, companies are focusing on different digital services. In that consideration, one of the top telco service providers in Bangladesh has initiated an OTT platform for their subscriber. All the streams of the platform were unencrypted which was a major concern for them. They wanted to have a secure and protected live streams to their end users which is encrypted and the key is rotated every 5 minutes with an optimized costing. As one of the top AWS solution providers, they came to us how we can help here to achieve their goal.

To provide the required solution, we looked for different available solutions like BuyDRM (https://buydrm.com/) , Intertrust (https://www.expressplay.com/) heavily used by industry leaders but the subscription fee was bit expensive which was not aligned with our client. Considering all the aspect, we started looking for opensource free solutions to be customized and Speke reference server came up to be used with AWS Elemental service to serve the purpose.

We can find the opensource repo of the Speke reference server from the following link:

https://github.com/awslabs/speke-reference-server

The Speke reference server solution is done in Python. After digging further, we found a AWS Cloud formation template was based on python 3.6 which is not supported with latest lambda python version (3.9) and a number of used libraries were deprecated in latest version. We stared doing the refactoring to comply the code with python 3.9 which can be found in the following link.

https://github.com/mizanurbd/speke-lambda-3.9/blob/0e6a81c8d392d739a6e816b309708e8563a7bea8/speke_reference.json

To support python 3.9, the codebase was also refactored shared below:

https://github.com/mizanurbd/speke-lambda-3.9/blob/0e6a81c8d392d739a6e816b309708e8563a7bea8/speke-reference-lambda.zip

After deploying the cloud formation, we need to upload the above code base to function the Speke reference server properly.

After successful implementation, the flow becomes:

The flow is:

Input: <s3-bucket>/<source_folder>/<source_file_name>

DRM:

Output: <s3-bucket>/<output_folder>/<output_file.index.m3u8++>

That S3 has a CloudFront distribution, in this case:

Demo Link: https://yourcloudfrontURL/test/test021/index.m3u8

We ran some tests playing the content on VLC, QuickTime, and Safari.

If we try to read the m3u8 file:

$ curl https://yourcloudfrontURL/test/test021/index.m3u8

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-STREAM-INF:BANDWIDTH=1610383,AVERAGE-BANDWIDTH=1610383,CODECS=”avc1.77.30,mp4a.40.2″,RESOLUTION=640×360,FRAME-RATE=23.976

indextest021.m3u8

$ curl https://d7yr8u0dqt3wk.cloudfront.net/test/test021/indextest021.m3u8

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:11

#EXT-X-MEDIA-SEQUENCE:1

#EXT-X-PLAYLIST-TYPE:VOD

#EXT-X-KEY:METHOD=AES-128,URI=”https://d3f9ggqez0f75l.cloudfront.net/test021/78746cf8-58aa-4dc7-810f-10ed3daecf4e&#8221;,IV=0x00000000000000000000000000000001

#EXTINF:10,

indextest021_00001.ts

#EXT-X-KEY:METHOD=AES-128,URI=”https://d3f9ggqez0f75l.cloudfront.net/test021/78746cf8-58aa-4dc7-810f-10ed3daecf4e&#8221;,IV=0x00000000000000000000000000000002

#EXTINF:6,

indextest021_00002.ts

#EXT-X-ENDLIST

Here, we have a Key URI: https://yourcloudfrontURL/test021/78746cf8-58aa-4dc7-810f-10ed3daecf4e&nbsp;

This is a key pointing to an S3 Bucket origin. Every time we convert content through MediaConvert and give a ResourceID, it creates a key with that resource ID on the bucket.

The above POC was aligned with the need. Right now, their existing solution is in process to be refactored leveraging AWS Services, Speke reference server and other relevant technology stakes.

Cloudemy

I have been thinking about an online platform which can help the cloud enthusiast in kicking off the the cloud journey. To serve that, cloudemy.xyz domain has been registered. All the courses will be in localized language (Bangla). The development of the platform is in progress. Expected date of release is 1st August 2022. A place holder is there for now till the platform is released. Expecting to create an significant impact in cloud adaptability over here in Bangladesh.

Moodle LMS in AWS

Brain Station 23 is the only solution partner of Moodle in Bangladesh. We have been working with both local and global clients in development and consultancy capacity.

We have already done good amount of opensource contribution (https://moodle.org/plugins/browse.php?list=contributor&id=3524295) specially the ”Moodle Proctoring plugin which has been downloaded 1K+.

Regarding deploying Moodle in AWS, a recommended architecture given below which can ensure high availability:

AWS User Group Bangladesh reached 6K+ members

AWS User Group Bangladesh (https://www.facebook.com/groups/AWSBangladesh) was created in both Facebook and LinkedIn to have a strong community of AWS enthusiast. It was established more than 5 years ago and new members are joining to support each other. I am the co-founder of this group and community leader. We have a vision to play a key role in adopting cloud over here. We have been arranging lots of workshop, seminar all these years. Before pandemic, it was all physical event, now we are more into virtual event considering the participants safety. We are continuously contributing in solving different problems by the community members to strengthen the cloud adaptation.

Speaker in AWS Community Day 2021

AWS Community Day South Asia 2021 (https://communityday.awsug.asia/) happened in last October where both speakers and audiences from Bangladesh, India and Srilanka participated. I was the only Bangladeshi participated as speaker in this event.

My topic of the session was “Cutting an eCommerce application cloud costing by 70%“. Amazing speakers were sharing their knowledge which were really helpful.

I have shared the presentation deck below:

The recorded session can be found below for both track:

Track 01:

Track 02:

BS23 in AWS India Partner GameDay 2022

We, Brain Station 23 have participated in AWS Partner GameDay 2022 on 20th May 2022 for the first time. I was one of the members of the team. Brain Station 23 secured the 19th position amongst 76 teams; the only #Bangladeshi team got the invitation to participate on such an energetic event with different gigantic cloud teams like Infosys, Deloitte, Capgemini, Rapyder. It was a great opportunity to compete, learn & hone our skills at this #AWS event.

Brain Station 23 in Dubai

We have recently visited Dubai to have strong presence over there. Since Dubai is the hub of global major multinational companies, we see good traction of our service offerings. We had a very good discussion with local partner and met with different concerns who are interested to support us in expanding our services strongly over there. I have shared few of the snaps during our visit over there.

AWS Site-2-Site VPN with 3rd party ISP

Telco is a highly regulated industry in Bangladesh. The solution mentioned was for a major telco in Bangladesh. We were in process to migrate a number of on-premise workload to AWS cloud. One of the compliances from their end was not to connect to the internet directly from their infrastructure rather through a third part ISP which includes high availability. The solution got successfully deployed and working fine for more than 4 months without any downtime. As it is a common ask from many enterprises, this architecture would be helpful to be followed by others.

To comply with the company, we had to implement site-2-site VPN for one of the telco companies in Bangladesh. Here one of the constraints is there needs to have a 3rd party provider between AWS and client infrastructure along with fault tolerant. Considering the scope, we came up with the following architecture which might be helpful for others.