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