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



In this project, we worked for .NET Core modernization, DevOps modernization and test automation.

.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:

- 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