Decouple. Decouple. Decouple.
If you have been working on any cloud migration project it's safe to assume you have heard about “decoupling applications,” “decoupling our infrastructure,” or “abstracting applications away from the hardware upon which they run.” Let's look at how this concept affects your infrastructure, how to embrace it, and what it means for your business's future workloads.
This simple word can be the impetus toward major changes for you and your organization. It can completely alter the way in which your applications are built, deployed, updated and maintained. Strategically, being able to look at applications without also looking at the infrastructure upon which they are deployed can be difficult to consider. Traditionally, monolithic application design allows developers to access the core functions of the machines upon which the applications are deployed – a concept that must be reimagined when decoupling applications.
After we get to the point where we can think about our applications in this new decoupled way, we can think about deploying them in a more efficient way. As in, logical components are abstracted away from the application code. Then we are ready to talk about new deployment strategies.
Specifically for .NET applications, containerization can be complicated. The .NET framework upon which these applications rely is a part of the underlaying operating system. This is what containerization is trying to remove from your management plane. So, how can we best leverage .NET in a decoupled, or containerized, environment?
Using .NET in a Decoupled Environment
Luckily, Microsoft has already through of that and introduced .NET Core in 2016, allowing .NET applications to be deployed on non-Windows based systems. .NET Core is operating system agnostic, and allows for deployment of .NET Core application without needing to pay licensing fees to host these applications on Windows Server hardware.
.NET Core is designed to be the replacement to the existing versions of .NET for application development and deployment, and the next version of .NET Framework, version 5.0, will be based on .NET Core.
Continued development on .NET will require application developers to embrace the .NET Core framework, which also presents the perfect opportunity to define, or redefine, your cloud development strategy. For those of us still working with on-prem hardware and running applications on our own infrastructure, or in the cloud using a monolithic VM-based approach, the focus should be on cloud-native application development, so we can eventually lift these applications into a Public, Private or Hybrid Cloud environments.
If your organization already has a public cloud presence, specifically in Amazon’s AWS environment, there are several tools to help application developers make ready their .NET applications for deployment within the AWS Cloud. We have learned about several new tools from AWS that can assist with application migration; most recently, Amazon introduced a new migration tool called AWS App2Container, designed to help migrate .NET and Java applications to the AWS Cloud. This command line tool will inventory applications within your infrastructure, and “make ready” your applications for AWS container deployment.
According to AWS, “You simply select the application you want to containerize, and A2C packages the application artifact and identified dependencies into container images, configures the network ports, and generates the ECS task and Kubernetes pod definitions.”
Time will tell how well this tool works as we continually migrate workloads to AWS but their adoption of more and more .NET (and other platform) migration tools continues to grow, it is obvious that AWS is committed to running any workload that your business may need, and they are committed to helping your organization adopt cloud resources on AWS as easily and effectively as possible.