Together with the Cloud movement, its functions and benefits, Software practices and trends have been converging towards creating or migrating the applications towards a Cloud Native compliant architecture. This may include several options including
Furthermore to all those evolving trends, .NET Programming language is also adapting itself to those changes in the software industry. One of the major changes is cross-platform support.
.NET can also be build and run on Linux kernel based Operating Systems, which brings cost saving and also option to run .NET on Kubernetes.
Besides, as .NET is OpenSourced, this affected the support from the community in a positive way. Together with its lightweight architecture which brings higher performance compared to the previous .NET versions, .NET Core is now the defacto version of .NET for all new projects and also migration efforts towards this version from the existing legacy applications.
Considering the progress and the trends both in Software in general and also in .NET in particular, kloia is providing a multi-dimensional model for the .NET modernization. There are 3 main dimensions in this model:
There are 3 steps that can be illustrated as:
This model covers various .NET application versions and types. Here is a basic chart of the coverage and possible paths:
--- .NET Transition Paths ---
(Dotted lines mean that this path will be evaluated during the assessment phase and the thicker the line, the higher the complexity)
This path deals with the transition of an existing Monolith application. For that purpose, the assessment is done, from the bounded-context and Domain-driven perspective rather than .Net Core compatibility. Thus, this path is .NET Core agnostic.
There are 4 steps in that model:
1- Replatforming the current stack to a Cloud Native state with micro-refactoring wherever needed. One example can be AWS Elastic Beanstalk. This step aims to get rid of current manual operations on infrastructure and deployments, thus increasing the focus of the team for the next phase.
2- Assessment of the current code-base with the following activities:
The output of this step is a Value-Risk graph where we define the distinct functions and their position in the graph
Sample Risk-Value Graph
3- Pre-splitting tasks are crucial before the actual “major-refactoring” begins, the following pre-requirements should be done for the purpose of managing the unexpected incidents during the journey:
4- Refactoring for splitting the bounded-contexts in the order which is agreed with the customer
The functions, resources and services being provided by the cloud providers have been increasing and diversifying. It is very likely that you will find an equivalent service which you normally would develop yourself. Benefiting from those Cloud functions, in other words, Cloud Native approach, saves time and money.
Some of the Cloud functions that we introduce for those modernization projects are
Cost Saving: Various options together with Serverless, managed resources, auto-scaling(Even scaling to 0!), Windows OS License
Performance: Moving away from IIS means getting away from various overheads together with .NET Core’s lightweight and lean architecture which boosts performance
Cloud-Native: Cloud functions which make your development and deployment cycles less complex and manageable
Cross-Platform: Possibility to run your workload both Windows and Linux and even on Kubernetes!
As a conclusion, as the last major programming language which is not natively supported on Linux based Kubernetes, .NET versions =<v4.x , definitely needs to be migrated, sooner is better! If you need any any advise just ping us via dotnet at kloia.com , we will be happy to assist you!
Good luck with your journey!