Preface

The three of us have been working with the Microsoft Azure Cloud platform since its first release in 2009. Our collective work with the platform is fairly broad—from building the platform and applications on the platform to creating the Azure development tools and experiences. In addition, we have enabled numerous customers and partners to build their large-scale cloud-native applications on Microsoft Azure. Over the years, we’ve been able to apply many lessons learned, ranging from designing applications for resiliency and scale all the way to DevOps best practices from our interactions with customers to Azure platform capabilities, Azure tooling, and technical documentation.

However, some questions and problems continued to persist. Just to name a few, how do we make sure that what works on my development machine also works in a cloud environment? How should we think about structuring the application so that we do not need to update everything if there is just a minor change to one component? How do we deploy updates as fast as possible without downtime? Finally, how do we handle configuration and environment changes?

In 2013, we began hearing more industry leaders and customers talk about Netflix, Amazon, and other businesses using microservices as an architectural approach to address those challenges. We did a head-to-head comparison with our most successful architectures (with both internal and external customers) and realized that we had already implemented many characteristics of microservices patterns—for example, designing Cloud Services applications based on workloads or the decomposition of an application into multiple services with the lifecycle of individual components/services as the motivation. Clearly, architectures were evolving in this direction, and when the term “microservices” became popular, many architects and developers realized theirs were already heading in that direction.

Enter Docker. Docker reduces deployment friction and the cost of placing a single service into a single host. This reduced deployment friction helped manage the deployment of the growing number of services common in a microservices architecture and helped standardize the deployment mechanisms in a polyglot environment. The programmable infrastructure offered by cloud environments, along with containers, paved the way for microservices architectures.

But having the right architectural approach and tool is just half the equation. Conceptually thinking about how to set up development and test environments, automate the DevOps flow, orchestrate and schedule Docker containers in a cluster of virtual machines, how to make the microservices discoverable by other services, and how to monitor the environments and the services, constitute the critical other half.

We, the author team, have spent the last two years working on microservices and Docker scenarios on either the Visual Studio tooling for the Docker engineering team, the Azure Service Fabric Compute engineering team, or working directly with our customers.

We wrote this book to share the hard-earned lessons we’ve learned and provide you with the tools you need to succeed building microservices with Docker on Azure.

..................Content has been hidden....................

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