News

Q&A with Alex Thissen: Developing .NET Solutions in Docker Ecosystem

Architecting and creating a .NET solution that uses Docker at its core comes with many questions, ranging from "How do you design a solution architecture that fits well with containers?" to "What changes in the .NET implementation from pre-Docker solutions with micro-services?"

In an upcoming presentation titled Architecting .NET Solutions in a Docker Ecosystem at next month's Live!360 conference in Orlando (Nov. 17-22), expert Alex Thissen will answer those questions and more.

With Docker and container technology playing more and more important roles in .NET development, we asked Thissen to share his thoughts on what excites him most about the .NET/Docker marriage, top tips, "gotchas" to look out for and more.

What excites you most about Docker and .NET coming together?
Docker is a widely adopted standard for containerization technology. It helps create an abstraction layer over hardware and promotes the use of immutable deployment artifacts.

"The fact that .NET Framework can now be run from inside a Windows container, as well .NET Core on both Linux and Windows containers, means that we are able to write widely portable code that can be hosted virtually everywhere. "

Alex Thissen, Architect, Lead Developer, and Mentor

The fact that .NET Framework can now be run from inside a Windows container, as well .NET Core on both Linux and Windows containers, means that we are able to write widely portable code that can be hosted virtually everywhere. The developers who are familiar with .NET should be able to quickly adopt to the new ecosystem and modern development practices surrounding container technology.

What limitations does the pairing still have that enterprise architects and developers should be aware of?
The pairing itself does not have much limitations. It does mean, though, that when running applications in a container environment, one should design solutions to play nice in an orchestrated cluster that is very cloud-native. This includes properly distributing your components and being resilient to the more volatile hosting that occurs.

What is your No. 1 top tip for architecting a Docker implementation in a .NET environment?
Get started with .NET Core and learn patterns for resiliency, scaling and health monitoring. Also, come to my session so you get some first-hand instructions and help on the differences and pitfalls of running in containers.

Any "gotchas" in the implementation stage that could catch someone off-guard?
When implementing .NET solutions to run under a cluster orchestrator inside containers, it is important to play nice and be aware of the characteristics of your new environment. This means that some things will need to be done in a different way. Additionally, you will need to learn and apply some new cloud design patterns, such as circuit breakers and retry patterns to adapt to your cluster surrounding. Leaving that out might lead to a less stable application, because it was not intrinsically designed and implemented to deal with other hosting and lifetimes.

How do microservices impact this kind of implementation?
Microservices have a natural fit with a container-based solution. The small autonomous parts of microservices are an ideal candidate for individual containers. While it is quite hard to properly find the boundaries of a microservice and create a good design of your domain, the implementation and hosting inside containers should be less of a problem.

Are there situations you've seen where enterprise development environments implement containers when maybe they shouldn't?
Big monolithic applications as often found in enterprises might not be a good fit for container-based hosting. The architecture of such applications often implies that they are not resilient in nature, cannot scale individual components and are not designed to be cloud-ready or cloud-native. Choosing to run such applications in a container environment will most likely surface the inherent design flaws of an application that was made without containers in mind.

Any other advice you'd like to share with our readers ahead of your session, "Architecting .NET Solutions in a Docker Ecosystem"?
Take your existing .NET knowledge, learn as much as possible about the characteristics of containers, Docker and Kubernetes and be willing to redesign and reimplement your applications to be ready for an era of containerization and modern application development practices.

About the Author

Becky Nagel is the former editorial director and director of Web for 1105 Media's Converge 360 group, and she now serves as vice president of AI for company, specializing in developing media, events and training for companies around AI and generative AI technology. She's the author of "ChatGPT Prompt 101 Guide for Business Users" and other popular AI resources with a real-world business perspective. She regularly speaks, writes and develops content around AI, generative AI and other business tech. Find her on X/Twitter @beckynagel.

comments powered by Disqus

Featured

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

Subscribe on YouTube