How Kloia helped Digiturk achieve 65% cost savings with .NET Modernization on AWS
In this blog post, we’ll describe how Kloia worked with Digiturk, beIN Media Group Company, a global sports and entertainment media group, to achieve 65% cost savings by partially modernizing Digiturk’s legacy .NET Framework monolithic application to .NET-based microservices architecture.
Digiturk is headquartered in Istanbul, Turkey and their services include both streaming and VoD (Video-on-Demand), along with value-added services that includes complex business logic developed over the last two decades. The Digiturk service experiences peak traffic during popular sports matches and other events, which required its current architecture to be evolved.
To overcome the performance issues of the current architecture while saving cost, Digiturk services required flexibility and scalability. To achieve this goal, Digiturk migrated its .NET applications to Amazon Elastic Compute Cloud (Amazon EC2) Windows instances and used AWS Auto Scaling to meet its scalability requirements. However, Digiturk services also used a monolithic .NET Framework application with a complex layered architecture and a lot of dependencies. Modernizing its legacy .NET applications running in Windows environments became a priority to meet business demands and growth projections. Digiturk needed to modernize its applications to achieve the following:
- Reduce Windows Server licensing cost: Digiturk wanted to remove the dependency of its applications on the Windows Server platform to save on licensing costs as Windows EC2 instances cost almost twice as much compared to Linux EC2 instances.
- Increase agility: They wanted to iterate faster and release new application features quickly and with ease. Tightly coupled dependencies and the large codebase of Digiturk’s monolithic applications made it difficult for the developers to innovate faster.
- Remove performance and scalability bottlenecks: Its application usage depended on traffic demands that used to peak during live sporting events. The monolithic application was preventing business-critical jobs from being scaled individually, while reliance of the monolithic application on a single-shared relational database was impeding its scalability and performance.
To accelerate its modernization journey, Digiturk engaged Kloia, an AWS Partner Network (APN) Advanced Consulting Partner with AWS Competencies in DevOps and Microsoft Workloads.
Kloia’s modernization approach
Kloia has deep expertise and experience in modernizing legacy Windows applications to cloud-based applications on AWS. Its modernization strategy goes beyond migrating customer workloads to the cloud. They specialize in refactoring the applications to cloud-based helping their customers realize the full potential of cloud benefits.
Kloia has devised the following three-step methodology to help customers in their modernization journey:
- Application components and code analysis
- Refactor monolithic applications to microservices
- Building cloud-native solution architecture
Kloia uses these three steps as guiding principles and tailors its approach for each customer based on the customer’s custom business requirements.
Kloia approached Digiturk’s modernization following Kloia’s three-step modernization methodology and adapted it based on Digiturk’s current application state and future business goals. Over the course of one year, Kloia successfully proposed and developed a cloud-native architecture for Digiturk using their expertise and experience in developing cloud-native applications on AWS.
Let’s dive deeper into each of the three steps Kloia used to modernize Digiturk’s monolithic .NET Framework-based application.
Application components and code analysis
To understand the current application components, Kloia conducted a series of deep-dive workshops with the team who designed, built, and managed the platform at Digiturk.
Figure 1: High-level overview of Digiturk’s application components
As shown in Figure 1, there are two layers of internal libraries and a host of applications built on top of them. The internal libraries, Digiturk Framework and Common Service Interface (CSI), provide cross-cutting functionalities, like caching and logging, and contain common business logic.
As the code base was developed in .NET Framework and had to be modernized to the latest version of .NET, Kloia analyzed these current applications and libraries for .NET compatibility. Kloia used an AWS modernization tool, Porting Assistant for .NET, to identify incompatibilities of Digiturk’s .NET Framework v4.0 code with the latest version of .NET, find missing dependencies, and generate a detailed compatibility assessment. This significantly reduced the manual effort involved in assessing Digiturk’s code base.
Refactor monolithic applications to microservices
Kloia started with identifying business domains to refactor Digiturk’s legacy monolithic applications into a collection of microservices using Domain Driven Design (DDD) principles. As the monolithic architecture of Digiturk’s software was based on a core domain (video streaming), a DDD-oriented microservices architecture was the best fit.
Using event storming as the first step of DDD ensured that all stakeholders were on the same page. It provided clarity in understanding domain models and business contexts and informed complexity/value analysis to further develop the roadmap.
Through the event storming sessions, Kloia and Digiturk discovered the business flows and associated them with the corresponding domains. Based on these findings, Kloia split Digiturk domains into seven bounded contexts, as shown in Figure 2 (Digiturk’s entities anonymized). Kloia built the new architecture around the redesigned domains while keeping existing business flows.
Figure 2: Context diagram of Digiturk’s redesigned domains
The context diagram provides a better understanding of the domain context by defining and clarifying domain objects and external systems within a scope. These domain objects are mainly the representation of a concept or entity within the domain. A domain can be defined as an area of expertise or business activity of the system. An external system refers to any third-party system or component outside of the current domain or bounded context that interacts with the domain model or affects the behavior of the domain. In DDD, it is crucial to implement anti-corruption layers (ACLs) for integrating external systems.
Also, to get a better understanding of how to split Digiturk’s codebase into components, Kloia used AWS Microservice Extractor for .NET to visualize the source code of the application and its dependencies. AWS Microservice Extractor for .NET is an assistive modernization tool that analyzes the code and creates a visualization of the source code, including classes, namespaces, and method calls between them. The visualization helps to logically group functionalities based on criteria, such as class dependencies, namespaces, and call counts.
Building cloud-native solution architecture
Using the results of application analysis and new domain architecture, Kloia built a cloud-native solution architecture using various AWS services for different functionalities to meet Digiturk’s comprehensive requirements
Figure 3 represents Digiturk’s high-level architecture design built by Kloia. Click on the image to expand it.
Figure 3: Digiturk’s high-level architecture design
Let’s look at the architectural decisions taken for designing Digiturk’s solution and choosing AWS services for different functionalities.
Considering Digiturk’s hybrid cloud model, Kubernetes was selected as the container orchestration platform to containerize the .NET microservices to Linux containers. Kloia also recommended using Rancher as the enterprise Kubernetes management tool. Rancher adds additional benefits to Kubernetes like multi-cloud and multi-cluster management.
For microservices inter-service communication, Amazon Simple Queue Service (Amazon SQS) was selected, as it is a fully managed message queuing service that scales elastically and cost-effectively based on usage, requiring no capacity planning or pre-provisioning.
From the database’s perspective, Digiturk required both relational and non-relational databases for its application. For the non-relational database, Kloia and Digiturk selected Amazon DynamoDB based upon its features like auto-scaling, automatic multi-region replication, and single-digit millisecond performance. For the relational database, Digiturk had an Oracle database in its local environment. Kloia proposed migrating to open source engine MySQL to save costs. To take advantage of the cost-efficiency and resizable hardware capacity features of Amazon Relational Database Service (Amazon RDS), Kloia and Digiturk team selected Amazon RDS for MySQL. Amazon ElastiCache was also used where caching was required as the first checkpoint before going to the database. Amazon ElastiCache provides a low-latency, scalable, fully managed caching service.
Since Digiturk broadcasts in over 40 countries in five continents, low latency and high transfer speed were essential for its application. To satisfy these conditions, Amazon CloudFront was used as a Content Delivery Network (CDN) service. Amazon CloudFront hosts and delivers static content, such as thumbnail images of videos and web pages.
The Amazon Route 53 service provided DNS resolution for environment endpoints. It was selected because of its compatibility with Amazon Elastic Load Balancing, its DNS failover support in fault-tolerant architecture, and because it’s cost-effective.
For logging and observability management, Amazon CloudWatch and AWS CloudTrail were chosen to collect and monitor metrics and track log files. Amazon CloudWatch was configured to log files into QRadar, which collects logs and creates alerts according to preset conditions, like security threats and vulnerabilities. The custom metrics that are collected from the infrastructure of the system are pushed to Prometheus and visualization is realized in Grafana.
Amazon Simple Storage Service(Amazon S3) was used for storing logs collected from all services, like ELB, Amazon CloudWatch, AWS CloudTrail, Amazon CloudFront, and beINConnect (VoD Platform). For the backend logs of the project, ELK Stack (Elasticsearch, Logstash, and Kibana) was used.
Finally, AWS Web Application Firewall (AWS WAF) was used to provide application security. In order to protect the application from possible attacks, such as SQL injection or cross-site scripting (XSS), AWS WAF was implemented as a firewall service.
Kloia used a microservice-based approach to rearchitect Digiturk’s legacy platform. This example confirms that it is possible to modernize your legacy applications to a microservice-based, reliable, scalable, secured, and cost-effective platform. Choosing trusted providers with niche expertise in this space is critical to achieving the desired value-add and results.
“Collaborating with Kloia has been a truly exceptional experience. Their vast knowledge and expertise have been instrumental in transforming our legacy applications with remarkable speed and efficiency.
Modernizing .NET applications to run on Linux containers, splitting monolith to microservices and leveraging AWS purpose-built databases have helped us achieve over 65% cost savings and also enabled us to deliver our services to customers with higher performance.”
– Kürşad Yüksel, Middleware and Framework Solutions Director at Digiturk / beIN Media Groups
If you have monolithic applications, contact Kloia for an assessment on modernizing your existing workloads into cloud-based applications on AWS.
AWS can help you assess how your company can get the most out of cloud. Join the millions of AWS customers that trust us to migrate and modernize their most important applications in the cloud. To learn more on modernizing Windows Server or SQL Server, visit Windows on AWS. Contact us to start your migration journey today.