Cloud Native / Cloud Services / DevOps / Technology

What the .NET Renaissance Means for the Enterprise

2 Nov 2018 9:06am, by

Pivotal sponsored this post.

Shanfan Huang
Shanfan Huang is the design lead on the Pivotal Cloud Foundry team for .NET/Windows and Microsoft technologies. Before joining Cloud Foundry, Shanfan coached enterprise clients at Pivotal on lean product design and cloud-native development. In the past 15 years, she has worked on a wide range of design projects, from hardware to software, from graphical user interfaces to distributed systems. She is passionate about open source and collaboration.

Digital transformation is easier said than done. If you are an IT executive in a traditional industry such as insurance, healthcare or manufacturing, you would be thinking about establishing a cloud-based infrastructure and adopting DevOps practices. What to do with your existing applications is an inevitable question. Applications with older architectures tend not to run well on cloud-native platforms.

.NET and Java have historically been the top two choices for enterprise applications. But Java was the more open and cross-platform language. In the past couple of decades, it gained the favor from the open source community. Frameworks like Spring, developed under an open source model, catalyzed the modernization of Java applications.

On the other hand, the .NET Framework was Windows-only. The tooling around .NET was guarded and maintained by Microsoft. The developer community was neither able to contribute to nor influence it. Therefore, many modern platforms are not optimized to run the Microsoft stack. At Pivotal, we observed many enterprise customers migrating more and more Java applications to Cloud Foundry. These same forward-looking enterprises didn’t know what to do with their .NET applications.

Fortunately, though, Microsoft has done a lot in the past few years to make .NET a viable option as you work to modernize your overall application architectures. Taking cues from Microsoft, platform providers like Pivotal invested heavily in building Windows Containers so that .NET applications can be easily deployed to the cloud.

The New Era of .NET

At the end of 2014, Microsoft open sourced .NET and announced the newly formed .NET Foundation to support its community and development. .NET Core and the tooling around it were decoupled from Windows. Consequently, the new .NET server stack could run on Windows, Mac and Linux. This gave developers more options to choose from.

Since then, Microsoft has become more open, more collaborative and more cloud-friendly. These moves were particularly noteworthy:

  • Impacting developers experience: Visual Studio got a version to run on MacOS. It also released a lightweight version, VS Code, to attract programmers writing in diverse languages across different OSes. Recently, the live code share feature impressed many old-timers. It’s a big improvement on developer productivity.
  • Embracing open source: Microsoft acquired GitHub recently, a community and platform enjoyed by 28 millions of developers who happily share the source code and the documentation of their passion projects. The strategic rationale for the move was well-understand, while developers had a range of opinions on the purchase.
  • Shifting to a holistic DevOps narrative: TFS (Team Foundation Server) and VSTS (Visual Studio Team Services) used to provide a black box solution for build-deploy-run, for on-prem and online respectively. In September this year, VSTS was rebranded as Azure DevOps. This is not just a name change. It shows Microsoft’s intent to be the one-stop shop for project management, team collaboration, version control and CI/CD pipelines. Microsoft is implying that if you want to adopt DevOps practices and the tooling, look no further.

Now is a good time to revitalize your .NET/Windows stack. They can be an integral part of your digital transformation.

.NET has evolved, but can your company?

Signals from Microsoft generated much excitement from the developer community. Thought leaders cheered and affirmed that the time had come for the .NET renaissance. However, new tooling and capabilities can only go so far. Enterprises looking to jump on the transformation bandwagon still need to make sure they’re prepared for modernization at a foundational level. Here are three suggestions.

Turn Your Sysadmin into Cloud Ops

First of all, you need to transform your central IT organization. When you consolidate your data centers and move to a cloud platform, a lot of the tasks previously done by a traditional system admin will be automated and streamlined. You need to upskill your sysadmins to become cloud operators and they need to provide application services to the developers. The time it takes to provision a new environment or to plug in a new service must be done instantly — not one week, not six months. While platforms like Pivotal Cloud Foundry give you the buttons to click, you need to train your people to think differently and work differently.

Conduct a Holistic Portfolio Assessment

Next, stakeholders in both the business units and the IT org need to come together and have an earnest conversation about your application portfolio. Your application portfolio likely comprises heterogeneous technologies including mainframes, Java apps, ASP.NET apps, Windows Communication Foundations, Web Forms, hierarchical databases, plus a bunch of proprietary languages, open-source components and third-party software. Many of them might have redundant and overlapping functionalities.

The DevOps movement is really about closing the gap between delivering business value and maintaining IT infrastructure. At Pivotal, we developed various tools to help you sort through your portfolio. The end goal of a portfolio analysis is to map your business value and IT costs so that you can sensibly bucket your applications into “rewrite,” “refactor,” “replatform,”  etc. If an application has very high business value, it’s worth rewriting the software to comply with the twelve factors, making it a cloud native application. For the less valuable applications, you want to do some minor refactoring to meet the minimum requirements to run on cloud platforms, knowing you would not get the full benefit of the cloud. Each of the buckets represents a decreasing business value and the corresponding development effort to modernize them.

Modernize Your Business-Critical Applications

Last, but not least, once you identify the applications into which you are willing to invest time and resources, you’ll need to transform how your applications are built.

You probably have a large number of business-critical applications in your data center that run on Windows servers. Your data is likely handled by a farm of SQL Servers. IWA (Integrated Windows Authentication) might handle all your secure connections. Your business logic is probably baked into your user interface and data structures, making them difficult to update when business logic changes. These are all red flags for cloud deployment, performance monitoring and effective operation.

Cloud-native computing, at the minimum, requires the application to have a version-controlled codebase, configurable environment variables and the backing services as detachable resources. Furthermore, monoliths need to be sliced into smaller chunks, with separation of concerns. Logs need to run as event streams. Applications need to be built to scale horizontally and expect remote failures.

In recent years, Pivotal developed thought leadership Cloud Foundry expanded to serve customers with .NET/Windows workloads. In light of the success of Spring and the surrounding ecosystem for easily spinning up microservice-based Java applications, we developed its .NET counterpart, Steeltoe. For your .NET workloads, consider using Steeltoe to aid in microservice-based architecture design. Steeltoe is built on .NET Standard, so it can be used for both in-flight upgrades to existing .NET Framework applications and fresh starts on .NET Core and it is playing an increasingly instrumental role in the building of modern .NET applications. Additionally, Steeltoe is built with Spring compatibility in mind. Enterprises that use both .NET and Java can expect similar functionality on both tech stacks. You can even build a polyglot application with Java and .NET using Steeltoe and run it on Cloud Foundry. To tie everything together, Pivotal published a book on modernizing .NET applications, providing both strategic and tactical advice on tackling legacy applications.

At the end of the day, a successful digital transformation requires that infrastructure, applications and operation all come together. It’s a long journey, but what the .NET renaissance brought to us is the right tools and ecosystem support to modernize your .NET workloads for cloud platforms.

Feature image via Pixabay.


A digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.