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.
Becky Nagel is the vice president of Web & Digital Strategy for 1105's Converge360 Group, where she oversees the front-end Web team and deals with all aspects of digital strategy. She also serves as executive editor of the group's media Web sites, and you'll even find her byline on PureAI.com, the group's newest site for enterprise developers working with AI. She recently gave a talk at a leading technical publishers conference about how changes in Web technology may impact publishers' bottom lines. Follow her on twitter @beckynagel.