About the customer
Saina Play are a creative film and photo production company hungry for quality in aesthetics. To create modern recognizable content, they are working with a strong network of experienced professionals. Saina is a major OTT platform in Malayalam film industry. They are into OTT Streaming, Digital Streaming, and Content Production.
Customer Challenge
Saina Play was building a streaming OTT based application to run on the cloud. They also wanted to enhance the user experience with the metadata of the transcoded video allowing the users to access it in a hassle-free manner. The team had developed an application using API’s in Python Django MVC framework and configured to run on a Gunicorn web server. This application was hosted on AWS Cloud environment. As the application began to scale and business grew, the development team started to struggle and keep up with the frequent feature requests, functional changes and testing requirements. The team had no deployment pipeline and faced issues in terms of code management, test, build and deployment manually. The monitoring was limited and required a lot of manual intervention to troubleshoot and identify issues.
The customer team had limited experience on DevOps practices and sought guidance from Workmates to enable DevOps in their organization and adopt best practices for managing their application on the cloud. Some of the challenges to be addressed were
- Although a source control (github) was used, the process for versioning and checking in the code was not streamlined. Frequent check-in needed build verification and functional testing in AWS infrastructure. They needed IT team involvement for each minor release, which was not only time consuming but also error prone.
- There was no proper rollback mechanism for releases, so if there were any application failure after new deployment it took time to revert the application in last stable version resulting in downtimes.
- They lacked automation in functional and load testing to ensure the new features worked properly without compromising the performance.
- They had limited monitoring and visibility into the overall health of the production workload.
Our DevOps Solution Approach
Workmates worked with the Saina developer and IT team to identify the issues and help the team adopt standard DevOps practices like automation, CICD and monitoring. The following are some the highlights of the solution implemented.
- AWS Code-Pipeline was used in conjunction with source code repository and Code-Deploy tool, so every new check-in triggered a new build and successful build deployed into EC2 cluster with no manual intervention. Multiple environments were introduced to conduct testing and troubleshooting.
- While we are talking about the usual build and deployment process, we should also think of post deployment phase, where functional testing is inevitable. Usually, this is manual and time consuming. We introduced Selenium Automation Testing which eradicated all the manual effort and time for functional testing at every check in.
- Since this is a public facing streaming application, performance was a key criteria for success. In DevOps environments, it’s a best practice to run performance tests as a part of the delivery pipeline to identify potential bottlenecks. So, we brought our expertise into performance testing, and how to best integrate load and performance testing into application delivery. To realize this, we have used Jmeter tool in conjunction with AWS key services like ASG, CloudWatch, ELB and observe how the running application perform under load/stress and monitor the infra scaling to handle the load.
Key Services Used
AWS Services | AWS CodePipeline, AWS CodeDeploy, EC2, ALB, S3, RDS, KMS, CloudFront, Cloudwatch | |
Third-Party Tools/Services | Jenkins, JMeter, GitHub, Selenium, OpenVPN |
Security Considerations
The following were some of the key security best practices introduced during the DevOps implementation
- Certification based authentication with the source control system was implemented to monitor the checkins and initiate deployment
- Encryption was introduced on S3 for all the artefacts and content stored on the cloud.
- Least privileged access was introduced to ensure only the required policies were provided to the EC2 instances and only the authorized users had access to the S3 buckets.
- Network level security was handled through security group and Network access control rules. Also access to the servers for maintenance was only allowed through restricted VPN.
Results and Benefits
The team was DevOps enabled to seamlessly develop and deliver new features quickly. Saina Play OTT and backend application was successfully deployed on AWS environment with all the security and cloud best practices in place.
- CICD based deployment ensured minimal manual intervention and predictable release outcomes. The team is now able to release new features weekly instead of a release every month.
- Assured performance in every release with the automated load testing using JMeter for API, Database, and MQ testing with ease
- Automated functional testing for various OS and device types allows catching the issues before it makes it way to production. The manual testing was completely eliminated. Full suite of testing in every release ensured dependable and predictable changes.
- Automated workflows for media conversion using step workflow and managed service of AWS elemental Media Convert reduced the complexity and operational overhead in the OTT platform maintenance.
- Separate updated environments for UAT allowed for easy testing and troubleshooting for any issues
- Advanced monitoring of the workload using Cloudwatch, ALB and Cloudfront logs allowed to get deeper insight into the applications use.