Modernizing .NET to .NETCore on Kubernetes and Serverless Lambda



Turkey's leading online hotel booking company was founded in 2013. With its 120-person experienced staff, it enables its users to book hotels quickly, easily and safely. It continues to appeal to more and more users with the new version of the otelz, which has been continuously in service since its inception.

Otelz’s traffic has been increasing; however, they did not have a scalable environment or infrastructure. They were having hard times in handling high-traffic because of their limited  infrastructure. The infrastructure maintenance cost was high and there were a lot of critical business functionalities to cover with test automation. Also, since they used .NET Framework, they had to stick with Windows hosts and incur license costs.

Client: Otelz

Project type:.NET Modernization, DevOps as a Service and Test Automation



We have done deep analysis together with Otelz architects and identified the areas where we can apply our common modernization practices. We also agreed to apply Kubernetes and Test Automation practices which will increase the agility of Otelz.

.NET Core Modernization

To get this .NET modernization phase successful, we have worked on the same repository that the entire team is actively working on by using a parallel branching strategy. That approach allowed us to get the latest changes to the modernization branch continuously.

Latest .NET Core application and netstandard framework versions used.

Moving from Windows machines to Linux containers has been followed by appropriate approaches to important points to be considered. The details about the TCP connection and worker thread management optimally tuned.

The functions not dependent on core business moved from inside of the project to another application/serverless application (AWS Lambda) to get the main projects more compatible with .NET Core and making that projects more performant.

WCF server side and aspx projects that are not supported on the .NET Core are handled by using the Mono framework to be able to dockerize them on the Linux machines.

Lambda App Diagram:

Lamda App Diagram

DevOps Conversion

For the DevOps conversion, applications were dockerized to work on Linux containers. Kubernetes was used for orchestration, for a highly accessible structure. Cost optimization was done by constructing a scaling mechanism on the AWS side and optimizing the resources used by the applications.

CI / CD processes were created on Jenkins for the automation of the build and deploy stages.

After the project infrastructure was established, troubleshooting steps were optimized.

The AWS resources used were created with the as-code principle using terraform.

Documentation supported with visuals and diagrams was provided.

Otelz Architectural Diagram:

Otelz Architectural Diagram

Test Automation

Browser Tests
The previously used test automation tool was not available. Some scenarios were tested manually. Test Automation development was targeted and the scope of the scenarios to be tested was determined, where our main goal is to develop a fast, understandable and developable test automation.

Test Automation infrastructure was prepared with Ruby-Selenium to integrate with the created build pipeline and determined test scenarios were developed. These tests were run on Selenium GRID in kubernetes. Allure Reports plugin was used to analyze the reports on Jenkins.

API Tests
On the service side, service tests were developed using the BDD approach with the Karate Framework and integrated into the Jenkins pipeline. In this way, end-to-end test scenarios were developed on the service side. On the reporting side, a simple and understandable interface was created with Jenkins Karate Reports.

Mobile Tests
Testing the mobile app, Appium and Ruby, was developed. DeviceFarm with AWS service was preferred. Many devices in different versions were used. A pipeline for DeviceFarm was prepared on Jenkins and the tests were aimed to run on DeviceFarm as ios/android.


Otelz automation



The result of the six months work as follows:

  - %50 performance improvement,
  - %53 cost saving,
  - Better end user experience,
  - Linux hosts,
  - Container technologies,
  - Serverless applications,
  - Modern code base,
  - Ability to work with the latest tools,
  - Automated and fast deployments,
  - Integrated test automation,
  - Test automation with Page Object structure,
  - Automated test results with detailed graphs,
  - Automated API tests.

Some of our results:
  • 51%
    Performance improvement
  • 53%
    Cost saving