.NET (formerly known as .NET Core) is an open source development platform that developers can use to build cross-platform cloud and console applications that run on Linux and Windows.
Within .NET, there are three platforms that allow .NET code to execute in different places — .NET Core, .NET Framework, and Xamarin/Mono. .NET Core is the cross-platform implementation that can run anywhere on Windows, Linux, and macOS. .NET Framework is the original implementation of .NET that supports running websites, services, desktop apps, and more on Windows. Xamarin/Mono is .NET for mobile that runs apps on all the major mobile operating systems, including iOS and Android.
Before Microsoft embraced Linux as a key platform, .NET was originally closed source and for Windows only.
Despite .NET now being open source and available on multiple platforms, problems can arise if the existing solution is the .NET Framework, which only runs in Windows environments. The .NET Framework will ultimately need to modernize into a Linux environment.
Many organizations find that a large share of legacy workloads, underlying platforms, technologies, and traditional development practices are holding back business agility and innovation. This is because legacy systems were developed before the rise of cloud computing, cloud-native development practices, Linux containers, and other recent advancements. However, many of these workloads are still business-critical and represent significant long-term investments which cannot be easily replaced or retired.
This leaves organizations in a difficult position, needing to balance the necessity of maintaining these systems with the desire to innovate, meet new customer expectations, and address new opportunities. These legacy applications can require so much time, budget, and resources to maintain that they become a significant obstacle to innovation.
The purpose of workload modernization is to bring agility back to legacy workloads by migrating them to a modern platform, breaking up monoliths into smaller easier-to-maintain components like microservices, applying modern software development and deployment practices, and integrating old with new.
Getting existing .NET workloads into a more modern platform comes down to how much effort developers want to spend and how teams embrace changes in the process. With that in mind, there are immediate benefits to getting workloads modernized like:
- Better scalability: .NET workloads now can scale based on demand.
- Better reliability: .NET workloads will be running more reliably in a much more stable and resilient environment.
- Better security: .NET workloads can rely on existing cloud practices to bring an extra layer of security.
- Cost reduction: By getting more automation into the mix, organizations can reduce costs.
Because containerization and Kubernetes have developed so much, it is now possible to containerize .NET on any server. Based on business needs, organizations can pick which modernization strategy is best. Budget and time constraints might require different strategies for different workloads. Sometimes, a phased approach might be more appropriate to collect feedback from users and justify the modernization investment in order to get the full benefits of this effort.
There are three paths to modernize existing .NET applications.
- Rehosting: Known in the industry as "Lift & Shift," rehosting is the process of migrating an on-premises application to the cloud without modifying it, moving it to a cloud-infrastructure ready platform. In this migration approach, current on-premises applications migrate or rehost to an Infrastructure-as-a-service (IaaS) platform. Applications will have almost the same composition as before, but they now deploy to virtual machines (VMs) in the cloud. This strategy is used mostly to migrate large-scale applications to satisfy specific business goals, such as launching a product in an accelerated timeline or leaving an on-premises data center.
- Replatforming: At this level, additional benefits are gained from running an app in the cloud with modern technologies like containers and additional cloud-managed services, making it cloud optimized without altering significant code. This maturity model allows containers to deploy on IaaS or Platform-as-a-Service (PaaS) while using additional cloud-managed services related to databases, cache as a service, monitoring, and continuous integration/continuous deployment (CI/CD) pipelines. Replatforming a .NET application as a Windows container provides the advantage of container technologies without changing the core architecture of a .NET application.
- Rearchitecting: With rearchitecting, PaaS services are used to move applications to PaaS computing platforms. Cloud-native applications and microservices architecture are implemented to evolve applications with long-term agility, and to easily scale based on demand. This type of modernization usually requires architecting specifically for the cloud by writing new code. This approach can help gain the benefits that are difficult to achieve in a monolithic and on-premises application environment. By breaking down a monolithic application into smaller services, each service serves a single purpose and is deployed as a container. The ability to follow a microservices-based approach, where some components are built with .NET and others with Java, but all can run on a common, supported platform on RHEL and OpenShift Container Platform.
If you typically work with Windows Server for existing practices, tools and processes, your team may need to add Linux, containers, and Kubernetes into the mix. This is exciting and scary because it involves changes that might affect your existing business.
Red Hat understands that change is not always easy. Our business is all about helping our customers face technology changes, and adopt strategies and solutions to achieve business goals and ensure teams can cope with environment, technology, and processes changes.
Regardless of what modernization strategy you pick and the kind of benefits you're looking for based on your constraints, Red Hat offers products and services like Microsoft Azure Red Hat OpenShift (ARO).