Blacksheep OTT started their Journey on YouTube as a ‘Smile Settai’ channel in 2013 with a team of 20 people. They are unique in delivering all content which makes them reach 8 Lakhs in a Span of 4 years. Later, they restarted on YouTube as a ‘Blacksheep’ channel in 2017 with a team of 40 people. They reached 3 million followers in a short span of 2 years. Now, they are with 3.5 million subscribers in Blacksheep with the team size of 200+ Also, with one more channel named ‘Unakkennapaa’ in the year 2019 which is around 2 million subscribers now.
As an extent, they started 4 Non – Fiction Channels in 2020 named Blacksheep Cinemas, Blacksheep GO, Blacksheep Darbar and Blacksheep Sports which is around 1 Lakh subscribers in 6 months. Finally, they started their own OTT Channel named ‘BS Value’ in Nov 2020 which is now with 5 Lakh downloads in 3 months.
- Current Infrastructure built was inelastic, unreliable and not fault-tolerant, due to which the production environment often used to crash due to traffic spikes during any new web series launch.
- Infrastructures were provisioned manually so the drifts and changes where not maintained or not versioned which caused lots of human errors in maintaining infrastructure across environments.
- Slow provisioning of Infrastructure if any new dev/test environment was needed to test new features so release new feature was taking months.
- Automated Build, Deployment and Rollback was required to reduce manual intervention by developers in production. The changes to both the application and infrastructure were desired to be automated.
- Monitoring and logging of Application and Infrastructures was missing.
- We based our solution approach by leveraging managed services in AWS, such as VPC, RDS, EC2 and CloudFormation. We used AWS cloud Formation templates to automate the process of provisioning infrastructure on AWS by developing templates using YAML.
- To validate the syntax of the templates we used CFN-lint and CFN to verify the structure of the YAML template before deploying it into the AWS account.
- For BSValue, we defined parameters within the template and ensured that no explicit namingwas used for creating any custom resources.
- We achieved this by defining friendly parameters within our template for each AWS service needed to be deployed. Eg. Instead of specifying parameters with naming conventions. we used parameter groups to define namespaces for just the category and capacity of the services meant to be provisioned.
- Also included in the template was an outputs section which allowed us to display the outcome of the stacks deployed by the template.
- The outputs section of the stack further allowed us to map the values onto AWS Systems Manager Parameter Store to avoid exposing server credentials such as SSH keys and RDP Password.
- In addition to the parameter groups and stack outputs , BSValue also had a use case to implement AMI based deployments. For this we used source mappings for auto fetching region and AMI ID values.
- BSValue’s infrastructure involved deploying multiple resources within a single VPC. We solved this by using nested stacks in our template by defining Pseudo parameters for each of the corelated resources.
- Before each segment of the stack executed, our template had logical syntaxes to fetch the metadata of each parameter and the output before moving on to the creation of the next resource within the stack.
- The Architecture of BSValue leveraged application modernization by means of Elastic Container Service.
- We helped BSValue by defining a CFN template that had the option to reference metadata for information such as Region (AWS::Region) and specific parameter types to define the credentials for accessing the EC2 instances within the cluster (AWS::EC2::KeyPair::KeyName for ssh keys).
- Additionally, our devops team focused on creating a template that had the brevity to define pseudo parameter for each of the auxiliary resources such as IAM Role ,IAM user and Instance Type within CFN.
- For automating background jobs ,backup and DR activities, we leveraged AWS SAM (Serverless Application Model) to define specific lambda functions for infrastructure backups and certain background jobs that were necessary for the Microservices deployed within the ECS cluster.
- Our team made the best use of cfn-pylint and cfn-guard to validate and rectify the templates for any security exposures, syntax issues or loopholes. Therefore, entrusting BSValue with an example of DevSecOps.
- We have also leveraged AWS Code pipeline and code deploy to manage deployment patterns for future build or releases. Code pipeline enabled us to orchestrate the flow of deployment from development to production. Whereas, Code Deploy allowed us to implement various methodologies for implementing build and release patterns.
- We used In-Place rolling updates deployment pattern within CodePipeline for future builds / releases.
VPC, CloudFront, CloudTrail, CloudWatch, EC2, SSL VPN server, Cloud trail, Cloud watch, Lambda, Auto-Recovery, SNS , ECS etc.
- The level of automation through the IaC deployment allowed faster time to market
- Our IaC approach allowed townhall to avoid ‘configuration drifts’ tends to cause mismatched development, test, and/or deployment environments due to ad-hoc configuration changes and updates. Thereby, enabling a more efficient development and production lifecycle.
- Our approach towards DevOps methods helped BSValue implement CI/CD which ensured zero downtime and quality assurance.
- Albeit initial costs were provocative but in pre course of the devops implementation itself BSValue witnessed a significant reduction in overall infrastructure costs and increased TCO for managing the infra for their application code.
- A mutable infrastructure avoided the calamities caused by human errors , as IaC model allowed clear visibility of the changes occurred and the option to reverse the effects as well.
- BSValue overcame the problems of slow provisioning by a leveraging microservices architecture with more agile deployment patterns for shipping new releases.