AWS for M&E Blog
Re-architecting a monolithic application for cloud-native deployments
This blog was co-authored by Julián Fernández-Campón, Chief Technology Officer, Tedial.
Tedial, a validated software partner, has been creating applications tailored for the Media & Entertainment (M&E) industry since 2001. The company focuses on solutions for companies with Media Asset Management (MAM), workflows orchestration, and systems integration.
Several years ago, Tedial recognized that business operations were shifting toward SaaS, media services, and OPEX models. The company developed a solution that maximized flexibility and optimized emerging practices, as previous architectures weren’t designed for a single, long-term deployment.
NoCode media integration platform
Besides “re-architecting,” Tedial decided to innovate within the M&E landscape. smartWork is a NoCode Media Integration platform to simplify the design of business processes and streamline the use of services and applications in the cloud for media processing. This helps build efficient and cost-effective content supply chains.
smartWork presents the available media processing elements as an “app store” where non-technical users select what they want, test new services, or swap one for another with a few clicks.
Planning the journey
To achieve this scalable, dynamic model, Tedial opted to move toward a cloud-native infrastructure, using cloud native and microservices to reduce infrastructure management.
The first step in every journey is to have a solid plan, and Tedial found this to be especially true when migrating to a cloud-native infrastructure.
Importantly, the team at Tedial focused on the design phase and identification of modules and functional units of the application that needed to be decoupled into independent services. In Kubernetes, Pods are the smallest deployable units of computing that can be created, living in one or more containers. For example, if there are two microservices that are related, and the lifecycle is similar, they should be part of the same Pod. AWS provides a managed service to run Kubernetes called EKS.
Tedial’s technical approach was twofold: First, divide components into functional and independent services, such as platform (authentication, logging, BI), metadata management (editorial, collections, relations), media management (storage, streaming), indexing (getting information, loading the search engine), business process management (BPM), and systems integration using containers orchestrated by Kubernetes; and second, to identify which services could be managed by AWS.
Tedial discovered it was more cost effective and simpler to use a managed service such as an Amazon Relational Database Service (RDS) database rather than have to deploy and manage database servers, design for redundancy, scaling, and manage backups. For smartWork we used:
- Amazon Elastic Kubernetes Service (EKS) – AWS managed service for Kubernetes clusters
- Amazon Elastic Block Store – persistent volumes in the Kubernetes cluster
- Amazon Elastic Compute Cloud instances – for Kubernetes nodes and bastion server
- Amazon Simple Storage Service (S3) – object storage for media management
- Amazon RDS – Relational Database Service
- AWS Elemental Media Convert – Media transformation service that supports UHD and HDR video conversion, among others
- Amazon Rekognition – AI tools for video analysis
Choosing development tools
Selecting the appropriate technology is an important factor that impacts the success of a project. smartWork is built using common Continuous Integration/Continuous Deployment (CI/CD) industry tools for the backend processes and frontend UI. For CI, there are many strategies and tools that help, such as Jenkins for automatic builds, Cypress for UI testing, and Sonarqube for source code evaluation. Continuous Deployment can be managed and automated with GitOps using tools like flux.
For the backend development, Tedial chose Spring Boot because it accelerates the development process, providing “quick delivery of production-grade features with independently evolvable microservices”—plus, it’s widely supported by the Spring community.
For the frontend, Tedial used React JS—it’s lightweight, efficient and open source. Also, React JS is widely supported, with extensions to give applications an appealing, modern look. Tedial used other features such as reusable components, testing, code stability, and more, which help ensure the quality of the application.
Managing media
Managing media efficiently and cost-effectively is another key pillar in the M&E industry.
Applications need to natively access the storage service provided in AWS. We used S3 in this case, for its reliability and availability. S3 object storage is more scalable and less expensive than block storage.
To achieve a higher level of cost optimization, lifecycle policies are used to move the less accessed content to more cost-effective storage tiers. AST, Tedial’s Storage Management System (Augmented Storage) was improved to support S3 natively, managing the lifecycle policies and providing a storage abstraction layer for the rest of the services that need to access media and don’t need to know the physical location of the file. This also adds an extra level of security.
Optimizing to pay less
After implementing the functional requirements of the platform, it’s ready for optimization. This involves assessing metrics, resource usage, and microservice performance, and making necessary revisions to AWS instances and services to streamline processes and minimize resource consumption. Optimizing memory and CPU utilization of Pods can reduce the number of nodes required in a Kubernetes cluster. AWS offers a range of cost analysis services, such as AWS Cost Explorer and AWS Application Cost Profiler, to identify services that incur excessive charges. These may include API calls to specific endpoints, unnecessary egress costs, or storage of media in more expensive tiers than required. Although there is no one-size-fits-all solution for applications, focusing on specific services and processes is an effective starting point.
Serverless computing is one of the significant advantages of the cloud. AWS Lambda is serverless, event-driven compute that lets you run code for virtually any type of application or backend service without provisioning or managing servers. It is possible to trigger processes based on events such as detecting new files arriving in S3 buckets and triggering the specific process. For example, in a localization workflow, an audio track can be aggregated.
Building security and resiliency
Security is top of mind when it comes to the cloud, and it is also one pillar of the AWS Well-Architected Framework. Tedial has been committed to security since its inception; we’ve been certified ISO 27001 since 2006. We believe that security is achieved at all levels—from the infrastructure, following AWS best practices, to the application level using multi-factor authentication (MFA), zero trust, and workflow-based security that defines which content can be accessed or be available for each user.
Going in more details, we use private subnets, restrictive security groups, and allow only necessary endpoints in the public network. We prevent access to content living in different AWS locations, and AST guarantees one-time access to content for specific users. A load balancer protects and limits access to microservices, and AWS WAF protects frontend applications from attacks, such as SQL injection or cross-site scripting (XSS). smartWork Workflows Defined Security limit access to different activities in the workflow and only to granted specific users.
Resiliency is achieved naturally in the platform for the AWS services used and by defining replicas of the microservices at deployment. A key function of EKS is support of autoscaling resources based on demand, extending the traditional autoscaling based on system metrics (CPU, Memory, I/O, concurrent users) to a more business-oriented autoscaling that identifies the incoming workload in terms of media processing, content delivery, etc. and creates new Pods for the specific services without affecting the operation. And equally, when the workload is reduced, Pods are ended to optimize costs.
Conclusion
Transforming a platform from a single application to be cloud-native is more than a simple lift and shift; it requires a re-architecture to be efficient. This presents complications that depend on the development language and framework and tools used, in addition to the way it is designed. Cloud migrations take time and resources, and it’s an investment that needs to align with current market trends and needs to be competitive in the crowded landscape of media applications and solutions.
Drawing from industry experience, Tedial recommends the following best practices:
- Invest time in the design phase to create the proper foundations and avoid doing things twice.
- Use managed services when possible. It will save resources and optimize the cost.
- Pay special attention to security. Cyber-attacks are out there, and customers will value the time and resources invested in security. AWS provides several tools and advice on the best practices to protect against cyber-attacks.
- Train the team, manage them effectively. A fresh mindset is needed for the team working on this but also in general, the company needs to embrace this new approach to take full advantage of the new paradigm based on microservices.
The AWS Foundational Technical Review, as part of the AWS Partner Network, is a good way to identify risks and make sure the platform follows the AWS Well-Architected best practices in a comprehensive and well-structured set of points.
About Tedial
Process automation has always been a key pillar of digital transformation initiatives. Since its foundation, Tedial has developed tools and solutions to accelerate digital transformation, improve customer experience, create new services, automate processes, and optimize costs. The company’s challenge and goal is to implement a hybrid cloud media service integration platform that is flexible, scalable, resilient and secure. Tedial’s NoCode Media Integration Platform, smartWork, is transforming and redefining media business efficiency and technology approaches by democratizing business processes, empowering non-technical users to define integrations autonomously—without vendor participation—and create no-code workflows in a creative and flexible manner for greater business agility.