Adopting Container-First Solution Design

Adopting Docker as your application platform brings clear operational benefits. Containers are a much lighter unit of compute than virtual machines, but they still provide isolation, so you can run more workloads on less hardware. All these workloads have the same shape in Docker, so operations teams can manage .NET, Java, Go, and Node.js applications in the same way. The Docker platform also has benefits in application architecture. In this chapter, I'll look at how container-first solution design helps you add features to your application, with high quality and low risk.

I'll be returning to NerdDinner in this chapter, picking up from where I left off in Chapter 3, Developing Dockerized .NET Framework and .NET Core Applications. NerdDinner is a traditional .NET application, a monolithic design with tight coupling between components in which all communication is synchronous. There is no unit testing, integration testing, or end-to-end testing. NerdDinner is like millions of other .NET apps—it may have the features the users need, but it's difficult and dangerous to modify. Moving apps like this to Docker lets you take a different approach to modifying or adding features.

Two aspects of the Docker platform will change the way you think about solution design. First, networking, service discovery, and load balancing means you can distribute applications across multiple components, each running in containers that can be moved, scaled, and upgraded independently. Second, the expanding range of production-grade software available on Docker Hub and other registries means you can use off-the-shelf software for many generic services and manage them in the same way as your own components. This gives you the freedom to design better solutions, without infrastructure or technology restrictions.

In this chapter, I'll show you how to modernize a traditional .NET application, by adopting container-first design:

  • Design goals for NerdDinner
  • Running a message queue in Docker
  • Starting a multi-container solution
  • Modernizing legacy applications
  • Adding new features in containers
  • From monolith to distributed solution
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.136.226