Chapter 12. Deploying microservices
This chapter covers
- The four key deployment patterns, how they work, and their benefits and drawbacks:
- Language-specific packaging format
- Deploying a service as a VM
- Deploying a service as a container
- Serverless deployment
- Deploying services with Kubernetes
- Using a service mesh to separate deployment from release
- Deploying services with AWS Lambda
- Picking a deployment pattern
Mary and her team at FTGO are almost finished writing their first service. Although it’s not yet feature complete, it’s running on developer laptops and the Jenkins CI server. But that’s not good enough. Software has no value to FTGO until it’s running in production and available to users. FTGO needs to deploy their service into production.
Deployment is a combination of two interrelated concepts: process and architecture. The deployment process consists of the steps that must be performed by people—developers and operations—in order to get software into production. The deployment architecture defines the structure of the environment in which that software runs. Both aspects of deployment have changed radically since I first started developing Enterprise Java applications in the late 1990s. The manual process of developers throwing code over the wall to production has become highly automated. As figure 12.1 shows, physical production environments have been replaced by increasingly lightweight and ephemeral computing infrastructure.